reviewed and updated by LB
authorDonghyun Lee <dh0922.lee@samsung.com>
Fri, 22 Jan 2016 07:35:37 +0000 (16:35 +0900)
committerDonghyun Lee <dh0922.lee@samsung.com>
Fri, 22 Jan 2016 07:36:19 +0000 (16:36 +0900)
Signed-off-by: Donghyun Lee <dh0922.lee@samsung.com>
267 files changed:
org.tizen.devtools/html/common_tools/connection_explorer.htm
org.tizen.devtools/html/common_tools/keyboard_shortcuts.htm
org.tizen.devtools/html/cover_page.htm
org.tizen.devtools/html/download/2_0_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/2_1_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/2_2_1_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/2_2_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/2_3_1_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/2_3_1_rev1_SDK_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/2_3_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/2_3_rev1_SDK_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/2_3_rev2_SDK_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/2_3_rev3_SDK_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/2_4_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/2_4_rev1_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/2_4_rev2_release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/advanced_configuration.htm [new file with mode: 0644]
org.tizen.devtools/html/download/download.htm [new file with mode: 0644]
org.tizen.devtools/html/download/extension_sdks.htm [new file with mode: 0644]
org.tizen.devtools/html/download/installing_sdk.htm [new file with mode: 0644]
org.tizen.devtools/html/download/release_notes.htm [new file with mode: 0644]
org.tizen.devtools/html/download/sdk_hardware_accelerated_execution_manager.htm [new file with mode: 0644]
org.tizen.devtools/html/download/sdk_prerequisites.htm [new file with mode: 0644]
org.tizen.devtools/html/download/sdk_troubleshooting.htm [new file with mode: 0644]
org.tizen.devtools/html/download/uninstalling_sdk.htm [new file with mode: 0644]
org.tizen.devtools/html/download/updating_sdk.htm [new file with mode: 0644]
org.tizen.devtools/html/extension_sdk/extension_sdk.htm [new file with mode: 0644]
org.tizen.devtools/html/extension_sdk/in_app_purchase_ programming_guide.htm [new file with mode: 0644]
org.tizen.devtools/html/images/Thumbs.db [deleted file]
org.tizen.devtools/html/images/iap_workflow_countrylist.png [new file with mode: 0644]
org.tizen.devtools/html/images/iap_workflow_itemlist.png [new file with mode: 0644]
org.tizen.devtools/html/images/iap_workflow_purchase.png [new file with mode: 0644]
org.tizen.devtools/html/images/java_crash.png [new file with mode: 0644]
org.tizen.devtools/html/images/java_installation.png [new file with mode: 0644]
org.tizen.devtools/html/images/platform_create.png [new file with mode: 0644]
org.tizen.devtools/html/images/platform_gbs.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-cmd.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-mac1.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-mac2.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-mac3.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-mac4.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-mac5.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-mac6.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-mac7.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-win1.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-win2.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-win3.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-win4.png [new file with mode: 0644]
org.tizen.devtools/html/images/sdk2_0-haxm-win5.png [new file with mode: 0644]
org.tizen.devtools/html/images/uac.png [new file with mode: 0644]
org.tizen.devtools/html/images/unit_test_abnormal.png [new file with mode: 0644]
org.tizen.devtools/html/images/unit_test_create.png [new file with mode: 0644]
org.tizen.devtools/html/images/unit_test_disable.png [new file with mode: 0644]
org.tizen.devtools/html/images/unit_test_explorer.png [new file with mode: 0644]
org.tizen.devtools/html/images/unit_test_fail.png [new file with mode: 0644]
org.tizen.devtools/html/images/unit_test_result_view.png [new file with mode: 0644]
org.tizen.devtools/html/images/unit_test_start.png [new file with mode: 0644]
org.tizen.devtools/html/images/unit_test_success.png [new file with mode: 0644]
org.tizen.devtools/html/images/unit_test_terminated.png [new file with mode: 0644]
org.tizen.devtools/html/images/unit_test_timeout.png [new file with mode: 0644]
org.tizen.devtools/html/index.htm
org.tizen.devtools/html/native_tools/api_privilege_checker_n.htm
org.tizen.devtools/html/native_tools/command_line_interface_n.htm
org.tizen.devtools/html/native_tools/enventor_n.htm
org.tizen.devtools/html/native_tools/manifest_text_editor_n.htm
org.tizen.devtools/html/native_tools/t_trace_n.htm
org.tizen.devtools/html/native_tools/tools_n.htm
org.tizen.devtools/html/native_tools/unit_test_n.htm [new file with mode: 0644]
org.tizen.devtools/html/platform/platform_dev.htm [new file with mode: 0644]
org.tizen.devtools/html/platform/platform_ide.htm [new file with mode: 0644]
org.tizen.devtools/index.xml
org.tizen.gettingstarted/html/images/hello_wearable.png
org.tizen.gettingstarted/html/images/hello_wearable_emulator.png
org.tizen.gettingstarted/html/native/details/tizen_apis_n.htm
org.tizen.gettingstarted/html/native/process/debugging_app_n.htm
org.tizen.gettingstarted/html/native/process/setting_properties_n.htm
org.tizen.gettingstarted/html/web/process/app_dev_process_w.htm
org.tizen.gettingstarted/html/web/process/creating_app_project_w.htm
org.tizen.guides/html/images/2d_front_back_face.png [new file with mode: 0644]
org.tizen.guides/html/images/adv_render_class.png [new file with mode: 0644]
org.tizen.guides/html/images/adv_render_cube.png [new file with mode: 0644]
org.tizen.guides/html/images/adv_render_cube_composition.png [new file with mode: 0644]
org.tizen.guides/html/images/adv_render_framebuffer.png [new file with mode: 0644]
org.tizen.guides/html/images/adv_render_normal_map.png [new file with mode: 0644]
org.tizen.guides/html/images/adv_render_tangent1.png [new file with mode: 0644]
org.tizen.guides/html/images/adv_render_tangent2.png [new file with mode: 0644]
org.tizen.guides/html/images/coord_space.png [new file with mode: 0644]
org.tizen.guides/html/images/determinant.png [new file with mode: 0644]
org.tizen.guides/html/images/fragment_diffuse.png [new file with mode: 0644]
org.tizen.guides/html/images/fragment_diffuse_color.png [new file with mode: 0644]
org.tizen.guides/html/images/fragment_output.png [new file with mode: 0644]
org.tizen.guides/html/images/front_back_face.png [new file with mode: 0644]
org.tizen.guides/html/images/gpu_stages.png [new file with mode: 0644]
org.tizen.guides/html/images/input_output_vertex.png [new file with mode: 0644]
org.tizen.guides/html/images/interpolated_normals.png [new file with mode: 0644]
org.tizen.guides/html/images/low_res_arrays.png [new file with mode: 0644]
org.tizen.guides/html/images/low_res_sphere.png [new file with mode: 0644]
org.tizen.guides/html/images/obj_fractions.png [new file with mode: 0644]
org.tizen.guides/html/images/opengl_es_efl.png [new file with mode: 0644]
org.tizen.guides/html/images/output_depth_buffer1.png [new file with mode: 0644]
org.tizen.guides/html/images/output_depth_buffer2.png [new file with mode: 0644]
org.tizen.guides/html/images/projection_matrix.png [new file with mode: 0644]
org.tizen.guides/html/images/projection_transform.png [new file with mode: 0644]
org.tizen.guides/html/images/sphere_surface.png [new file with mode: 0644]
org.tizen.guides/html/images/teapot_transformation.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_bilinear.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_magnification.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_minification.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_mipmap1.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_mipmap2.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_mipmap_levels.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_nearest.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_normalise.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_position1.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_position2.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_position3.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_problem.png [new file with mode: 0644]
org.tizen.guides/html/images/texturing_texel.png [new file with mode: 0644]
org.tizen.guides/html/images/triangle_color.png [new file with mode: 0644]
org.tizen.guides/html/images/triangle_fragments.png [new file with mode: 0644]
org.tizen.guides/html/images/vertex_array.png [new file with mode: 0644]
org.tizen.guides/html/images/vertex_index_array.png [new file with mode: 0644]
org.tizen.guides/html/images/vertex_normals.png [new file with mode: 0644]
org.tizen.guides/html/images/vertex_shader_spaces.png [new file with mode: 0644]
org.tizen.guides/html/images/vertex_structure_array.png [new file with mode: 0644]
org.tizen.guides/html/images/view_frustum.png [new file with mode: 0644]
org.tizen.guides/html/images/view_matrix.png [new file with mode: 0644]
org.tizen.guides/html/images/view_space.png [new file with mode: 0644]
org.tizen.guides/html/images/viewport.png [new file with mode: 0644]
org.tizen.guides/html/images/widget_homescreen.png
org.tizen.guides/html/index.htm
org.tizen.guides/html/native/account/sync_manager_n.htm
org.tizen.guides/html/native/app/appcontrol_n.htm
org.tizen.guides/html/native/app/application_n.htm
org.tizen.guides/html/native/app/badge_n.htm
org.tizen.guides/html/native/app/bundle_n.htm
org.tizen.guides/html/native/app/data_control_n.htm
org.tizen.guides/html/native/app/event_n.htm
org.tizen.guides/html/native/app/message_port_n.htm
org.tizen.guides/html/native/app/notification_n.htm
org.tizen.guides/html/native/app/package_n.htm
org.tizen.guides/html/native/app/service_app_n.htm
org.tizen.guides/html/native/app/shortcut_n.htm
org.tizen.guides/html/native/app/watch_n.htm
org.tizen.guides/html/native/app/widget_n.htm
org.tizen.guides/html/native/base/i18n_n.htm
org.tizen.guides/html/native/content/mime_type_n.htm
org.tizen.guides/html/native/graphics/adv_performance_n.htm [new file with mode: 0644]
org.tizen.guides/html/native/graphics/adv_rendering_n.htm [new file with mode: 0644]
org.tizen.guides/html/native/graphics/assembly_n.htm [new file with mode: 0644]
org.tizen.guides/html/native/graphics/creating_opengles_n.htm [new file with mode: 0644]
org.tizen.guides/html/native/graphics/fragment_shader_n.htm [new file with mode: 0644]
org.tizen.guides/html/native/graphics/interactive_ui_n.htm [new file with mode: 0644]
org.tizen.guides/html/native/graphics/opengles_n.htm
org.tizen.guides/html/native/graphics/output_merging_n.htm [new file with mode: 0644]
org.tizen.guides/html/native/graphics/polygon_mesh_n.htm [new file with mode: 0644]
org.tizen.guides/html/native/graphics/texturing_n.htm [new file with mode: 0644]
org.tizen.guides/html/native/graphics/vertex_shader_n.htm [new file with mode: 0644]
org.tizen.guides/html/native/multimedia/media_keys_n.htm [moved from org.tizen.guides/html/native/system/media_keys_n.htm with 96% similarity]
org.tizen.guides/html/native/multimedia/multimedia_guide_n.htm
org.tizen.guides/html/native/network/bluetooth_n.htm
org.tizen.guides/html/native/system/feedback_n.htm
org.tizen.guides/html/native/system/storage_n.htm
org.tizen.guides/html/native/system/system_guide_n.htm
org.tizen.guides/html/web/tizen/multimedia/media_controller_w.htm
org.tizen.guides/html/web/tizen/multimedia/multimedia_guide_w.htm
org.tizen.guides/html/web/tizen/social/contact_w.htm
org.tizen.guides/html/web/tizen/ui/inputdevice_w.htm
org.tizen.guides/html/web/tizen/ui/ui_guide_w.htm
org.tizen.guides/html/web/w3c/graphics/svg_w.htm
org.tizen.guides/html/web/w3c/media/getusermedia_w.htm
org.tizen.guides/html/web/w3c/media/video_audio_w.htm
org.tizen.guides/index.xml
org.tizen.sampledescriptions/html/images/files_sharing_main_view.png [moved from org.tizen.sampledescriptions/html/images/files-sharing-main_view.png with 100% similarity]
org.tizen.sampledescriptions/html/images/files_sharing_sequence.png
org.tizen.sampledescriptions/html/images/files_sharing_server_help_text.png [moved from org.tizen.sampledescriptions/html/images/files_sharing_server-help_text.png with 100% similarity]
org.tizen.sampledescriptions/html/images/stop_watch_0.png
org.tizen.sampledescriptions/html/images/stream_player_application_view.png [new file with mode: 0644]
org.tizen.sampledescriptions/html/images/stream_player_application_workflow.png [new file with mode: 0644]
org.tizen.sampledescriptions/html/images/stream_player_display_section.png [new file with mode: 0644]
org.tizen.sampledescriptions/html/images/stream_player_layout_structure.png [new file with mode: 0644]
org.tizen.sampledescriptions/html/images/stream_player_options_section.png [new file with mode: 0644]
org.tizen.sampledescriptions/html/images/stream_player_playback_options_section.png [new file with mode: 0644]
org.tizen.sampledescriptions/html/images/stream_player_state_changes.png [new file with mode: 0644]
org.tizen.sampledescriptions/html/images/stream_player_toolbar_section.png [new file with mode: 0644]
org.tizen.sampledescriptions/html/index.htm
org.tizen.sampledescriptions/html/mobile_n/alarm_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/bundle_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/context_history_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/drag_and_drop_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/file_manager_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/lbs_maps_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/lockscreen_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/oauth2_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/piano_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/scheduler_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/scroller_index_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/service_adaptor_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/stream-player-mn.html [deleted file]
org.tizen.sampledescriptions/html/mobile_n/stream_player_sd_mn.htm [new file with mode: 0644]
org.tizen.sampledescriptions/html/mobile_n/syncadapterapp_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_n/ui_idler_sd_mn.htm
org.tizen.sampledescriptions/html/mobile_w/exerciseplanner_mw.htm
org.tizen.sampledescriptions/html/wearable_n/music_sd_wn.htm [deleted file]
org.tizen.sampledescriptions/index.xml
org.tizen.tutorials/html/images/watchface_project.png
org.tizen.tutorials/html/index.htm
org.tizen.tutorials/html/native/account/sync_manager_tutorial_n.htm
org.tizen.tutorials/html/native/app_framework/alarm_tutorial_n.htm
org.tizen.tutorials/html/native/app_framework/notification_tutorial_n.htm
org.tizen.tutorials/html/native/app_framework/shortcut_tutorial_n.htm
org.tizen.tutorials/html/native/base/i18n_tutorial_n.htm
org.tizen.tutorials/html/native/graphics/cairo_tutorial_n.htm
org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm
org.tizen.tutorials/html/native/graphics/tbm_tutorial_n.htm
org.tizen.tutorials/html/native/location/geofence_tutorial_n.htm
org.tizen.tutorials/html/native/location/location_tutorial_n.htm
org.tizen.tutorials/html/native/location/location_tutorials_n.htm
org.tizen.tutorials/html/native/messaging/push_tutorial_n.htm
org.tizen.tutorials/html/native/multimedia/media_key_tutorial_n.htm [moved from org.tizen.tutorials/html/native/system/media_key_tutorial_n.htm with 99% similarity]
org.tizen.tutorials/html/native/multimedia/multimedia_tutorials_n.htm
org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm
org.tizen.tutorials/html/native/social/contact_tutorial_n.htm
org.tizen.tutorials/html/native/system/device_tutorial_n.htm
org.tizen.tutorials/html/native/system/feedback_tutorial_n.htm
org.tizen.tutorials/html/native/system/sensor_tutorial_n.htm
org.tizen.tutorials/html/native/system/storage_tutorial_n.htm
org.tizen.tutorials/html/native/system/system_tutorials_n.htm
org.tizen.tutorials/html/web/tizen/communication/task_bluetoothchat_w.htm
org.tizen.tutorials/html/web/tizen/communication/task_chatter_w.htm
org.tizen.tutorials/html/web/tizen/communication/task_contactsexchanger_w.htm
org.tizen.tutorials/html/web/tizen/multimedia/media_controller_tutorial_w.htm
org.tizen.tutorials/html/web/tizen/multimedia/multimedia_tutorials_w.htm
org.tizen.tutorials/html/web/tizen/social/task_eventmanager_w.htm
org.tizen.tutorials/html/web/tizen/system/task_systeminfo_w.htm
org.tizen.tutorials/html/web/tizen/ui/inputdevice_tutorial_w.htm
org.tizen.tutorials/html/web/tizen/ui/ui_tutorials_w.htm
org.tizen.tutorials/html/web/w3c/communication/xmlhttprequest_tutorial_w.htm
org.tizen.tutorials/html/web/w3c/device/battery_tutorial_w.htm
org.tizen.tutorials/html/web/w3c/storage/indexdb_tutorial_w.htm
org.tizen.tutorials/index.xml
org.tizen.ui.practices/html/images/input_panel_DATETIME.png
org.tizen.ui.practices/html/images/input_panel_EMAIL.png
org.tizen.ui.practices/html/images/input_panel_EMOTICON.png
org.tizen.ui.practices/html/images/input_panel_HEX.png
org.tizen.ui.practices/html/images/input_panel_INVALID.png
org.tizen.ui.practices/html/images/input_panel_IP.png
org.tizen.ui.practices/html/images/input_panel_MONTH.png
org.tizen.ui.practices/html/images/input_panel_NOMAL.png
org.tizen.ui.practices/html/images/input_panel_NUMBER.png
org.tizen.ui.practices/html/images/input_panel_NUMBERONLY.png
org.tizen.ui.practices/html/images/input_panel_PASSWORD.png
org.tizen.ui.practices/html/images/input_panel_PHONENUMBER.png
org.tizen.ui.practices/html/images/input_panel_TERMINAL.png
org.tizen.ui.practices/html/images/input_panel_URL.png
org.tizen.ui.practices/html/images/return_key_JOIN.png
org.tizen.ui.practices/html/images/return_key_SEND.png
org.tizen.ui.practices/html/index.htm
org.tizen.ui.practices/html/native/efl/component_circ_scroller_wn.htm
org.tizen.ui.practices/html/native/efl/component_toolbar_mn.htm
org.tizen.ui.practices/html/native/efl/edc_positioning_n.htm
org.tizen.ui.practices/html/native/efl/notification_window_n.htm
org.tizen.ui.practices/html/native/efl/panes_tutorial_mn.htm
org.tizen.ui.practices/html/native/efl/tools_n.htm
org.tizen.ui.practices/html/web/w3c/clipboard_mw.htm
org.tizen.ui.practices/index.xml

index 03e3c6e..81de1bf 100644 (file)
 <p>To connect to the remote device:</p>\r
 <ol>\r
 <li>On the Quick Access toolbar of the <strong>Connection Explorer</strong> view, click the <strong>Remote Device Manager</strong> icon.</li>\r
-<li>Click <strong>Scan</strong>.</li>\r
-<li>If a remote device exists on the host system's subnet, the information of the remote device is registered to the <strong>Remote Device Manager</strong> automatically.</p></li>\r
-<li>To add the information of the remote device, click <strong>New</strong>.</li>\r
-<li>In the <strong>Add Device</strong> dialog box, enter the <strong>Name</strong>, <strong>IP</strong>, and <strong>Port</strong> of the remote device.</li>\r
+<li>Click <strong>Scan</strong>.\r
+<ul>\r
+<li>If a remote device exists on the host system&#39;s subnet, the information of the remote device is registered to the <strong>Remote Device Manager</strong> automatically.</li>\r
+\r
+<li>To add the information of the remote device, click <strong>New</strong>.\r
+<p>In the <strong>Add Device</strong> dialog box, enter the <strong>Name</strong>, <strong>IP</strong>, and <strong>Port</strong> of the remote device.</p></li>\r
+</ul>\r
+</li>\r
 <li>In the <strong>Remote Device Manager</strong>, select the remote device you entered.</li>\r
 <li>Click <strong>Connect</strong>.</li>\r
 </ol>\r
index 65da6cb..6b9e0bf 100644 (file)
@@ -61,7 +61,7 @@
        <tr>\r
                <th>Command</th>\r
                <th>Support</th>\r
-               <th>Keyboard Shortcut</th>\r
+               <th>Keyboard shortcut</th>\r
        </tr>\r
        <tr>\r
                <td>Delete</td>\r
@@ -95,7 +95,7 @@
        <tr>\r
                <th>Command</th>\r
                <th>Support</th>\r
-               <th>Keyboard Shortcut</th>\r
+               <th>Keyboard shortcut</th>\r
        </tr>\r
        <tr>\r
                <td rowspan="2">Build all</td>\r
        <tr>\r
                <th>Command</th>\r
                <th>Support</th>\r
-               <th>Keyboard Shortcut</th>\r
+               <th>Keyboard shortcut</th>\r
        </tr>\r
        <tr>\r
                <td>Step into</td>\r
        <tr>\r
                <th>Command</th>\r
                <th>Support</th>\r
-               <th>Keyboard Shortcut</th>\r
+               <th>Keyboard shortcut</th>\r
        </tr>\r
        <tr>\r
                <td>Content assist</td>\r
        <tr>\r
                <th>Command</th>\r
                <th>Support</th>\r
-               <th>Keyboard Shortcut</th>\r
+               <th>Keyboard shortcut</th>\r
        </tr>\r
        <tr>\r
                <td rowspan="2">New project and file using the Wizard</td>\r
        <tr>\r
                <th>Command</th>\r
                <th>Support</th>\r
-               <th>Keyboard Shortcut</th>\r
+               <th>Keyboard shortcut</th>\r
        </tr>\r
        <tr>\r
                <td rowspan="2">Find and replace</td>\r
        <tr>\r
                <th>Command</th>\r
                <th>Support</th>\r
-               <th>Keyboard Shortcut</th>\r
+               <th>Keyboard shortcut</th>\r
        </tr>\r
        <tr>\r
                <td rowspan="2">Rename-refactoring</td>\r
        <tr>\r
                <th>Command</th>\r
                <th>Support</th>\r
-               <th>Keyboard Shortcut</th>\r
+               <th>Keyboard shortcut</th>\r
        </tr>\r
        <tr>\r
                <td rowspan="2">Insert snippet</td>\r
                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> </td>\r
                <td>Ctrl+Shift+I</td>\r
        </tr>\r
-       <tr>\r
+       <tr>    \r
                <td><img alt="mac" src="../images/mac.png" /></td>\r
                <td><img alt="command" src="../images/command.png" />+Shift+I</td>\r
        </tr>\r
        <tr>\r
                <th colspan="2">Command</th>\r
                <th>Support</th>\r
-               <th>Keyboard Shortcut</th>\r
+               <th>Keyboard shortcut</th>\r
        </tr>\r
        <tr>\r
                <td rowspan="8">HTML editor</td>\r
                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> </td>\r
                <td>Ctrl+[</td>\r
        </tr>\r
-       <tr>\r
+       <tr>            \r
                <td><img alt="mac" src="../images/mac.png" /></td>\r
                <td><img alt="command" src="../images/command.png" />+[</td>\r
        </tr>\r
                <tr>\r
                <th>Command</th>\r
                <th>Support</th>\r
-               <th>Keyboard Shortcut</th>\r
+               <th>Keyboard shortcut</th>\r
        </tr>\r
        <tr>\r
                <td>About Tizen Dynamic Analyzer</td>\r
        <tr>\r
                <td><img alt="mac" src="../images/mac.png" /></td>\r
                <td><img alt="command" src="../images/command.png" />+5</td>\r
-       </tr>\r
+       </tr>   \r
        <tr>\r
                <td rowspan="2">Select the Range tab</td>\r
                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> </td>\r
                <tr>\r
                <th>Command</th>\r
                <th>Support</th>\r
-               <th>Keyboard Shortcut</th>\r
+               <th>Keyboard shortcut</th>\r
        </tr>\r
        <tr>\r
                <td rowspan="2">Delete virtual machine</td>\r
         <tr>\r
                 <th>Command</th>\r
                 <th>Support</th>\r
-                <th>Keyboard Shortcut</th>\r
+                <th>Keyboard shortcut</th>\r
         </tr>\r
-        <tr>\r
+       <tr>\r
                 <td>Detailed Info</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+F1</td>\r
         </tr>\r
-        <tr>\r
+       <tr>\r
                 <td>Always on Top</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+T</td>\r
         </tr>\r
-        <tr>\r
+       <tr>\r
                 <td>Rotate next</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+Right Arrow</td>\r
         </tr>\r
                <tr>\r
                                <td>Rotate prev</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
-                <td>Ctrl+Shift+Left Arrow</td>\r
-        </tr>\r
-        <tr>\r
+                               <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
+                               <td>Ctrl+Shift+Left Arrow</td>\r
+               </tr>\r
+       <tr>\r
                 <td>Scale next</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+Down Arrow</td>\r
         </tr>\r
-        <tr>\r
+       <tr>\r
                 <td>Scale prev</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+Up Arrow</td>\r
         </tr>\r
                <tr>\r
                 <td>Controller</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+K</td>\r
         </tr>\r
-        <tr>\r
+       <tr>\r
                 <td>Screen Shot</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+F12</td>\r
         </tr>\r
-        <tr>\r
+       <tr>\r
                 <td>Shell</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+S</td>\r
         </tr>\r
-        <tr>\r
+       <tr>\r
                                <td>Control Panel</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+P</td>\r
         </tr>\r
-        <tr>\r
+         <tr>\r
                 <td>Close</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+F4</td>\r
         </tr>\r
-        <tr>\r
+       <tr>\r
                 <td>Menu</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+F6</td>\r
         </tr>\r
-        <tr>\r
+       <tr>\r
                                <td>Home</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+F5</td>\r
         </tr>\r
         <tr>\r
                 <td>Back</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Esc</td>\r
         </tr>\r
         <tr>\r
                 <td>Power</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+F7</td>\r
         </tr>\r
-        <tr>\r
+       <tr>\r
                 <td>Volume +</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+]</td>\r
         </tr>\r
-        <tr>\r
+       <tr>\r
                 <td>Volume -</td>\r
-                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /><img alt="mac" src="../images/mac.png" /></td>\r
+                <td><img alt="ubuntu" src="../images/ubuntu.png" /> <img alt="windows" src="../images/windows.png" /> <img alt="mac" src="../images/mac.png" /></td>\r
                 <td>Ctrl+Shift+[</td>\r
         </tr>\r
 </tbody>\r
         <tr>\r
                 <th>Command</th>\r
                 <th>Support</th>\r
-                <th>Keyboard Shortcut</th>\r
+                <th>Keyboard shortcut</th>\r
         </tr>\r
                <tr>\r
                 <th colspan="3">Common</th>\r
         <tr>\r
                 <th>Command</th>\r
                 <th>Support</th>\r
-                <th>Keyboard Shortcut</th>\r
+                <th>Keyboard shortcut</th>\r
         </tr>\r
 <tr> \r
 <td><p>Close the menu</p></td> \r
index 7c3b1ee..9b5b8e5 100644 (file)
        
  <h1 style="text-align:left;"> <font color="#000000">Tizen</font><br/>
  <font size="11">Tools</font></h1>
-<p>To help you develop your applications, Tizen provides the Tizen SDK (software development kit) and related tools.</p>
+<p>To help you develop your applications, Tizen provides the Tizen SDK (software development kit) and related tools:</p>
+
+<ul>
+       <li><a href="download/download.htm">Download</a>
+       <p>Download and install the SDK, manage its configurations, and read the release notes of different versions.</p>
+       </li>
+       <li><a href="common_tools/tools_common.htm">Common Tools</a>
+       <p>Learn about tools common to both Web and native application development.</p>
+       </li>
+       <li><a href="web_tools/tools_w.htm">Web Tools</a>
+       <p>Learn about available Web application development tools.</p>
+       </li>
+       <li><a href="native_tools/tools_n.htm">Native Tools</a>
+       <p>Learn about available native application development tools.</p>
+       </li>   
+       <li><a href="extension_sdk/extension_sdk.htm">Extension SDK</a>
+       <p>Gather information about the Extension SDK: In-App Purchase.</p>
+       </li>
+       <li><a href="platform/platform_dev.htm">Platform Development</a>
+       <p>Develop preloaded Tizen applications, platform libraries, and device drivers using the Tizen platform IDE.</p>
+       </li>
+</ul>
+
 
 <p>The Tizen SDK consists of the following:</p>
 <ul>
diff --git a/org.tizen.devtools/html/download/2_0_release_notes.htm b/org.tizen.devtools/html/download/2_0_release_notes.htm
new file mode 100644 (file)
index 0000000..32fe84f
--- /dev/null
@@ -0,0 +1,1287 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.0 Release Notes</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#intro">Introduction</a></li>
+            <li><a href="#platform">Tizen Platform</a></li>
+                       <li><a href="#ide_tools">IDE and Tools</a></li>
+                       <li><a href="#next">Next Release</a></li>
+
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Tizen 2.0 Release Notes</h1>
+
+<ul><li>Release Date: February 18, 2013</li></ul>
+
+<h2 id="intro">Introduction</h2> 
+
+<p>Welcome to the Tizen SDK.</p>
+<p>Tizen is an open source, standards-based software platform supported by leading mobile operators, device manufacturers, and chip suppliers for multiple device categories, including smartphones, tablets, netbooks, in-vehicle infotainment devices, and smart TVs.</p>
+<p>The Tizen Platform consists of the web framework (APIs), native framework (APIs), and core system.</p>
+<p>The Tizen Software Development Kit (SDK) is a comprehensive set of tools for developing Web applications, native applications, and the platform component for Tizen. The SDK contains an install manager, IDE, tools, documents, samples, and a platform image.</p>
+
+<h2 id="platform">Tizen Platform</h2>
+
+<h3>Web Framework</h3>
+
+<h4>New Features</h4>
+
+<ul><li>HTML5 / W3C
+<ul><li>Device
+<ul><li>The Network Information API
+<ul><li>This API provides an interface for Web applications to access the underlying connection information of the device.</li>
+</ul></li>
+</ul></li>
+<li>Media
+<ul><li>Web Audio API (Partial)
+<ul><li>This high-level JavaScript API is used to process and synthesize audio in Web applications.</li>
+</ul></li>
+<li>HTML Media Capture
+<ul><li>This HTML form extension enables users to access a device&#39;s media capture mechanism, such as a camera or microphone, from a file upload control.</li>
+</ul></li>
+</ul></li>
+<li>UI
+<ul><li>Clipboard API and events
+<ul><li>This API is used in clipboard operations such as copy, cut, and paste in Web applications.</li>
+</ul></li>
+<li>HTML Drag and drop
+<ul><li>This event-based drag-and-drop mechanism is defined in the HTML5 specification.</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Web Runtime
+<ul><li>External storage installation capability for Web applications</li>
+<li>New configuration extension:
+<ul><li>&lt;tizen:privilege&gt;: This tag is used to specify API permissions. (The &lt;feature&gt; tag is now be used to specify the required platform or hardware features.) </li>
+</ul></li>
+<li>NPRuntime plug-in support in Web applications:
+<ul><li>In the 2.0 release, only the 3rd party libraries supported as public APIs, such as eglibc, can be used in NPRuntime plug-ins.</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h4>Changed Features</h4>
+
+<ul><li>For Tizen Web API change details, see <a href="http://developer.tizen.org/downloads/sdk/2.0-api-change-notes">Tizen API Change Notes</a>.</li>
+<li>HTML5/W3C
+<ul><li>Reference documentation divided into separate documents in accordance with specification documents:
+<ul><li>HTML5 2D Canvas to HTML5 2D Canvas element and HTML Canvas 2D Context</li>
+</ul></li>
+<li>Specification returned in this release:
+<ul><li>Vibration API
+<ul><li>This API provides access to the vibration mechanism of the hosting device.</li>
+</ul></li>
+</ul></li>
+<li>Specification version update:
+<p><strong>Note</strong>: If you have developed Web applications based on the Tizen 2.0 alpha version of the following specifications, you MUST check whether the corresponding features are available in the updated version of the specifications referred to in this release.</p>
+<ul><li>Dom, forms, and styles
+<ul><li>Selectors API Level 1</li>
+<li>CSS3 Backgrounds and Borders Module Level 3</li>
+<li>CSS3 Flexible Box Layout Module</li>
+<li>CSS Text Module Level 3 (Partial)</li>
+<li>CSS3 Basic User Interface Module Level 3 (CSS3 UI)</li>
+<li>CSS Fonts Module Level 3 (Partial)</li>
+<li>WOFF File Format 1.0</li>
+<li>CSS3 Media Queries (Partial)</li>
+</ul></li>
+<li>Device
+<ul><li>DeviceOrientation Event Specification (Partial)</li>
+<li>Battery Status API</li>
+<li>HTML5 Browser State</li>
+<li>The Screen Orientation API</li>
+</ul></li>
+<li>Graphics
+<ul><li>HTML5 Canvas Element</li>
+<li>HTML Canvas 2D Context</li>
+</ul></li>
+<li>Communication
+<ul><li>The WebSocket API</li>
+<li>HTML5 Web Messaging</li>
+</ul></li>
+<li>Security
+<ul><li>Cross-Origin Resource Sharing</li>
+</ul></li>
+<li>Performance and optimization
+<ul><li>Web Workers (partial)</li>
+<li>Page Visibility</li>
+</ul></li>
+<li>Location
+<ul><li>Geolocation API Specification</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Web Runtime
+<ul><li>The partially supported W3C Widget URI scheme (to be replaced by a new URI scheme in the 2.1 release) has been depracated.</li>
+</ul></li>
+<li>Web UI Framework
+<ul><li>jQuery and jQuery Mobile (jQM) versions are upgraded to jQuery 1.8.2 and jQM 1.2.0.</li>
+<li>Theme
+<ul><li>The &quot;tizen-black&quot; theme has been removed.</li>
+<li>The &quot;tizen-white&quot; theme has been changed to a new UX style.</li>
+</ul></li>
+<li>Widget
+<ul><li>The automatic footer generation feature has been removed. (&lt;div data-role=&quot;footer&quot;/;&gt; needs to be specified.)</li>
+<li>The optionheader, nocontents, controlgroup, pagecontrol, colorselector, dayselector widgets are removed.</li>
+<li>The image slider widget has been renamed as &quot;gallery&quot;.</li>
+<li>The shortcut scroll widget has been renamed as &quot;fast scroll&quot;.</li>
+<li>The swipe list widget has been refactored to a new style.</li>
+<li>The control bar widget has been refactored to &quot;tab bar&quot;.</li>
+<li>The multi-button entry widget has been refactored to &quot;token text area&quot;.</li>
+<li>The context popup has been replaced with &quot;popup&quot; as in jQM 1.2.0.</li>
+<li>The toggle switch has been replaced with &quot;flip toggle switch&quot; as in jQM 1.2.0.</li>
+<li>The popup has been replaced with &quot;popup with data-position-to=&#39;window&#39; attribute&quot; as in jQM 1.2.0.</li>
+<li>The expandable list has been replaced with &quot;collapsible list&quot; as in jQM 1.2.0.</li>
+<li>The auto divider has been replaced with &quot;auto-divider&quot; as in jQM 1.2.0.</li>
+<li>The search bar supports additional data-* attributes.</li>
+</ul></li>
+<li>Viewport meta tag
+<ul><li>The &quot;data-framework-viewport-scale&quot; attribute of the web-ui-fw script tag has been changed to &quot;data-frame-viewport-width = &#39;device-width&#39; | &#39;screen-width&#39; | &#39;[number]&#39;&quot;.</li>
+</ul></li>
+</ul></li>
+<li>Tizen Web APIs
+<ul><li>Privilege
+<ul><li>The feature for API access has been replaced with &quot;privilege&quot;. The changed names are included in the API specification.</li>
+</ul></li>
+<li>WebAPIException
+<ul><li>The WebAPIException interface is used by APIs to throw errors synchronously. The WebAPIError interface is only used for asynchronous error handling.</li>
+</ul></li>
+<li>ApplicationControl
+<ul><li>The ApplicationService interface has been renamed as ApplicationControl. Therefore, any APIs using ApplicationControl, such as Alarm, Application, and Notification, also have been changed.</li>
+</ul></li>
+<li>Account
+<ul><li>Placeholders have been deleted.</li>
+</ul></li>
+<li>Location-based services
+<ul><li>LBS and Geocoder APIs have been deleted.</li>
+</ul></li>
+<li>Application
+<ul><li>This API has been recategorized according to usage.</li>
+<li>The kill() method is no longer public.</li>
+</ul></li>
+<li>Call history
+<ul><li>The call history functionality is separated from the Call API.</li>
+<li>The Call API has been deleted.</li>
+</ul></li>
+<li>Download
+<ul><li>A number of helper APIs has been added.</li>
+</ul></li>
+<li>Power
+<ul><li>This API has been refactored for better usability.</li>
+</ul></li>
+<li>Contact
+<ul><li>The &quot;person&quot; concept that is used to group a number of contacts has been added.</li>
+</ul></li>
+<li>Content
+<ul><li>The Media Content API has been refactored to Content to cover non-media content.</li>
+</ul></li>
+<li>System information
+<ul><li>A functionality to retrieve device capabilities has been added.</li>
+<li>The SystemInfoPower property has been renamed as SystemInfoBattery.</li>
+<li>The SystemInfoBuild property has been added.</li>
+<li>The SystemInfoDevice property has been deleted.</li>
+<li>The SystemInfoEthernetNetwork property has been deleted.</li>
+</ul></li>
+<li>System setting
+<ul><li>Setting system-wide values has been enabled.</li>
+</ul></li>
+<li>Unsupported APIs, attributes, and parameters have been deleted.</li>
+</ul></li></ul>
+
+<h4>Known Issues</h4>
+
+<ul><li>W3C / HTML5
+<ul><li>Touch events
+<ul><li>If you touch and hold on the screen, an abnormal touch cancel event occurs.</li>
+</ul></li>
+</ul></li>
+<li>Web UI Framework
+<ul><li>The screen blinks if either transit pages or a pop-up window uses Web UI framework.</li>
+</ul></li>
+</ul>
+
+<h3>Native Framework</h3>
+
+<p>The Tizen native framework is newly supported in this version.</p>
+
+<h4>New Features</h4>
+
+<ul><li>Tizen::App
+<ul><li>Application model
+<ul><li>This feature provides:
+<ul><li>UI application model</li>
+<li>Background execution model without a graphical user interface</li>
+</ul></li></ul></li>
+<li>AppControl and DataControl
+<ul><li>These features provide:
+<ul><li>Implicit application control resolution</li>
+<li>Certificate manager application control</li>
+<li>Framework to access specific data exported by other applications and to share application data</li>
+</ul></li>
+</ul></li>
+<li>Application management
+<ul><li>This feature provides:
+<ul><li>Multitasking in the application</li>
+<li>Service type applications</li>
+<li>Active application changing event</li>
+</ul></li>
+</ul></li>
+<li>AppSetting
+<ul><li>This feature allows you to design your own setting menu with the IDE, and display and modify it in the system setting menu.</li>
+</ul></li>
+<li>Package management
+<ul><li>This feature provides installation and uninstallation management, and information of the installed packages.</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Base
+<ul><li>Basic types
+<ul><li>This feature provides basic data types such as Object, Boolean, Buffer, BufferBase, ByteBuffer, Character, Short, Int8, Integer, Long, LongLong, Number, Double, Float, DoubleMatrix, FloatMatrix, String, TimeSpan, DateTime, and UuId.</li>
+</ul></li>
+<li>Collections
+<ul><li>This feature provides data collections such as ArrayList, HashMap, Collection, LinkedList, MultiHashMap, Queue, Stack, Comparers, and Enumerators.</li>
+</ul></li>
+<li>Utility
+<ul><li>This feature provides common utilities such as Inflator, Deflator, FileZipper, FileUnzipper, LinkInfo, Math, RegularExpression, StringTokenizer, StringUtil, Uri, and ZipEntry.</li>
+</ul></li>
+<li>Runtime
+<ul><li>This feature provides:
+<ul><li>Worker threads and event-driven threads</li>
+<li>Synchronization mechanisms: Mutex, Semaphore, and Monitor</li>
+<li>RAII-style classes: MutexGuard, SemaphoreGuard, and MonitorGuard</li>
+</ul></li>
+</ul></li>
+<li>Smart pointers
+<ul><li>This feature provides:
+<ul><li>Sole ownership management smart pointers: auto_ptr and unique_ptr</li>
+<li>Reference-counted shared ownership management smart pointers: shared_ptr and weak_ptr</li>
+<li>Custom deleter: unique_ptr and shared_ptr</li>
+<li>Move semantic: unique_ptr (explicit move), auto_ptr (implicit move), and the std::move() method template</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Tizen::Content
+<ul><li>Content manager
+<ul><li>This feature provides:
+<ul><li>Content information management, such as file attributes, metadata, and custom data</li>
+<li>Searching content in a device</li>
+<li>Playlists</li>
+<li>Retrieving all content associated with a content directory</li>
+</ul></li>
+</ul></li>
+<li>Download manager
+<ul><li>This feature provides launching the download manager using HTTP.</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Graphics
+<ul><li>Graphics
+<ul><li>This feature provides:
+<ul><li>Platform-independent 2D graphics</li>
+<li>Graphics rendering methods and data structures</li>
+<li>Floating point matrix and vector classes</li>
+</ul></li>
+</ul></li>
+<li>3D graphics
+<ul><li>This feature provides:
+<ul><li>OpenGL&reg; ES 1.1 and 2.0, which are subsets of the OpenGL&reg; 3D graphics API designed for mobile devices.</li>
+<li>GL utilities:
+<ul><li>GLPlayer and IGlRenderer provide templates to increase OpenGL&reg; ES usability.</li>
+<li>CanvasTexture provides a fast and convenient way to draw 2D primitives onto OpenGL&reg; ES Texture.</li>
+<li>VideoTexture provides a fast and convenient way to play a video stream as OpenGL&reg; ES Texture.</li>
+</ul></li>
+<li>Performance:
+<ul><li>Provides a hardware acceleration mode, which accelerates applications using graphics hardware. When the HwAcceleration mode is enabled in the manifest.xml file, the GL surface rendering performance is also enhanced.</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Tizen::Io
+<ul><li>File
+<ul><li>This feature provides:
+<ul><li>Basic file I/O operations</li>
+<li>Retrieving the attributes of a file or directory</li>
+</ul></li>
+</ul></li>
+<li>Directory
+<ul><li>This feature provides:
+<ul><li>Basic directory operations</li>
+<li>Accessing the collection of a specific directory entry list</li>
+<li>Retrieving information about each directory entry</li>
+</ul></li>
+</ul></li>
+<li>Database
+<ul><li>This feature provides:
+<ul><li>Basic database management</li>
+<li>Navigating the database result set</li>
+<li>Manipulating SQL-compatible statements</li>
+</ul></li>
+</ul></li>
+<li>File event manager
+<ul><li>This feature provides monitoring individual files or directories.</li>
+</ul></li>
+<li>Message port
+<ul><li>This feature provides:
+<ul><li>Sending messages to the message ports of another application</li>
+<li>Receiving messages from other applications</li>
+<li>Trusted communication (allowed only if both applications are signed with the same certificate)</li>
+</ul></li>
+</ul></li>
+<li>Memory mapped file
+<ul><li>This feature provides using a memory mapped file, which maps the data of a file to the virtual address space of an application.</li>
+</ul></li>
+<li>Registry
+<ul><li>This feature provides methods to access and manipulate registry files including key-value structured data set.</li>
+</ul></li>
+<li>Serial port
+<ul><li>This feature provides methods for communication between external device and Tizen device.</li>
+</ul></li>
+<li>Secure I/O
+<ul><li>This feature provides methods to encrypt or decrypt the file, database, and registry file.</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Locales
+<ul><li>Locale information
+<ul><li>This feature provides management of the locale information specified by the combination of language and country codes (defined by ISO) if available in the system registry format.</li>
+</ul></li>
+<li>Calendar data
+<ul><li>This feature provides:
+<ul><li>Converting the date, time, and calendar fields using the Gregorian calendar, which is used by most of the world</li>
+<li>Managing time zone information with DST (Daylight Saving Time)</li>
+</ul></li>
+</ul></li>
+<li>Formatting data
+<ul><li>This feature provides formatting numbers, currencies, date, and time.</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Media
+<ul><li>Encoding and decoding
+<ul><li>This feature provide the encoding and decoding of images, videos, and audio data.</li>
+</ul></li>
+<li>Player and recorder
+<ul><li>This feature provides:
+<ul><li>Playing audio and video from media files stored on a device or streaming over the network</li>
+<li>Playback of DTMF tones</li>
+<li>Low-level audio playback and capturing</li>
+<li>Audio and video recording</li>
+</ul></li>
+</ul></li>
+<li>Camera
+<ul><li>This feature provides a camera to display a live preview and capture a still image.</li>
+</ul></li>
+<li>VideoFrameExtractor
+<ul><li>This API provides video frame extraction in a media file.</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Messaging
+<ul><li>Message management
+<ul><li>This feature provides:
+<ul><li>Creating, sending, and receiving SMS messages</li>
+<li>Searching SMS messages in the inbox, sentbox, outbox, or all message boxes</li>
+<li>Creating, sending, and receiving MMS messages and email messages with attachments</li>
+<li>Sending and receiving IP push messages</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Tizen::Net
+<ul><li>Account management
+<ul><li>This feature provides network account management.</li>
+</ul></li>
+<li>Connection management
+<ul><li>This feature provides:
+<ul><li>Custom connection management service API</li>
+<li>Selecting the preferred connection</li>
+</ul></li>
+</ul></li>
+<li>Utility
+<ul><li>This feature provides:
+<ul><li>Internet protocol (IP) address that represents a network resource or service (only IPv4 is supported)</li>
+<li>DNS utility retrieving information about a specific host from the Internet Domain Name System (DNS)</li>
+</ul></li>
+</ul></li>
+<li>Socket
+<ul><li>This feature provides:
+<ul><li>BSD-type socket functionality</li>
+<li>Secure sockets</li>
+</ul></li>
+</ul></li>
+<li>HTTP
+<ul><li>This feature provides:
+<ul><li>HTTP 1.0/1.1 client features, including pipelining, chunking, and connection management</li>
+<li>HTTPS (TLS1.0 and SSL3.0)</li>
+<li>HTTP authentication (basic, digest, NTLM, and negotiate)</li>
+<li>HTTP entity API (multi-part, string, Xml, and url encoded)</li>
+</ul></li>
+</ul></li>
+<li>Wi-Fi and Wi-Fi Direct&reg;
+<ul><li>This feature provides:
+<ul><li>Functionality for managing the local Wi-Fi device</li>
+<li>Functionality for using Wi-Fi Direct&reg; networks</li>
+<li><strong>Note</strong>: Wi-Fi features are only supported on the reference target device, not on the Emulator.</li>
+</ul></li>
+</ul></li>
+<li>Bluetooth
+<ul><li>This feature provides:
+<ul><li>Functionality for configuring the local Bluetooth device</li>
+<li>Bluetooth OPP (Object Push Profile), SPP (Serial Port Profile), and HDP (Health Device Profile) services</li>
+<li>Device and service discovery</li>
+<li><strong>Note</strong>: Bluetooth features are only supported on the reference target device, not on the Emulator.</li>
+</ul></li>
+</ul></li>
+<li>NFC
+<ul><li>This feature provides functionality for the Read/Write and P2P mode.</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Security
+<ul><li>Crypto
+<ul><li>This feature provides:
+<ul><li>Implementing cryptography algorithms that facilitate adding security features to applications</li>
+<li>Crypto algorithms, such as Hash, HMAC, symmetric cipher (AES, DES, 3DES, RC2, RC4, SkipJack, and Cast), and asymmetric cipher (RSA)</li>
+<li><strong>Note</strong>: The RC5 algorithm is not supported.</li>
+<li>Key exchange algorithms (DH and KEA)</li>
+</ul></li>
+</ul></li>
+<li>Certificate management
+<ul><li>This feature provides:
+<ul><li>X.509 certificates</li>
+<li>X.509 certificate chain validation from an &quot;entity&quot; certificate to a trusted CA certificate</li>
+<li>DER and PEM formats</li>
+</ul></li>
+</ul></li>
+<li>Key management
+<ul><li>This feature provides:
+<ul><li>Secret keys to encrypt and decrypt messages</li>
+<li>Public keys and private keys to offer authentication and public key infrastructure</li>
+<li>Pseudo random number generation</li>
+<li>X9.31 PRNG</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Tizen::Shell
+<ul><li>Notification
+<ul><li>This feature provides:
+<ul><li>Ongoing notifications</li>
+<li>Additional notification functionality to customize each notification message</li>
+<li>Changing notification title, icon, and sound</li>
+<li>Progress bar for ongoing notifications</li>
+</ul></li>
+</ul></li>
+<li>QuickPanelFrame
+</li><li>This feature provides a custom UI plugin for the notification tray.</li>
+</ul></li>
+<li>Tizen::Social
+<ul><li>Addressbook
+<ul><li>This feature provides:
+<ul><li>Managing and searching contacts on the device storage</li>
+<li>Importing and exporting vCard files</li>
+<li>Contact aggregation</li>
+</ul></li>
+</ul></li>
+<li>Calendarbook
+<ul><li>This feature provides:
+<ul><li>Managing and searching the personal schedule and task information on the device storage</li>
+<li>Importing and exporting vCalendar files</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Tizen::System
+<ul><li>Alarm
+<ul><li>This feature provides one-time or repeating alarms.</li>
+</ul></li>
+<li>DeviceManager
+<ul><li>This feature provides listening and handling events for various external devices.</li>
+</ul></li>
+<li>Environment
+<ul><li>This feature provides system environment variables.</li>
+</ul></li>
+<li>PowerManager
+<ul><li>This feature provides managing the device power state.</li>
+</ul></li>
+<li>RuntimeInfo
+<ul><li>This feature provides runtime information, such as the allocated memory, storage, and CPU utilization.</li>
+</ul></li>
+<li>SettingInfo
+<ul><li>This feature provides managing various user settings.</li>
+</ul></li>
+<li>SystemInfo
+<ul><li>This feature provides system information, such as the API and platform versions, supported device features, and screen dimensions.</li>
+</ul></li>
+<li>SystemTime
+<ul><li>This feature provides retrieving current system time, ticks, and uptime.</li>
+</ul></li>
+<li>Vibrator
+<ul><li>This feature provides handling the vibration functionality of a device.</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Telephony
+<ul><li>Telephony information
+<ul><li>This feature provides:
+<ul><li>Getting information of the current call type, status, and event</li>
+<li>Getting information of the current network, such as the cell ID, LAC, and PLMN</li>
+<li>Getting information of the current network status, such as the availability of call and data services and roaming</li>
+<li>Getting information of the inserted SIM card</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Tizen::Text
+<ul><li>Text Encoding and Decoding
+<ul><li>This feature provides:
+<ul><li>Encoding Unicode characters to various other characters</li>
+<li>Decoding characters in character sets to Unicode characters</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Tizen::Ui
+<ul><li>UI core
+<ul><li>This feature provides:
+<ul><li>Containers, such as forms, panels, split panels, and windows, which can be used to hold different UI components</li>
+<li>Windows, such as frames, pop-ups, and message boxes, which can be used to support layered display surfaces for UI components</li>
+<li>Accessibility container for customization of screen reader functionality for the visually impaired</li>
+</ul></li>
+</ul></li>
+<li>UI controls
+<ul><li>This feature provides:
+<ul><li>UI components for user interaction, including button, edit field, footer, gallery, header, label, slider, tab bar, and various date, time, and color pickers</li>
+<li>Various lists using the ListView, GroupedListView, IconListView, and TableView classes</li>
+</ul></li>
+</ul></li>
+<li>Multi-point touch and gestures
+<ul><li>This feature provides multi-point touch events and touch gestures.</li>
+</ul></li>
+<li>Scalable UI
+<ul><li>This feature provides developing and migrating multi-resolution applications with utilities, such as the layout manager, logical coordinates, and automatic resource selection.</li>
+</ul></li>
+<li>Animation
+<ul><li>This feature provides:
+<ul><li>Key frame-based, asynchronous animation of UI controls (such as form or panel transitions)</li>
+<li>Advanced 3D effects and animations using VisualElement and its related classes</li>
+</ul></li>
+</ul></li>
+<li>Effects
+<ul><li>This feature provides 3D effect animations, such as page flipping and various rotations, created with the UI Effect Builder.</li>
+</ul></li>
+<li>Scene management
+<ul><li>This feature provides form life-cycle management and makes the transitions between forms or panels easier.</li>
+</ul></li>
+<li>Downloadable IME
+<ul><li>This feature provides a custom input creation method.</li>
+</ul></li>
+<li>Themes
+<ul><li>This feature provides 2 different themes (dark and light). Each application can select a theme to use. </li>
+</ul></li>
+</ul></li>
+<li>Tizen::Uix
+<ul><li>Sensor management
+<ul><li>This feature provides:
+<ul><li>Gyro, light, tilt, magnetic, acceleration, and proximity sensors</li>
+<li>Motion detection (snap, double tap, and shake)</li>
+<li>Waking up from the sleep mode (available on acceleration)</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Tizen::Web
+<ul><li>Web browsing
+<ul><li>This feature provides:
+<ul><li>Loading a page from the network or local storage</li>
+<li>Text selection</li>
+<li>Sending a page loading request with a customized HTTP header and HTTP body</li>
+</ul></li>
+</ul></li>
+<li>Hybrid application programming
+<ul><li>This feature provides:
+<ul><li>JavaScript code evaluation for C++ to JavaScript binding</li>
+<li>Event handler bridge for JavaScript to C++ binding</li>
+</ul></li>
+</ul></li>
+<li>Page navigation list
+<ul><li>This feature provides a list of visited pages from a Web control instance.</li>
+</ul></li>
+<li>Settings
+<ul><li>This feature provides:
+<ul><li>Configuring Web controls, such as setting the user agent, input style, and font size</li>
+<li>Configuring Web control behavior, such as enabling JavaScript, Javascript popup, and HTML5 Geolocation features</li>
+</ul></li>
+</ul></li>
+<li>Cookie and cache control
+<ul><li>This feature provides:
+<ul><li>Private browsing control</li>
+<li>Separate cache and cookie storage for each application</li>
+<li>Clearing the cache and cookies</li>
+</ul></li>
+</ul></li>
+<li>Web history
+<ul><li>This feature provides a list of visited pages from the browser.</li>
+</ul></li>
+<li>JSON
+<ul><li>This feature provides a JSON parser and JSON writer.</li>
+</ul></li>
+</ul></li>
+<li>Reference applications
+<ul><li>The reference applications use Tizen native APIs.</li>
+<li>Home
+<ul><li>This application contains user-selected items and executes them.</li>
+</ul></li>
+<li>Lock
+<ul><li>This application locks and unlocks the device screen.</li>
+</ul></li>
+<li>Calculator
+<ul><li>This application performs arithmetic operations.</li>
+</ul></li>
+<li>Calendar
+<ul><li>This application manages planned events.</li>
+</ul></li>
+<li>Camera
+<ul><li>This application records images and videos.</li>
+</ul></li>
+<li>Clock
+<ul><li>This application includes an alarm, timer, stopwatch, and word clock.</li>
+</ul></li>
+<li>Contacts
+<ul><li>This application manages contacts.</li>
+</ul></li>
+<li>Email
+<ul><li>This application sends and receives emails.</li>
+</ul></li>
+<li>Gallery
+<ul><li>This application shows images and videos.</li>
+</ul></li>
+<li>Image viewer
+<ul><li>This application views images.</li>
+</ul></li>
+<li>Internet
+<ul><li>This application browses the Internet.</li>
+</ul></li>
+<li>Memo
+<ul><li>This application reads and writes memos.</li>
+</ul></li>
+<li>Messages
+<ul><li>This application sends and receives messages.</li>
+</ul></li>
+<li>Music player
+<ul><li>This application plays music and manages playlists.</li>
+</ul></li>
+<li>My files
+<ul><li>This application browses the files in the device.</li>
+</ul></li>
+<li>Phone
+<ul><li>This application sends and receives calls and manages call logs.</li>
+</ul></li>
+<li>Settings
+<ul><li>This application sets system settings.</li>
+</ul></li>
+<li>Video player
+<ul><li>This application plays videos.</li>
+</ul></li>
+</ul></li></ul>
+
+<h4>Known Issues</h4>
+
+<ul><li>Tizen::Graphics
+<ul><li>Graphics
+<ul><li>The Tizen SDK adopts font resources with open source license, therefore, some rarely used glyphs are missing.</li>
+<li>When the HwAcceleration flag is turned on in the Emulator, the OpenGL&reg; ES 1.1 functions do not behave properly.</li>
+</ul></li>
+<li>3D graphics
+<ul><li>The OpenGL&reg; ES pbuffer surface is not supported in the Emulator.</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Media
+<ul><li>Various effects of the Camera feature are not supported in the Emulator in Mac OS&reg; X.</li>
+<li>The front camera is not working in specific reference targets.
+<ul><li>The front camera is not working in the specific target device. (Ref.Device-PQ)</li>
+<li>The camera flash is not working in the specific target device. (Ref.Device-210)</li>
+<li>The camera&#39;s NV12 capture format is not working in the specific target device. (Ref.Device-PQ)</li>
+<li>The GPU enabled Emulator has performance degradation in Camera previewing and Player rendering.</li>
+</ul></li>
+<li>There are performance issues when decoding large scale images in the Emulator.</li>
+</ul></li>
+<li>Tizen::Messaging
+<ul><li>The IP Push feature is not supported in the reference target.</li>
+<li>The SMS/MMS feature is not supported in the reference target.</li>
+</ul></li>
+<li>Tizen::Net
+<ul><li>The account management feature is not supported in the reference target.</li>
+<li>PS network connection is not supported in the reference target.</li>
+</ul></li>
+<li>Tizen::Telephony
+<ul><li>The telephony feature is not supported in the reference target.</li>
+</ul></li>
+<li>Tizen::Ui
+<ul><li>In this release, only the light colored theme is supported.</li>
+<li>When a container is deleted, the parent (container) is deleted first, followed by the child controls. The order is to be fixed so that the child controls are deleted first.</li>
+<li>The Tizen::Ui::Controls::Frame::OnTerminating() event handler is currently not called properly.</li>
+<li>It is possible for a control to receive the Tizen::Ui::IFocusEventListener::OnFocusLost() event handler before receiving the OnFocusGained() event handler.</li>
+<li>Tizen::Ui::Animations::IVisualElementEventListener listeners are sometimes called needlessly.</li>
+<li>Termination event handlers for animation and animation group are sometimes called in the reverse order.</li>
+</ul></li>
+</ul>
+
+<h3>Core System</h3>
+
+<h4>New Features</h4>
+
+<ul><li>Reference Kernel
+<ul><li>The following features have been added:
+<ul><li>Support for TRATS2 board (Exynos4412)</li>
+<li>Support for FB (Frame Buffer)-based graphics (updated to use DRM (Direct Rendering Manager) for DRI (Direct Rendering Infrastructure))</li>
+<li>Support for CMA (Contiguous Memory Allocator)</li>
+<li>Support for IOMMU for some DMA devices</li>
+<li>Support for Extcon</li>
+<li><strong>Note</strong>: Some of the new features are back-ported and cannot be aligned with the stable version.</li>
+</ul></li>
+</ul></li>
+<li>Core applications
+<ul><li>The following features have been added:
+<ul><li>Camera, Gallery, and Music apps</li>
+<li>Contact link</li>
+</ul></li>
+</ul></li>
+<li>Sync
+<ul><li>Sync agent
+<ul><li>The following features have been added:
+<ul><li>Common elements for sync client (this feature has been revised)</li>
+<li>Plugin mechanism to easily add new features</li>
+</ul></li>
+</ul></li>
+<li>OMA DS
+<ul><li>The following features have been added:
+<ul><li>Support for OMA DS v1.2</li>
+<li>3 plugins including plain-text, vCard, and xcallog</li>
+</ul></li>
+</ul></li>
+<li>OMA DM
+<ul><li>The following features have been added:
+<ul><li>Support for OMA DM v1.2</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h4>Changed Features</h4>
+
+<ul><li>System
+<ul><li>libusb has been upgraded from 1.0.9 to 0.1.12.</li>
+</ul></li>
+<li>Reference kernel
+<ul><li>The Linux kernel has been upgraded from 2.6.36 to 3.0.</li>
+</ul></li>
+</ul>
+
+<h4>Known Issues</h4>
+
+<ul><li>Reference Kernel
+<ul><li>The rear-camera is not supported. (Ref.Device-PQ)</li>
+<li>The front-camera&#39;s flash is not supported. (Ref.Device-210)</li>
+</ul></li>
+<li>Core applications
+<ul><li>Internet is not supported in this version.</li>
+</ul></li>
+</ul>
+
+<h3>Supported Devices</h3>
+
+<h4>Features</h4>
+
+<ul><li>Emulator
+<ul><li>The Emulator is an x86-based Qemu image which can be run on computers.</li>
+<li>Preloaded applications:
+<ul><li>Core applications
+<ul><li>Home and Lock</li>
+</ul></li>
+<li>Reference applications
+<ul><li>Calculator, Calendar, CalendarService, Camera, Clock, Contacts, Email, Gallery, ImageViewer, Internet, Memo, Messages, MusicPlayer, MyFiles, Phone, Settings, and VideoPlayer</li>
+</ul></li>
+<li>Home and Lock applications can be changed from core applications to reference applications with the build configuration.</li>
+<li>All reference applications can be changed from reference applications to core applications with the build configuration.</li>
+</ul></li>
+</ul></li>
+<li>Reference target devices
+<ul><li>The reference target devices are designed based on commercial target devices:</li>
+<li>Ref.Device-210
+<ul><li>Ref.Device-210 is a reference target based on Samsung Galaxy S2 HD.</li>
+</ul></li>
+<li>Ref.Device-PQ
+<ul><li>Ref.Device-PQ is a reference target based on Samsung Galaxy S3.</li>
+</ul></li>
+<li>Preloaded applications:
+<ul><li>Core applications
+<ul><li>Home, Calculator, Calendar, CalendarService, Camera, Clock, Contacts, Email, Gallery, ImageViewer, Memo, Messages, MusicPlayer, MyFiles, Phone, Settings and VideoPlayer</li>
+</ul></li>
+<li>Reference applications
+<ul><li>Internet</li>
+</ul></li>
+<li>All applications can be changed to reference applications with the build configuration.</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h4>Known Issues</h4>
+
+<ul><li>Emulator
+<ul><li>The core applications that are not preloaded have not been fully tested in the Emulator.</li>
+</ul></li>
+</ul>
+
+<h2 id="ide_tools">IDE and Tools</h2>  
+
+<h3>New Features</h3>
+
+<ul><li>General
+<ul><li>Multiple OS support
+<ul><li>The IDE is available for 32-bit and 64-bit Linux (Ubuntu), Windows&reg;, and Mac OS&reg; X.</li>
+</ul></li>
+<li>Native (C++) development support
+<ul><li>The native (C++) SDK provides convenient development tools, such as the IDE, dynamic analyzer, unit test, code coverage, UI builder, effective UI builder, and API checker.</li>
+</ul></li>
+<li>Eclipse version upgrade
+<ul><li>Upgrades the Eclipse for IDE from Helios SR1 to Indigo SR2.</li>
+</ul></li>
+<li>Design renewal
+<ul><li>The Tizen pinwheel BI (Brand Identity) has been applied.</li>
+<li>A new delightful color scheme for icons, textures, and shapes has been applied.</li>
+</ul></li>
+</ul></li>
+<li>Common Tools
+<ul><li>Install Manager
+<ul><li>The following features have been added:
+<ul><li>Support for setting the network environment:
+<ul><li>Support for proxy and proxy authentication</li>
+<li>Three options are provided:
+<ul><li>Direct connection</li>
+<li>Automatic proxy configuration</li>
+<li>Manual proxy configuration</li>
+</ul></li>
+</ul></li>
+<li>Support for package information cache:
+<ul><li>If a system does not support a network, the Install Manager can show components trees.</li>
+</ul></li>
+<li>Support for advanced extra package control:
+<ul><li>You can find extra package information at &#39;tizen-sdk-data/extra&#39;.</li>
+<li>An extra repository can be added even if there are no packages which can be updated.</li>
+<li>Extra repository and packages can be removed.</li>
+</ul></li>
+<li>Support for retrying a download when an installation failure occurs</li>
+<li>A refined message text</li>
+</ul></li>
+</ul></li>
+<li>Emulator
+<ul><li>The following features have been added:
+<ul><li>Support for HW VT acceleration on 32/64-bit Linux (Ubuntu), Windows&reg;, and Mac OS&reg; X</li>
+<li>OpenGL&reg; ES enhancement:
+<ul><li>Support for HW acceleration on 32/64-bit Linux (Ubuntu), Windows&reg;, and Mac OS&reg; X</li>
+<li>Support for HW acceleration with NVIDIA, ATI, and Intel graphic cards</li>
+<li><strong>Note</strong>: This feature requires the driver for OpenGL&reg; ES &gt;= 2.0 and GLSL &gt;= 1.20 for the Intel graphic card on Windows&reg;.</li>
+<li><strong>Note</strong>: This feature requires Ubuntu version 12.04 or higher for the Intel graphic card.</li>
+<li>Support for SW mesa in Tizen guest, in case OpenGL&reg; ES is not available in the host</li>
+<li>Support for the pixmap surface and eglImageKHR/glEGLImageTargetTexture2DOES extensions</li>
+</ul></li>
+<li>QEMU version upgrade to 1.2.0.</li>
+<li>Multimedia codec enhancement:
+<ul><li>GStreamer FFmpeg plugin for the Emulator has been updated from 0.10.11 to 0.10.13.</li>
+<li>Support for more codecs, including VC-1</li>
+<li>Faster responsiveness</li>
+</ul></li>
+<li>Support for host proxy protocols, such as FTP, socket, and HTTPS</li>
+<li>Memory capability enhancement of Tizen guest by adding a swap partition</li>
+<li>Support for RAM dump function as an advanced debugging feature (Ubuntu only)</li>
+<li>Emulator UX enhancement
+<ul><li>This feature provides:
+<ul><li>Flexible and portable general purpose skin that consists of display and key windows</li>
+<li>HW keys now located in the key window</li>
+<li>Key window enabled by the context menu or a toggle button in the display window</li>
+<li>Platform booting progress displayed in the bottom of the screen</li>
+<li>Support for mouse wheel inputs from the host (visible only if the guest applications can handle scroll actions)</li>
+<li>Support for easy browsing of Emulator-related paths by double-clicking in the Detail Info dialog, such as, Log Path, SD Card Path, File Sharing Path, and Image Path</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Emulator Manager
+<ul><li>The following features have been added:
+<ul><li>General purpose skin is applicable to various Tizen profile devices</li>
+<li>Support for display density in DPI (Dots Per Inch)</li>
+<li>Support for counting the maximum multi-touch points</li>
+</ul></li>
+<li>Support for CLI (Command Line Interface)</li>
+</ul></li>
+<li>Event Injector
+<ul><li>The following features have been added:
+<ul><li>File injection of sensor data</li>
+<li>Support for the orientation sensor</li>
+<li>Support for NFC</li>
+<li>Support for a pluggable sdcard with the size of 4, 8, 16, or 32 GB</li>
+<li>Support for CLI (Command Line Interface)</li>
+</ul></li>
+</ul></li>
+<li>CLI (Command Line Interface) tools
+<ul><li>The following features have been added:
+<ul><li>Developing Tizen applications without an Eclipse-based IDE
+<ul><li>Compact and suitable for a minimal SDK</li>
+<li>Support for device connection and project packaging, signing, and installation</li>
+</ul></li>
+<li>Support for the native-gen, native-make, native-packaging, native-run, and native-debug commands for native application development.</li>
+<li>Support for Web application development.</li>
+</ul></li>
+</ul></li>
+<li>SDB (Smart Development Bridge)
+<ul><li>The following features have been added:
+<ul><li>Support for commands for installing and uninstalling application packages</li>
+<li>Support for commands for connecting and disconnecting to a device via TCP/IP</li>
+<li>Support for creating a remote file with a utf-8 character encoding (--with-utf-8)</li>
+<li>Support for the target name given by the Emulator Manager</li>
+<li>Console supporting ANSI color (ansicon.exe) in Windows&reg;</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Web IDE and Tools
+<ul><li>Web IDE
+<ul><li>The following features have been added:
+<ul><li>Editor
+<ul><li>JavaScript Development Tools (JSDT)
+<ul><li>Validator policies changed to remove unnecessary warnings</li>
+</ul></li><li>Support for JavaScript and CSS source code beautifier (Ctrl + 6)</li>
+<li><strong>Note</strong>: The Preview tab in the HTML editor has been deleted. The Google Chrome&reg;-based HTML preview is supported through the preview button in the action bar.</li>
+</ul></li>
+<li>Views
+<ul><li>HTML and CSS previews
+<ul><li>Container changed from the in-place view to the Google Chrome&reg; browser</li>
+<li>Instantly displaying changes made to HTML or CSS code (live-reload)</li>
+</ul></li>
+<li>Advanced Declaration view for JavaScript
+<ul><li>Instantly displaying the declaration of the selected code on a separate view</li>
+</ul></li>
+<li>JavaScript Log view
+<ul><li>Support for colors based on the level</li>
+</ul></li>
+<li>Support for IDE-related views through help context pop-ups</li>
+</ul></li>
+<li>Building, running, and debugging
+<ul><li>RDS (Rapid Development Support) added to enable faster building, running, and debugging of applications</li>
+<li>Widget package file created using the Full or Clean Build</li>
+<li>The remote inspector container changed from the in-place view to the Google Chrome&reg; browser</li>
+<li>Support for incremental build</li>
+<li>Support for hybrid application packaging</li>
+</ul></li>
+<li>Tools
+<ul><li>Support for CLI (Command Line Interface) tools</li>
+</ul></li>
+<li>Other changes
+<ul><li>Widget signing menu in the project context menu removed</li>
+<li>Support for the Tizen Web UI framework library version 0.2.4 and related templates</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Web UI Builder
+<ul><li>Programming model
+<ul><li>Support for 4 types of templates</li>
+<li>Support for application life-cycle event handlers, such as on-load and on-unload</li>
+<li>Support for automatically generating application termination code for the back button of the application main screen</li>
+<li>Complementing project configuration</li>
+</ul></li>
+<li>WYSIWYG page design editor (Page Designer)
+<ul><li>Support for a widget palette including 29 Tizen UI widgets and 12 HTML widgets</li>
+<li>Support for drag-and-drop creation, moving, and deletion of widgets</li>
+<li>Support for multiple selection, copy, cut, and paste actions</li>
+<li>Support for viewport scaling mode that is similar to the Emulator&#39;s</li>
+</ul></li>
+<li>Outline view
+<ul><li>Support for deleting and renaming widgets</li>
+</ul></li>
+<li>Properties view
+<ul><li>Support for CSS styling for HTML block widgets</li>
+<li>Support for custom event handlers</li>
+<li>Complementing preset event handlers</li>
+</ul></li>
+<li>Pages view
+<ul><li>Improvement of the page display information</li>
+<li>Improvement of the page operation UX</li>
+</ul></li>
+</ul></li>
+<li>Web Simulator
+<ul><li>API implementation
+<ul><li>Bluetooth, Notification, and Download APIs</li>
+<li>Existing modules updated according to Tizen API specification changes</li>
+</ul></li>
+<li>UI enhancement
+<ul><li>The device panel redesigned: geo-location, network, communication, sensor, and battery added</li>
+<li>Consolidation of the device settings into the configuration window</li>
+<li>Enhancement of the application launch bar (the project history is kept)</li>
+<li>Support for the device panel on/off configuration window</li>
+</ul></li>
+</ul></li></ul></li>
+
+<li>Native IDE and Tools
+<ul><li>Native IDE
+<ul><li>Native IDE is new for Tizen version 2.0. It is a smart and powerful development environment to create native applications for Tizen platforms.</li>
+</ul></li>
+<li>Project Wizard
+<ul><li>This feature provides:
+<ul><li>Various templates and samples to create native applications</li>
+<li>Express mode for faster project generation</li>
+</ul></li>
+</ul></li>
+<li>Editor
+<ul><li>This feature provides:
+<ul><li>Code assist for Tizen native APIs</li>
+<li>Multi-form editor for the manifest file. You can configure the ID, version, icon, and privileges of the application.</li>
+</ul></li>
+</ul></li>
+<li>Building and packaging
+<ul><li>This feature provides:
+<ul><li>TPK (Tizen Package File) packaging</li>
+<li>Author and distributor signing</li>
+<li>Multi-process application packaging. Multi-process applications enable hybrid architecture combining UI and service applications.</li>
+<li>LLVM 3.1 and GCC toolchain</li>
+<li>GCD (Grand Central Dispatch), with LLVM toolchain only</li>
+<li>OpenMP 3.0., with GCC toolchain only</li>
+<li>PCH (Pre-compiled Header) compilation</li>
+<li>3rd party rootstrap extensions</li>
+</ul></li>
+</ul></li>
+<li>Running and debugging
+<ul><li>This feature provides:
+<ul><li>Various debugging methods: normal, attach, and coredump</li>
+<li>RDS (Rapid Development Support) for uploading only the changed files when re-launching, skipping the packaging process</li>
+<li>Launch control for various application types, such as an IME application</li>
+<li>Crash report service and crash file viewer</li>
+<li>Building the project automatically if there is no executable file when launching the application</li>
+</ul></li>
+</ul></li>
+<li>Preference pages for customization</li>
+<li>Tools
+<ul><li>This feature provides:
+<ul><li>CLI (Command Line Interface)</li>
+<li>Unit testing using the Google C++ testing framework</li>
+<li>Support for code according to gcov chart</li>
+<li>C++ UI builder, C++ UI Effect Builder, and API checker tools</li>
+<li>OProfile profiling tool, which detects the method and module execution time</li>
+<li>Valgrind profiling tool, which detects the abnormal use of heap and stack memory</li>
+</ul></li>
+</ul></li>
+<li>Dynamic analyzer
+<ul><li>This feature provides:
+<ul><li>Effective analysis of the application behavior at runtime</li>
+<li>Integration with the IDE menu</li>
+<li>System information in the Timeline view</li>
+<li>Overall application analysis in the Summary view</li>
+<li>Detailed file, thread, and UI analysis</li>
+<li>Saving and loading the trace result</li>
+<li>Recording and replaying application user interaction</li>
+<li>Showing related source code as a tooltip and in the IDE</li>
+<li>Combining chart and table selections</li>
+<li>Range-based analysis</li>
+</ul></li>
+</ul></li>
+<li>Platform IDE
+<ul><li>This component uses a GBS (&gt; 0.12)-based build system.
+</li><li>The Platform IDE enables configuring various GBS build options, such as offline build and incremental build.</li>
+</ul></li>
+<li>Platform Project Wizard
+<ul><li>This feature provides:
+<ul><li>The same UX as the native and Web IDEs</li>
+<li>Basic categorized project templates</li>
+<li>Creating a project using directly downloaded sources from GIT</li>
+</ul></li></ul></li>
+
+<li>Platform perspective and Rootstrap View
+<ul><li>This feature provides:
+<ul><li>Creating new rootstraps (sysroots) using a specified package repository (snapshot)</li>
+<li>Showing available rootstraps on the Rootstrap View</li>
+<li>Changing the rootstrap to make platform project building easy</li>
+<li>Exporting and importing rootstrap.</li>
+</ul></li>
+</ul></li>
+<li>Building, running, and debugging with automatic installation
+<ul><li>This feature provides:
+<ul><li>Building a platform project without manually installing dependent packages</li>
+<li>Running and debug a platform module without manual installation</li>
+<li>Configuring the launch using a launch configuration wizard</li>
+</ul></li>
+</ul></li>
+<li>Package manager
+<ul><li>This feature provides:
+<ul><li>Showing and changing repository information of the selected target (rootstrap or device)</li>
+<li>Installing or removing local or remote packages</li>
+<li>Upgrading whole packages of the selected target</li>
+</ul></li>
+</ul></li>
+<li>Platform preferences
+<ul><li>This feature provides:
+<ul><li>Changing the sudo password</li>
+<li>Managing site options:
+<ul><li>GIT base address</li>
+<li>GIT project list</li>
+<li>Proxy setting to connect package repository</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+
+<li>SDK Development Tools
+<ul><li>DIBS (Distributed Intelligent Build System)
+<ul><li>This feature provides:
+<ul><li>New development system for Tizen SDK
+<ul><li>Building a Tizen SDK package from a local source</li>
+<li>Installing or replacing the package in Tizen SDK installation</li>
+<li>Requesting the builder to upload the package on the remote DIBS build or package server</li>
+<li>Install manager for installing the Tizen SDK from the DIBS package server</li>
+</ul></li>
+<li>DIBS package server
+<ul><li>Multi-distributions and multi-target-OS and their management</li>
+<li>Creating a snapshot for distribution, and supports snapshot management</li>
+<li>Exposing the SDK packages in the Internet</li>
+<li>Command line tool for the package server and client</li>
+</ul></li>
+<li>DIBS build server
+<ul><li>Building remote-request Tizen SDK packages</li>
+<li>Checking the reverse-build-dependency and provides its resolve process</li>
+<li>Multi-distributions and multi-target-OS</li>
+<li>ubuntu-32/64, windows-32/64, and macos-64 for the build server</li>
+<li>Distributed child servers</li>
+<li>Automatic package synchronization between package servers</li>
+<li>Command line tools for the build server and client</li>
+</ul></li>
+<li>DIBS Web
+<ul><li>Ruby-On-Rails-based Web UI for DIBS</li>
+<li>Project page showing all involved DIBS projects</li>
+<li>Requesting to build or upload the Tizen SDK package on the project page</li>
+<li>Job page showing the status of all requested jobs</li>
+<li>Administrator managing the DIBS system on the admin page</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Documentation
+<ul><li>IDE Help contents
+<ul><li>Getting started with Tizen
+<ul><li>This section provides an overview of Tizen, the developer environment, and other general guides.</li>
+</ul></li>
+<li>Tizen Web App Programming
+<ul><li>This section provides API references, information about the Web application development process and tools, the programming guide, tutorials for Tizen Web application development, and descriptions of Web sample applications.</li>
+</ul></li>
+<li>Tizen Native App Programming
+<ul><li>This section provides the API reference, information about the native application development process and tools, the programming guide, tutorials for Tizen native application development, and descriptions of native sample applications.</li>
+</ul></li>
+<li>Tizen Platform Development
+<ul><li>This section provides the API reference and information about the Tizen platform development environment and process.</li>
+</ul></li>
+<li>Tizen SDK Development
+<ul><li>This section provides information about the Tizen SDK development environment and process.</li>
+</ul></li>
+</ul></li>
+</ul></li></ul>
+
+
+<h3>Known Issues</h3>
+
+<ul><li>Web IDE
+<ul><li>In the Web-signing CLI, the password input problem still exists. To work around this, insert passwords in the profile.xml file before signing.</li>
+<li>The advanced Declaration view for JavaScript has several known issues due to JSDT-related bugs.</li>
+<li>Assignment tracing for JavaScript has several known issues:
+<ul><li>If local variables are used as a method name in a method call expression, assignment tracing does not function.</li>
+<li>Incorrect activation occurs if the inner and outer methods are both anonymous.</li>
+</ul></li>
+<li>The template namespaces have been changed to <span style="font-family: Courier New,Courier,monospace">www.tizen.org</span>. If you cannot see the project templates or samples in the Project Wizard, modify the namespaces in the tizen-app-template.xml file of the template directory accordingly.</li>
+</ul></li>
+<li>Native IDE
+<ul><li>Debugging
+<ul><li>Attach debugging does not work because the executable is built with the -fPIE option.</li>
+</ul></li>
+<li>RDS (Rapid Development Support)
+<ul><li>RDS is not supported in multi-process application projects.</li>
+<li>RDS is not supported in CLI tools.</li>
+<li>RDS does not support signing.</li>
+</ul></li>
+<li>CLI (Command Line Interface)
+<ul><li>The project path and Tizen SDK path are fixed when the project is generated. If you change the path, the project cannot be built.</li>
+<li>.bat files are not provided for Windows&reg;.</li>
+</ul></li>
+<li>Unit test
+<ul><li>The Test Explorer does not work if the project files have not been changed. In this case, edit the code manually, build the project, and run it.</li>
+</ul></li>
+<li>Code coverage
+<ul><li>Code coverage is not supported for the LLVM toolchain. To use code coverage, use the GCC toolchain.</li>
+</ul></li>
+<li>Valgrind
+<ul><li>Valgrind profiling is only supported in the Emulator.</li>
+</ul></li>
+</ul></li>
+<li>Emulator
+<ul><li>OpenGL&reg; ES acceleration can have problems in certain environments:
+<ul><li>Windows XP/7 with Intel motherboard integrated card</li>
+<li>Ubuntu 11.10 with Intel CPU/motherboard integrated card</li>
+</ul>
+<p>If this occurs, turn off the HW GL acceleration in the Emulator Manager. The HW GL acceleration can be disabled due to host capability, even though you select &#39;HW GL Acceleration supported&#39; in the Emulator Manager.</p>
+</li>
+<li>When you launch the Emulator on Windows&reg;, you can get a &quot;failed to allocate memory&quot; error. In that case, try the following:
+<ul><li>Increase the user area of the virtual memory in the system to 3 GB by running the &quot;bcdedit /set increaseuserva 3072&quot; command on the console with administrator rights (Windows&reg; 7 only).</li>
+<li>Close some other programs and try to launch the Emulator again.</li>
+<li>If you have set the RAM size as 768 or 1024 MB for the VM in the Emulator Manager, change the RAM size to 512 MB.</li>
+</ul></li>
+<li>Using the Emulator with SOCKS (SOCKet Secure) proxy on Mac OS&reg; X can cause unexpected problems.</li>
+<li>You cannot play some video files linked in YouTube, or other Web pages, using the browser on the Emulator.</li>
+<li>The Emulator log file (emulator.log) can become too large if you run the Emulator for a long time.</li>
+<li>The Emulator screenshot is drawn with a framebuffer of a virtual device. Sometimes the screenshot may not appear correctly.</li>
+<li>When you use the camera on Mac OS&reg; X, the brightness and contrast settings would not work.</li>
+<li>Some menu items of the top menu bars of the Emulator and the Emulator Manager do not work on Mac OS&reg; X.</li>
+</ul></li>
+<li>Dynamic analyzer
+<ul><li>A screenshot is sometimes not taken if the screen or scene change is implemented using an animation technique.</li>
+</ul></li>
+<li>Install Manager
+<ul><li>A shortcut is not provided in Mac OS&reg; X.</li>
+<li>If a dialog displays that the Install Manager is damaged on Mac OS, please see <a href="http://support.apple.com/kb/HT5290" target="_blank">http://support.apple.com/kb/HT5290</a>.
+</li></ul></li></ul>
+
+<h2 id="next">Next Release</h2> 
+
+<p>The next version, Tizen 2.1, will be released in the 2nd quarter of 2013. As a minor release, it will only contain several new features and performance enhancement without API modifications or removal. The main features of Tizen 2.1 include account management, application installing service, livebox support, performance optimization, and a security enhancement.</p>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/2_1_release_notes.htm b/org.tizen.devtools/html/download/2_1_release_notes.htm
new file mode 100644 (file)
index 0000000..443d926
--- /dev/null
@@ -0,0 +1,942 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.1 Release Notes</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#intro">Introduction</a></li>
+            <li><a href="#platform">Tizen Platform</a></li>
+                       <li><a href="#ide_tools">IDE and Tools</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Tizen 2.1 Release Notes</h1>
+
+<ul><li>Release Date: May 18, 2013</li>
+</ul>
+
+<h2 id="intro">Introduction</h2> 
+
+<p>Welcome to Tizen.</p>
+<p>Tizen is an open source, standards-based software platform supported by leading mobile operators, device manufacturers, and chip suppliers for multiple device categories, including smartphones, tablets, netbooks, in-vehicle infotainment devices, and smart TVs.</p>
+<p>The Tizen Platform consists of the Web framework (APIs), native framework (APIs), and core system.</p>
+<p>The Tizen Software Development Kit (SDK) is a comprehensive set of tools for developing Web applications, native applications, and the platform component for Tizen. The SDK contains an install manager, IDE, tools, documents, samples, and a platform image.</p>
+
+<h2 id="platform">Tizen Platform</h2> 
+
+<h3>Web Framework</h3>
+
+<h4>New Features</h4>
+
+<ul><li>HTML5 / W3C
+<ul><li>Security
+<ul><li>Content Security Policy 1.0
+<ul><li>This policy language provides the declaration of a set of content restrictions for Web resources, and a mechanism for transmitting the policy from a server to a client when the policy is enforced</li>
+</ul></li>
+</ul></li>
+<li>Performance and Optimization
+<ul><li>Navigation Timing
+<ul><li>This API provides an interface for Web applications to access timing information related to navigation and elements</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Web Runtime
+<ul><li>Web Dynamic Box runtime framework to enable embedding of Web Dynamic Boxes in viewer applications (for example, the Home screen). The supported features include:
+<ul><li>Web Dynamic Box installation and uninstallation</li>
+<li>Web Dynamic Box configuration extensions</li>
+<li>Web Dynamic Box execution and life-cycle management</li>
+</ul></li>
+<li>Configuration extension updates
+<ul><li>The &quot;package&quot; attribute in the &lt;tizen:application&gt; element to specify the package ID</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h4>Changed Features</h4>
+
+<ul><li>For Tizen Web API change details, see <a href="http://developer.tizen.org/downloads/sdk/2.1-api-change-notes">Tizen API Change Notes</a>.</li>
+<li>HTML5/W3C
+<ul><li>Reference documentation unified as a single document in accordance with the specification changes:
+<ul><li>CSS 2D Transforms and CSS 3D Transforms Module Level 3 to CSS Transforms</li>
+</ul></li>
+<li>Specification version update
+<p><strong>Note</strong>: If you have developed Web applications based on the previous Tizen versions (including 2.0) of the following specifications, you MUST check whether the corresponding features are available in the updated version of the specifications referred to in this release.</p>
+<ul><li>DOM, Forms, and Styles
+<ul><li>HTML5 Forms (Partial) - The formnovalidate content attribute of the form element is not supported</li>
+<li>CSS Transforms</li>
+<li>CSS Animations Module Level 3</li>
+<li>CSS Transitions Module Level 3 (Partial)</li>
+<li>CSS Multi-column Layout Module (Partial) - The column, avoid-page, and avoid-column values of the break-before and break-after properties, and the avoid-page and avoid-column values of the break-inside property are not supported</li>
+</ul></li>
+<li>Device
+<ul><li>Touch Events version 1 (Partial)</li>
+<li>The Screen Orientation API</li>
+<li>The Network Information API</li>
+</ul></li>
+<li>Graphics
+<ul><li>HTML5 The canvas element (Partial) - The toBlob method of the HTMLCanvasElement interface is not supported</li>
+<li>HTML Canvas 2D context (Partial) - The scrollPathIntoView method of the CanvasRenderingContext2D interface is not supported</li>
+</ul></li>
+<li>Media
+<ul><li>HTML5 The video element (Partial) - The videoTracks attribute of HTMLMediaElement and the abort event are not supported</li>
+<li>HTML5 The audio element (Partial) - The audioTracks attribute of HTMLMediaElement and the abort event are not supported</li>
+<li>Web Audio API (Partial)
+<ul><li>The computedValue attribute of the AudioParam interface is not supported</li>
+<li>The SOUNDFIELD enum string constant value of the PanningModelType enum for the panningModel attribute is not supported</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Update to method, attribute, and constructor support
+<ul><li>DOM, Forms and Styles
+<ul><li>Selectors API Level 2 (Partial) - The matchesSelector method (Element interface) is not supported</li>
+<li>Media Queries (Partial) – The color-index, min-color-index, max-color-index, resolution, scan, print, 3d-glasses, and grid queries are not supported</li>
+</ul></li>
+<li>Storage
+<ul><li>File API: Writer (Partial) - The FileSaver interface and saveAs method (Window interface) are not supported</li>
+</ul></li>
+<li>UI
+<ul><li>Clipboard API and Events - The ClipboardEvent interface constructor is not supported</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Web UI Framework
+<ul><li>The following widgets are newly introduced:
+<ul><li>Gallery 3D</li>
+<li>Split View</li>
+</ul></li>
+<li>The APIs of the following widgets are updated:
+<ul><li>Fast Scroll</li>
+<li>Token Text Area</li>
+<li>Progress</li>
+<li>Multimedia View</li>
+<li>Virtual Grid</li>
+</ul></li>
+</ul></li>
+<li>Tizen Web APIs
+<p>The following APIs are newly introduced or updated:</p>
+<ul><li>Bookmark</li>
+<li>DataControl</li>
+<li>DataSync</li>
+<li>MessagePort</li>
+<li>Notification</li>
+<li>Package</li>
+<li>Push</li>
+<li>SecureElement</li>
+<li>SystemInfo</li>
+</ul></li>
+</ul>
+
+<h3>Native Framework</h3>
+
+<h4>New Features</h4>
+
+<ul><li>Tizen::App
+<ul><li>Application controls
+<ul><li>Bluetooth, Gallery, and Todo application controls added</li>
+<li>Platform application control supports implicit resolution</li>
+<li>Supports signature-based access control</li>
+</ul></li>
+<li>Data controls
+<ul>
+<li>Supports flow-control operation on multiple requests</li>
+<li>Supports signature-based access control</li>
+</ul></li>
+</ul></li>
+<li>Tizen::App::Package
+<ul><li>Package management
+<ul><li>Supports application-specific metadata in the manifest</li>
+<li>Supports package filtering and package app filtering for more effective ways to get installed package list</li>
+<li>Supports getting package information from the specific Tizen package file</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Base
+<ul><li>Basic types
+<ul><li>Supports tick resolution in the Tizen::Base::DateTime class</li>
+<li>Supports the Tizen::Base::String hash code provider and comparer which can be used with the template Collection classes</li>
+</ul></li>
+<li>Collection
+<ul><li>Supports conversion between Tizen collections and C++ standard library containers</li>
+<li>Supports non-owning collection and owning collection through the DeleterFunctionType argument</li>
+</ul></li>
+<li>Utility
+<ul><li>Supports tokenizing string scanner and converter (Tizen::Base::Utility::Scanner class)</li>
+</ul></li>
+<li>Runtime
+<ul><li>Supports non-recursive mutex</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Content
+<ul><li>Content management
+<ul><li>Supports metadata extraction (such as EXIF and ID3 tags from images, audio, and video)</li>
+<li>Supports scanning for a file or directory to synchronize content information with the local content database</li>
+<li>Supports database change notifications</li>
+</ul></li>
+<li>Download manager
+<ul><li>Download information is available for at least the next 24 hours</li>
+<li>Supports enabling and disabling the download notifications</li>
+<li>Supports setting the allowed network type</li>
+<li>Supports managing the HTTP header fields</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Graphics
+<ul><li>Graphics
+<ul><li>Supports floating point precision
+<ul><li>API set which draws 2D primitives in floating point coordinates is added</li>
+</ul></li>
+<li>New properties for canvas
+<ul><li>Line cap style, which controls the shapes of the end of line</li>
+<li>Line join style, which determines how to draw the intersection of two joining lines</li>
+<li>Composite mode, which determines how to merge a 2D primitive with another primitive</li>
+<li>Anti-alias mode for 2D drawing in canvas</li>
+</ul></li>
+<li>TextElement of EnrichedText are vertically aligned along the baseline with TEXT_ALIGNMENT_BASELINE</li>
+</ul></li>
+<li>3D Graphics
+<ul><li>OpenGL&reg; ES
+<ul><li>pbuffer surface is available in the Emulator</li>
+<li>FBO for OpenGL-ES 1.1 is supported in the Emulator</li>
+</ul></li>
+<li>GL utilities
+<ul><li>Sample application and programming guide for CanvasTexture</li>
+<li>Sample application and programming guide for VideoTexture</li>
+<li>Programming guide for GlPlayer and GlRenderer</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Tizen::Io
+<ul><li>FileLock
+<ul><li>Supports an advisory lock mechanism on file or registry file</li>
+</ul></li>
+<li>Dataset
+<ul><li>Supports handling an in-memory table-structured dataset for DataControl result set</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Locales
+<ul><li>New country codes added:
+<ul><li>COUNTRY_BL (Saint Barthelemy)</li>
+<li>COUNTRY_MF (Saint Martin (French part))</li>
+<li>COUNTRY_AREA_419 (Latin America and the Caribbean)</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Media
+<ul><li>Camera
+<ul><li>Scene mode is added</li>
+</ul></li>
+<li>Audio and video recorder
+<ul><li>Audio and video pre-processing filter APIs and classes</li>
+</ul></li>
+<li>Image
+<ul><li>Floating point-based resized image decoding API</li>
+<li>EXIF orientation getter</li>
+</ul></li>
+<li>VideoFrameExtractor
+<ul><li>Recording rotation getter</li>
+</ul></li>
+</ul>
+</li>
+<li>Tizen::Net
+<ul><li>NFC
+<ul><li>Reserved Push feature</li>
+</ul></li>
+<li>HTTP
+<ul><li>Server certificate is verified manually</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Security
+<ul><li>Key
+<ul><li>Supports &quot;X509&quot; and &quot;PKCS#1&quot; format for public keys and &quot;PKCS#8&quot; and &quot;PKCS#1&quot; format for private keys</li>
+<li>Supports changing the format of the RSA key and encoding</li>
+</ul></li>
+<li>PKCS
+<ul><li>Supports &quot;PKCS#5&quot; (Password-based Encryption Standard) and &quot;PKCS#8&quot; (Private-key Information Syntax Standard)</li>
+</ul></li>
+<li>Cert
+<ul><li>Supports .p12 and .pfx certificate installation</li>
+</ul></li>
+</ul>
+</li>
+<li>Tizen::Shell
+<ul><li>Notification
+<ul><li>Supports badge change event listener</li>
+<li>Supports notifications by application control - implicit AppControl resolution is attempted when the user selects the message</li>
+<li>Supports text message notifications on the status bar</li>
+<li>Supports removing individual notifications</li>
+<li>Supports thumbnail and multiline-type notifications</li>
+</ul></li>
+<li>Dynamic Box
+<ul><li>Supports showing the widget and its Drop View on the Home screen</li>
+</ul></li>
+<li>Shortcut manager
+<ul><li>Supports adding application shortcuts on the Home screen</li>
+</ul></li>
+<li>Lock manager
+<ul><li>Supports getting the lock state and dismissing swipe unlocking</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Tizen::Social
+<ul><li>Account
+<ul><li>Supports methods to manage the account information</li>
+<li>Supports methods to access accounts and account providers</li>
+</ul></li>
+<li>Calendarbook
+<ul><li>Supports methods to update an event instance</li>
+<li>Supports absolute time for reminders</li>
+</ul></li>
+<li>Addressbook
+<ul><li>Supports user profile</li>
+<li>Supports bulk operations for adding, updating, and removing contacts</li>
+</ul></li>
+</ul>
+</li>
+<li>Tizen::System
+<ul><li>Environment
+<ul><li>System ringtone path is added in the PredefinedDirectoryType enum</li>
+</ul></li>
+<li>IScreenEventListener
+<ul><li>The OnScreenBrightnessChanged event handlers added</li>
+</ul></li>
+<li>PowerManager
+<ul><li>Supports subscribing to boot events</li>
+</ul></li>
+<li>RuntimeInfo
+<ul><li>The following keys are added:</li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/runtime/system.status</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/runtime/memory.allocated.self</span></li>
+</ul></li>
+<li>SettingInfo
+<ul><li>The SetValueAsync method is added for asynchronous elements</li>
+<li>The following keys are added:
+<ul><li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/application.home</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/application.lock</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/developer.usb_debugging</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/graphics.gpu.rendering</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/network.bluetooth</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/network.bluetooth.tethering</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/network.wifi</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/network.wifi.direct</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/network.wifi.notification</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/network.wifi.tethering</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/network.wifi.tethering.hide</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/network.wifi.tethering.security</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/network.wifi.tethering.security.password</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/screen.mode</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/sound.notification</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/speech.tts.screen</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/storage.directory.bluetooth.download</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/storage.directory.camera.record</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/storage.directory.radio.broadcast</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/storage.directory.video.broadcast</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/storage.directory.voice.record</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/storage.directory.wap.download</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/usb.tethering</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/setting/vibrator.level.notification</span></li>
+</ul></li>
+</ul></li>
+<li>SystemInfo
+<ul><li>The GetBuildInfo method is added</li>
+<li>The following keys are added:
+<ul><li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/graphics.acceleration</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.nfc.reserved_push</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.push</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/opengles</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/screen.auto_rotation</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/screen.size.normal.480.800</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/screen.size.normal.720.1280</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/shell.appwidget</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/sip.voip</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/speech.recognition</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/speech.synthesis</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/telephony.mms</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/telephony.sms.cbs</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/vision.face_recognition</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/vision.image_recognition</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/vision.qrcode_generation</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/vision.qrcode_recognition</span></li>
+</ul></li>
+</ul></li>
+<li>Vibrator
+<ul><li>Supports array-based pattern vibration</li>
+</ul></li>
+</ul>
+</li>
+<li>Tizen::Telephony
+<ul><li>SIM Manager
+<ul><li>Supports getting SIM state and type</li>
+</ul></li>
+</ul>
+</li>
+<li>Tizen::Ui
+<ul><li>APIs related to floating point are added throughout the UI namespace to reduce loss of precision issues when handling different resolutions</li>
+<li>UI controls
+<ul><li>GroupContainer for grouping controls together with a grouped look is added</li>
+<li>Supports verifying paste texts by implements Tizen::Ui::Controls::ITextFilter interface that processes a text event</li>
+</ul></li>
+<li>IME
+<ul><li>Supports input methods in the Tizen::Ui::Ime::InputMethod classes which can be used to input characters to text input UI controls, and interact with the associated UI controls</li>
+<li>Supports managing input methods through the Tizen::Ui::Ime::InputMethodManager classes</li>
+</ul></li>
+</ul>
+</li>
+<li>Tizen::Uix
+<ul><li>Vision
+<ul><li>Image recognition
+<ul><li>Supports natural image recognition and tracking functionalities</li>
+<li>New API for reference image feature set creation used in the image recognition is supported</li>
+</ul></li>
+<li>QR code recognition
+<ul><li>Supports standard QR code recognition and generation functionalities</li>
+</ul></li>
+</ul></li>
+<li>Sensor management
+<ul><li>Supports device orientation, user acceleration, and gravity sensors</li>
+</ul></li>
+</ul>
+</li>
+<li>Tizen::Web
+<ul><li>HTML5/W3C programming
+<ul><li>Supports Geolocation, GetUserMedia, Custom Handlers, Web Notification, Web Socket, Web GL, Web Worker, App Cache, Indexed DB, Web SQL Database, Web Storage, File System, Vibration, Prevent Default, and many more</li>
+</ul></li>
+<li>Bookmark
+<ul><li>Supports bookmark information management for a preloaded browser</li>
+</ul></li>
+<li>Storage
+<ul><li>Supports managing quota for Application Cache, Indexed DB, Web SQL Database, Web Storage, and File System</li>
+</ul></li>
+<li>Page control
+<ul><li>Supports:
+<ul><li>Getting the size of a Web page</li>
+<li>Scrolling a Web page</li>
+<li>Clearing navigation history, auto-cumulated data, or auto-fill data</li>
+</ul></li>
+</ul></li>
+<li>Setting
+<ul><li>Supports configuring the auto-complete or auto-fill features</li>
+</ul></li>
+<li>Floating point
+<ul><li>Supports precision for floating-point coordinates</li>
+</ul></li>
+<li>JSON
+<ul><li>Supports the compose API for unescape Unicode</li>
+</ul>
+</li></ul></li>
+<li>Reference native applications
+<ul>
+<li>Messages
+<ul><li>Multimedia Messaging System (MMS) is added</li>
+</ul></li></ul>
+</li>
+</ul>
+
+
+<h4>Changed Features</h4>
+
+<ul><li>For Tizen native API change details, see <a href="http://developer.tizen.org/downloads/sdk/2.1-api-change-notes">Tizen API Change Notes</a>.</li>
+<li>Tizen::App
+<ul><li>AppControl
+<ul><li>Phone AppControl is split into Phone and Call</li>
+<li>The AppControl argument is changed, but the previous argument is still supported</li>
+</ul></li>
+<li>GetInstanceByAppId() privilege level is changed from Partner to Platform</li>
+</ul></li>
+<li>Tizen::Ui
+<ul><li>The client size of the Tizen::Ui::Controls::Popup control has changed to remove unnecessary left and right margins of 20 pixels</li>
+<li>The height of the Tizen::Ui::Controls::MessageBox and Tizen::Ui::Controls::ProgressPopup controls is no longer variable according to the length of the body text</li>
+<li>Indicator height is reduced in the landscape mode to provide more content area. Therefore, client bounds of the Tizen::Ui::Controls::Form control changes in the landscape mode. When the indicator is made translucent while in the landscape mode, it becomes completely transparent. The indicator and Form behavior for the portrait orientation has not changed.</li>
+<li>The UI control deleting order has changed. UI controls were being deleted from parent to child, but in Tizen version 2.1, they are deleted from child to parent.</li>
+<li>It is recommended to use &quot;.#.png&quot; for extension of a nine patch image. If the extension is not &quot;.#.png&quot;, a bitmap which is loaded by the GetBitmapN() method and the UI Builder tool is not represented as a nine patch.</li>
+<li>Scene management
+<ul><li>User input is disabled on scene transition animations</li>
+<li>The RegisterScene() method returns the exception to prevent duplicated form IDs on different form scenes</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h4>Known Issues</h4>
+
+<ul><li>Tizen::App
+<ul><li>AppControl
+<ul><li>The PICK operation of the MusicPlayer application control is supported only on the target device</li>
+<li>Video call is not supported for the Call application control</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Graphics
+<ul><li>Graphics
+<ul><li>The Tizen SDK adopts font resources with open source license, therefore, some rarely used glyphs are missing</li>
+</ul></li>
+<li>3D graphics
+<ul><li>OpenGL&reg; ES
+<ul><li>To create an egl window surface for Tizen::Ui::Controls, the width of the control has to be an even number</li>
+<li>When a GL application runs with HW Acceleration enabled in the Emulator, the rendering results are flipped along y-axis</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Tizen::Io
+<ul><li>MessagePort
+<ul><li>Sending ByteBuffer values to a Web application through the RemoteMessagePort::SendMessage() method is not supported for native applications</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Locales
+<ul><li>Number formatting has known issues when saved number strings with a decimal point or thousands separator are handled after the locale setting has changed</li>
+</ul></li>
+<li>Tizen::Locations
+<ul><li>If the current locale, time zone, or time is changed after region monitoring is enabled, the location provider does not always notify of the region change</li>
+</ul></li>
+<li>Tizen::Media
+<ul><li>The camera preview or video is not shown if the height is longer than width when the H/W acceleration is off</li>
+<li>The video frame that is rendered on the screen at the end of a stream or when the Player::Stop() method is called can differ depending on the device model and the H/W acceleration mode</li>
+</ul></li>
+<li>Tizen::Web
+<ul><li>Web
+<ul><li>The UI for the auto-complete feature does not work</li>
+<li>To use a site supporting geolocation feature, enable the &quot;Remember Preference&quot; check box when a confirm popup appears</li>
+</ul></li>
+<li>JSON
+<ul><li>The JSON parser is currently locale-dependent. It will be changed in a later revision to be locale-independent.</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h3>Core System</h3>
+
+<h4>New Features</h4>
+
+<ul><li>Reference Kernel
+<ul><li>MFC (Multi Function Codec) firmware is added</li></ul>
+</li>
+<li>Bluetooth
+<ul><li>Supports encoding of 32/128 bit UUIDs is added</li>
+</ul></li>
+<li>Camera
+<ul><li>Supports 3264x2488 and 3264x1836 preview resolutions for RD-PQ</li>
+</ul></li>
+<li>System
+<ul><li>Systemd
+<ul><li>As a system and service manager, systemd (v.43) is newly applied to the platform, replacing the System V init daemon</li>
+<li>Parallelized service activation, on-demand socket and D-Bus activation for starting services and daemons, managing the service processes as a group using Linux cgroup, supporting automount points, snapshotting, and restoring of services are newly added</li>
+<li>systemd coredump handler is disabled as the Tizen platform has its own crash debugging module</li>
+<li>Supports SMACK labeling of FIFO and UNIX domain sockets used by systemd at runtime</li>
+<li>In order to support backward compatibility of System V init, necessary features, such as &quot;reboot parameter passing&quot; are added into systemd</li>
+</ul></li>
+<li>Device-node
+<ul><li>New module to control hardware devices. A tunnel between system framework and OAL (OEM Adaptation Layer), which accesses real device nodes. In addition, this module decides the permission of device nodes with which user can access.</li>
+</ul></li>
+</ul></li>
+<li>Security
+<ul><li>Smack
+<ul><li>Full Smack support in kernel space including long label support, recursive transmute</li>
+<li>Smack labels for platform core modules and sample Smack rule sets enabling apps to run properly</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h4>Changed Features</h4>
+
+<ul><li>System
+<ul><li>System V init daemon is removed and systemd is used as the service manager</li>
+<li>Power manager
+<ul><li>When a user or an application changes the brightness of display, the power manager daemon broadcasts the information to other applications</li>
+</ul></li>
+<li>Device manager
+<ul><li>Even in a low battery condition, changing the display brightness can be done</li>
+</ul></li>
+<li>Feedback
+<ul><li>All vibration files are combined to an XML file to reduce the size of binary. The XML file is implemented by base64 encoding schemes.</li>
+</ul></li>
+<li>Vibrator
+<ul><li>When a vibration effect is created, its magnitude can be set</li>
+</ul></li>
+<li>Sys-Assert
+<ul><li>Debug mode is enabled</li>
+</ul></li>
+</ul></li>
+<li>dlog
+<ul><li>In the logging mode, the platform log turns on or off conditionally</li>
+</ul></li>
+</ul>
+
+<h3>Supported Devices</h3>
+
+<h4>Features</h4>
+
+<ul><li>Emulator
+<ul><li>The Emulator is an x86-based Qemu image which can be run on computers</li>
+<li>Preloaded applications:
+<ul><li>Reference Core applications
+<ul><li>Home and Lock</li>
+</ul></li>
+<li>Reference native applications
+<ul><li>Calculator, Calendar, CalendarService, Camera, Clock, Contacts, Email, Gallery, ImageViewer, Internet, Memo, Messages, MusicPlayer, MyFiles, Phone, Settings, and VideoPlayer</li>
+</ul></li>
+<li>Home and Lock applications can be changed from reference core applications to reference native applications with the build configuration</li>
+<li>All reference native applications can be changed from reference native applications to reference core applications with the build configuration</li>
+</ul></li>
+</ul></li>
+<li>Reference target devices
+<ul><li>The reference target devices are designed based on commercial target devices:</li>
+<li>Ref.Device-210
+<ul><li>Ref.Device-210 is a reference target based on Samsung Galaxy S2 HD</li>
+</ul></li>
+<li>Ref.Device-PQ
+<ul><li>Ref.Device-PQ is a reference target based on Samsung Galaxy S3</li>
+</ul></li>
+<li>Preloaded applications:
+<ul><li>Reference Core applications
+<ul><li>Home, Calculator, Calendar, CalendarService, Camera, Clock, Contacts, Email, Gallery, ImageViewer, Memo, Messages, MusicPlayer, MyFiles, Phone, Settings and VideoPlayer</li>
+</ul></li>
+<li>Reference native applications
+<ul><li>Calculator, Calendar, CalendarService, Camera, Clock, Contacts, Email, Gallery, ImageViewer, Internet, Memo, Messages, MusicPlayer, MyFiles, Phone, Settings, and VideoPlayer</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h3>Supported Languages</h3>
+
+<ul><li>The following languages are supported:
+<ul><li>Arabic</li>
+<li>Armenian</li>
+<li>Azerbaijani</li>
+<li>Basque</li>
+<li>Bulgarian</li>
+<li>Catalan</li>
+<li>Chinese</li>
+<li>Chinese(Singapore)</li>
+<li>Chinese(HongKong)</li>
+<li>Chinese(Taiwan)</li>
+<li>Croatian</li>
+<li>Czech</li>
+<li>Danish</li>
+<li>Dutch</li>
+<li>English (US)</li>
+<li>English (UK)</li>
+<li>English (Philippines)</li>
+<li>Estonian</li>
+<li>Finnish</li>
+<li>French</li>
+<li>French (Canada)</li>
+<li>Galician</li>
+<li>Georgian</li>
+<li>German</li>
+<li>Greek</li>
+<li>Hindi</li>
+<li>Hungarian</li>
+<li>Icelandic</li>
+<li>Irish</li>
+<li>Italian</li>
+<li>Japanese</li>
+<li>Kazakh</li>
+<li>Korean</li>
+<li>Latvian</li>
+<li>Lithuanian</li>
+<li>Macedonian</li>
+<li>Norwegian</li>
+<li>Polish</li>
+<li>Portuguese</li>
+<li>Portuguese(Brazil)</li>
+<li>Romanian</li>
+<li>Russian</li>
+<li>Serbian</li>
+<li>Slovak</li>
+<li>Slovenian</li>
+<li>Spanish</li>
+<li>Spanish (Mexico)</li>
+<li>Swedish</li>
+<li>Turkish</li>
+<li>Ukrainian</li>
+<li>Uzbek</li>
+</ul></li>
+</ul>
+
+<h3>Licenses</h3>
+
+<ul><li>The following changes have been made in the licenses:
+<ul><li>The term &quot;Compatibility Definition Document&quot; in the Flora license and Tizen SDK License has been changed to &quot;Tizen Compliance Specification&quot;</li>
+<li>The term &quot;Compatibility Test Suites&quot; in the Flora license and Tizen SDK License has been changed to &quot;Tizen Compliance Tests&quot;</li>
+<li>The Flora License 4.4 condition has been clarified regarding the licensee&#39;s own copyright to derivative works or modifications</li>
+</ul></li>
+</ul>
+
+<h2 id="ide_tools">IDE and Tools</h2>
+
+<h4>New Features</h4>
+
+<ul><li>General
+<ul><li>Design renewal
+<ul><li>The Tizen pinwheel BI (Brand Identity) has been applied</li>
+<li>A new delightful color scheme for icons, textures, and shapes has been applied</li>
+<li>The application icon size has been increased from 108 to 117</li>
+</ul></li>
+<li>&quot;Keyboard Shortcuts&quot; menu added: a user can download Tizen IDE shortcuts in PDF format
+<ul><li>Menu with a link to Tizen Web site added</li>
+</ul></li>
+</ul></li>
+<li>Common Tools
+<ul><li>Emulator
+<ul><li>The following changes have been made in OpenGL&reg; ES:
+<ul><li>Support for the FBO extension for GLES1.1</li>
+<li>Removal of SW mesa from the Tizen platform</li>
+</ul></li>
+<li>systemd has been adopted for the Tizen platform booting</li>
+<li>Sleep mode performance on Ubuntu&reg; and Mac OS&reg; X has been enhanced by removing redundant CPU usage</li>
+<li>The orientation of the general purpose skin can be done with the skin indicator, which is by default located on the upper left corner and rotated along the skin</li>
+</ul></li>
+<li>Emulator Manager
+<ul><li>Checking the OpenGL&reg; capability of host has been added to enable and disable GPU acceleration automatically</li>
+</ul></li>
+<li>Event Injector
+<ul><li>The following changes have been made:
+<ul><li>Support for the user acceleration sensor</li>
+<li>Support for the gravity sensor</li>
+<li>Support for the orientation sensor</li>
+<li>Support for the MMS sent status</li>
+<li>UI enhancement for telephony messaging</li>
+<li>Removal of toggle buttons (check boxes) from the 3-axis sensor</li>
+</ul></li>
+</ul></li>
+<li>Install Manager
+<ul><li>Supports command line interface (CLI) for installing or removing the SDK</li>
+<li>Separates the &quot;Minimal&quot; installation type into &quot;Web Minimal&quot; and &quot;Native Minimal&quot;</li>
+<li>Shows the installed size of the SDK packages</li>
+<li>Supports styling scripting tags for component description</li>
+</ul></li>
+</ul></li>
+<li>Web IDE and Tools
+<ul><li>Configuration editor
+<ul><li>Supports app-control operations on the Tizen tab</li>
+<li>Supports app-widget settings on the Tizen tab</li>
+<li>Supports account settings on the Tizen tab</li>
+<li>Supports mouse events and touch effects on the Dynamic Box on the Tizen tab</li>
+<li>Supports tools for icon production in the configuration editor</li>
+<li>Changes the default required version from 1.0 to 2.1</li>
+</ul></li>
+<li>Editors (HTML, JavaScript, and CSS)
+<ul><li>Supports the code assist and privilege list for the add-on SDK</li>
+<li>Changes the default mode of the HTML editor to the source mode</li>
+</ul></li>
+<li>Building, running, and debugging
+<ul><li>Supports NPPlugin packaging</li>
+<li>Checks application ID validation during launch</li>
+<li>Checks the architecture for a hybrid app before launch</li>
+<li>Launching the application is canceled in case of existing errors in the &quot;config.xml&quot; file</li>
+</ul></li>
+<li>Application signing
+<ul><li>Application signing is mandatory for launching</li>
+<li>Checks validation of the certificate password in the Secure Profile before launching</li>
+</ul></li>
+<li>Project Wizard
+<ul><li>Updated template libraries to jQuery 1.8.2 and jQM 1.2.0</li>
+<li>Updated Tizen Web UI Framework to 0.2.26</li>
+</ul></li>
+<li>Preferences
+<ul><li>Removed the API assist option</li>
+</ul></li>
+<li>Web UI Builder
+<ul><li>Programming model
+<ul><li>Supports application life-cycle event handlers, such as on-show and on-hide</li>
+</ul></li>
+<li>Properties view
+<ul><li>Supports widget CSS style properties</li>
+</ul></li>
+<li>WYSIWYG page design editor (Page Designer)
+<ul><li>Supports absolute layout</li>
+<li>Supports HTML block and common container widgets absolute layout</li>
+</ul></li>
+<li>Advanced Declaration view
+<ul><li>Support has been added</li>
+</ul></li>
+</ul></li>
+<li>Web Simulator
+<ul><li>API implementation
+<ul><li>SystemSetting, Push, NetworkBearerSelection, and Package modules added</li>
+<li>Various old modules updated according to a specification change, including Messaging, SystemInfo, Content, and Power</li>
+<li>Supports system service of dialer and messaging added and manual callbacks from other applications and services enabled</li>
+<li>config.xml parser updated (as per new schema)</li>
+</ul></li>
+<li>UI enhancement
+<ul><li>UI refinement</li>
+</ul></li>
+</ul></li></ul>
+</li>
+<li>Native IDE and Tools
+<ul><li>Building
+<ul><li>New build configuration: Debug, Release, and Profile</li>
+<li>New architecture: LLVM-Bitcode/X86 (experimental), LLVM-Bitcode/ARM (experimental)</li>
+</ul></li>
+<li>Application signing
+<ul><li>Application signing mandatory for launching</li>
+</ul></li>
+<li>Running and debugging
+<ul><li>Supports attach debugging</li>
+<li>Supports Smart Launch</li>
+<li>Supports &quot;Enable update&quot; mode to test the Tizen Store update</li>
+<li>Detailed error messages shown when the package is installed</li>
+</ul></li>
+<li>Tools
+<ul><li>Code coverage
+<ul><li>Code coverage is supported for the LLVM toolchain</li>
+</ul></li>
+<li>Unit Test
+<ul><li>Changed to use the static gtest library</li>
+</ul></li>
+<li>Native CLI supports multi-project application packaging</li>
+<li>sdb
+<ul><li>sdbd has the &quot;developer&quot; privilege, so a user requiring root permission must use the &quot;sdb root on&quot; command</li>
+<li>The &quot;sdb install&quot; command supports the Web package (*.wgt)</li>
+</ul></li>
+<li>Rootstrap Manager removed (use the Platform SDK)</li>
+</ul></li>
+<li>Dynamic analyzer
+<ul><li>Feature configuration view is added</li>
+<li>File chart information on the File analysis page is updated (see the manual)</li>
+</ul></li>
+</ul></li>
+<li>Platform IDE
+<ul><li>Supports local package repository</li>
+<li>SDK Development Tools</li>
+<li>The &quot;build-cli changelog&quot; command for querying the change log is added</li>
+<li>Supports the project lock preventing building</li>
+<li>Shows the progress when registering packages</li>
+<li>Supports the remote build option (&quot;--save&quot;) of the &quot;build-cli&quot; command to save build results in a local storage</li>
+<li>Shows detailed log of remote jobs on DIBS WEB</li>
+</ul></li></ul>
+
+<h4>Bugs Fixed</h4>
+
+<ul><li>Web IDE
+<ul><li>JSDT
+<ul><li>Alerting the keyword error for &quot;continue&quot; and &quot;delete&quot; used as a property name of an object is fixed</li>
+<li>Malfunction of the open declaration feature (for the position of creating an object with a constructor which has a declaration with parameters) is fixed</li>
+</ul></li>
+<li>NPE at re-launching application after the first launch succeeded is fixed</li>
+<li>Bugs for incremental signing are fixed</li>
+<li>UI Builder project exception created by the user template is fixed</li>
+<li>JSON Validator error is fixed</li>
+<li>Hybrid app CLI is fixed</li>
+<li>Various bugs related to templates are fixed</li>
+<li>Template attribute (data-inline) is fixed</li>
+<li>Movable header in the jQuery Mobile templates is fixed</li>
+<li>The issue of not opening the configuration editor when there are errors in the file is fixed</li>
+<li>Web-hybrid app CLI bug is fixed</li>
+<li>Including generated signature files into deltaInfoList is fixed</li>
+<li>Duplicated project location is checked when creating a new project</li>
+<li>The &quot;Google Chrome&reg; settings in preferences&quot; problem is fixed</li>
+</ul></li>
+</ul>
+
+<h4>Known Issues</h4>
+
+<ul><li>Common IDE
+<ul><li>RDS (Rapid Development Support)
+<ul><li>RDS is not supported in multi-process application projects</li>
+<li>RDS is not supported in CLI tools</li>
+</ul></li>
+<li>CLI (Command Line Interface)
+<ul><li>The project path and Tizen SDK path are fixed when the project is generated. If you change the path, the project cannot be built.</li>
+</ul></li>
+</ul></li>
+<li>Web IDE
+<ul><li>The advanced Declaration view for JavaScript has several known issues due to JSDT-related bugs</li>
+<li>The Lock function of the advanced Declaration view has been disabled because of a NullPointerException issue</li>
+<li>Assignment tracing for JavaScript has several known issues:
+<ul><li>If local variables are used as a method name in a method call expression, assignment tracing does not function</li>
+<li>Incorrect activation occurs if the inner and outer methods are both anonymous</li>
+</ul></li>
+<li>Web Simulator
+<ul><li>Only a single application can run at a time</li>
+<li>Modules not supported: DataControl, MessagePort, SecureElement, Bookmark, and DataSynchronization</li>
+<li>Daylight saving time-related methods are not supported in the Time module</li>
+</ul></li>
+<li>The &quot;could not delete resources&quot; problem while building is fixed</li>
+<li>An error can occur in the Web UI Builder template when you try to perform the clean and build action. This is a bug in the JavaScript Validator in Eclipse, and can be resolved as follows:
+<ol><li>Uncheck JavaScript Validator in the Builders section of the application properties.</li>
+<li>Delete errors in the Problems view.</li>
+<li>Clean and build the project again.</li>
+</ol></li>
+</ul></li>
+<li>Native IDE
+<ul><li>Unit test
+<ul><li>Currently, the unit test is designed to support only functional testing</li>
+<li>Unit Test application is not an OSP-based application. Therefore, some methods related with OSP application framework, such as methods of the Tizen::Base::String class, can behave incorrectly.</li>
+<li>The Test Explorer does not work if the project files have not been changed. In this case, edit the code manually, build the project, and run it.</li>
+</ul></li>
+<li>Valgrind
+<ul><li>Valgrind profiling is only supported in the Emulator</li>
+</ul></li>
+</ul></li>
+<li>Emulator
+<ul><li>If you run the Emulator with Oracle Java&reg; 1.7 or higher on Mac&reg; OS, it may result in your host machine getting slower. If you run two or more Emulator VMs, Occasionally booting the Emulator does no work.</li>
+<li>Your Ubuntu&reg; desktop session can be occasionally logged out when launching the Emulator Manager, if you use NVIDIA&reg; graphic card. In that case, install the latest driver directly from the NVIDIA&reg; website.</li>
+<li>OpenGL&reg; ES acceleration can have problems in certain environments:
+<ul><li>Windows XP/7 with Intel motherboard integrated card</li>
+<li>Ubuntu 11.10 with Intel CPU/motherboard integrated card</li>
+</ul><p>If this occurs, you can launch the Emulator by switching off the HW GL acceleration in the Emulator Manager. However, you cannot use any GL-related applications, such as a Web browser.</p>
+</li>
+<li>When you launch the Emulator on Windows&reg;, you can get a &quot;failed to allocate memory&quot; error. In that case, try the following:
+<ul><li>Increase the user area of the virtual memory in the system to 3 GB by running the &quot;bcdedit /set increaseuserva 3072&quot; command on the console with administrator rights (Windows&reg; 7 only)</li>
+<li>Close some other programs and try to launch the Emulator again</li>
+<li>If you have set the RAM size as 768 or 1024 MB for the VM in the Emulator Manager, change the RAM size to 512 MB</li>
+</ul></li>
+<li>Using the Emulator with SOCKS (SOCKet Secure) proxy on Mac OS&reg; X can cause unexpected problems</li>
+<li>You cannot play all video files that are linked in YouTube or other Web pages and require the browsers registered to them</li>
+<li>The Emulator log file (emulator.log) can become too large if you run the Emulator for a long time</li>
+</ul></li>
+<li>Dynamic analyzer
+<ul><li>A screenshot is sometimes not taken if the screen or scene change is implemented using an animation technique</li>
+<li>The analysis of the IME and Service Applications is not supported</li>
+</ul></li>
+<li>Install Manager
+<ul><li>A shortcut is not provided in Mac OS&reg; X</li>
+</ul></li>
+</ul>
+
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/2_2_1_release_notes.htm b/org.tizen.devtools/html/download/2_2_1_release_notes.htm
new file mode 100644 (file)
index 0000000..57b57ec
--- /dev/null
@@ -0,0 +1,321 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.2.1 Release Notes</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#intro">Introduction</a></li>
+            <li><a href="#platform">Tizen Platform</a></li>
+            <li><a href="#ide_tools">IDE and Tools</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Tizen 2.2.1 Release Notes</h1>
+
+<ul>
+<li>Release Date: November 9, 2013</li>
+</ul>
+
+<h2 id="intro">Introduction</h2>  
+
+<p>Welcome to Tizen.</p>
+<p>Tizen is an open source, standards-based software platform supported by leading mobile operators, device manufacturers, and chip suppliers for multiple device categories, including smartphones, tablets, netbooks, in-vehicle infotainment devices, and smart TVs.</p>
+<p>The Tizen Platform consists of the Web framework (APIs), native framework (APIs), and core system.</p>
+<p>The Tizen Software Development Kit (SDK) is a comprehensive set of tools for developing Web applications, native applications, and the platform component for Tizen. The SDK contains an install manager, IDE, tools, documents, samples, and a platform image.</p>
+
+<h2 id="platform">Tizen Platform</h2>
+
+<h3>Common</h3>
+
+<h4>New Features</h4>
+
+<ul><li>Privacy control
+<ul><li>In Settings, the <strong>Privacy</strong> menu is added.
+</li>
+</ul></li>
+<li>System framework
+<ul><li>Applications can be installed in SD cards.</li>
+<li>Firmware download supports the USB.org framework test tool and Mac OS&reg; X.</li>
+</ul></li>
+</ul>
+
+<h3>Web Framework</h3>
+
+<h4>Changed Features</h4>
+
+<ul><li>For Tizen Web API change details, see <a href="http://developer.tizen.org/downloads/sdk/2.2.1-api-change-notes">Tizen API Change Notes</a>.
+</li>
+<li>Web UI framework
+<ul><li>Pop-up animation is smoother during the orientation change.
+</li>
+<li>Focus navigation using a host keyboard is supported.
+</li>
+</ul></li>
+</ul>
+
+<h4>Fixed Bugs</h4>
+
+<ul><li>Web Runtime
+<ul><li>Misbehaving issue with W3C permission (such as geolocation and storage quota) pop-up selection has been fixed.</li>
+<li>Blinking issue with the resize, refresh, and pd open operations in the Web Dynamic Box has been fixed.</li>
+<li>Web application upgrade issue when the Web Dynamic Box instance is created has been fixed.</li>
+</ul></li>
+<li>Web UI framework
+<ul><li>Page content top and bottom padding are set to 0.</li>
+<li>Text-ellipsis is added to the list item text.</li>
+<li>Slider winset release problem has been fixed.</li>
+<li>Unnecessary scroll view calculation has been removed.</li>
+<li>Entry autofocus behavior has been fixed.</li>
+<li>Scroll view scroll position problem has been fixed.</li>
+</ul></li>
+</ul>
+
+<h3>Native Framework</h3>
+
+<h4>Changed Features</h4>
+
+<ul><li>Tizen::*
+<ul><li>The E_USER_NOT_CONSENTED exception has been added to privacy-related APIs.</li>
+</ul></li>
+<li>Tizen::App
+<ul><li>The <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/datacontrol.consumer</span> privilege is required to use DataControl.
+</li>
+<li>The following APIs have been added in the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/datacontrol.consumer</span> privilege.
+<ul><li>
+Tizen::App::MapDataControl::AddValue (const Tizen::Base::String &amp;dataId, const Tizen::Base::String &amp;key, const Tizen::Base::String &amp;value, RequestId &amp;reqId)
+</li>
+<li>
+Tizen::App::MapDataControl::GetValue (const Tizen::Base::String &amp;dataId, const Tizen::Base::String &amp;key, RequestId &amp;reqId, int pageNo=1, int countPerPage=20)
+</li>
+<li>
+Tizen::App::MapDataControl::RemoveValue (const Tizen::Base::String &amp;dataId, const Tizen::Base::String &amp;key, const Tizen::Base::String &amp;value, RequestId &amp;reqId)
+</li>
+<li>
+Tizen::App::MapDataControl::SetValue (const Tizen::Base::String &amp;dataId, const Tizen::Base::String &amp;key, const Tizen::Base::String &amp;oldValue, const Tizen::Base::String &amp;newValue, RequestId &amp;reqId)
+</li>
+<li>
+Tizen::App::SqlDataControl::Delete (const Tizen::Base::String &amp;dataId, const Tizen::Base::String *pWhere, RequestId &amp;reqId)
+</li>
+<li>
+Tizen::App::SqlDataControl::Insert (const Tizen::Base::String &amp;dataId, const Tizen::Base::Collection::IMap &amp;insertMap, RequestId &amp;reqId)
+</li>
+<li>
+Tizen::App::SqlDataControl::Select (const Tizen::Base::String &amp;dataId, const Tizen::Base::Collection::IList *pColumnList, const Tizen::Base::String *pWhere, const Tizen::Base::String *pOrder, RequestId &amp;reqId, int pageNo=1, int countPerPage=20)
+</li>
+<li>
+Tizen::App::SqlDataControl::Update (const Tizen::Base::String &amp;dataId, const Tizen::Base::Collection::IMap &amp;updateMap, const Tizen::Base::String *pWhere, RequestId &amp;reqId)
+</li>
+</ul></li>
+<li>
+The following APIs have been added in <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/application.launch</span> privilege.
+<ul><li>Tizen::App::AppControl::Stop (void)</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Media
+<ul><li>
+The following APIs have been added in <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/audiorecorder</span> privilege.
+<ul><li>
+Tizen::Media::AudioIn::Prepare (AudioSampleType audioSampleType, AudioChannelType audioChannelType, int audioSampleRate)
+</li>
+<li>
+Tizen::Media::AudioIn::Reset (void)
+</li>
+<li>
+Tizen::Media::AudioIn::Start (void)
+</li>
+<li>
+Tizen::Media::AudioIn::Stop (void)
+</li>
+<li>
+Tizen::Media::AudioIn::Unprepare (void)
+</li>
+</ul></li>
+</ul></li>
+<li>Tizen::System
+<ul><li>The following SystemInfo keys have been added:
+<ul><li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/screen.size.normal.240.400</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/screen.size.normal.320.480</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/screen.size.normal.540.960</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/screen.size.normal.600.1024</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/screen.size.normal.1080.1980</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/screen.size.all</span></li>
+</ul></li>
+</ul></li>
+<li>Tizen::Ui
+<ul><li>Launching time and FPS performance has been enhanced.</li>
+<li>Touch response has been enhanced.</li>
+<li>The GUI has been extensively revised for Tizen 2.2.1. Many GUI enhancements to improve clarity and legibility have been made. Some changes, such as adding an effect for controls have been made.</li>
+<li>The requirements for surrounding texts in SIP (Soft Input Panel) have been changed.</li>
+</ul></li>
+</ul>
+
+<h4>Fixed Bugs</h4>
+
+<ul><li>Tizen::App
+<ul><li>Service application issue with receiving the language setting changed event has been fixed.</li>
+</ul></li>
+<li>Tizen::Base
+<ul><li>The case where 2 String objects sharing a string buffer and one of them calling the Replace() method resulted in replacing both String objects if the input-param to be replaced was a whole string has been fixed.</li>
+<li>The issue with the Contains() method blocking the operation for a long time with a very long string has been fixed.</li>
+</ul></li>
+<li>Tizen::Base::Utility
+<ul><li>The issue of failing to get the host of the Uri having only the &quot;?&quot; character without a query has been fixed.</li>
+<li>Memory leak of the Scanner class has been fixed. The elements in the IList were not removed internally.</li>
+</ul></li>
+<li>Tizen::Content
+<ul><li>In some cases, the ContentManager::CreateContent() method returned the E_INVALID_ARG exception even though it had succeeded. This issue has been fixed.</li>
+<li>The issue of removing the source file when the ContentManager::CreateContent() method fails has been fixed.</li>
+<li>The issue of the ContentInfo::GetCoordinates() method returning an improper value in some locales has been fixed.</li>
+<li>The issue of the ContentSearch::SearchN() method not working properly for DateTime type columns has been fixed.</li>
+</ul></li>
+<li>Tizen::Media
+<ul><li>AudioIn
+<ul><li>The audiorecorder privilege is added in the Prepare(), Unprepare(), Start(), Stop(), and Reset() methods.</li>
+</ul></li>
+<li>Camera and Player
+<ul><li>Camera and video play performance enhancements are supported.</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Shell
+<ul><li>The issue of the notification light (LED) not blinking as specified has been fixed.</li>
+<li>The issue of the Dynamic Box not updating its text when the language setting is changed has been fixed.</li>
+<li>The issue of the Dynamic Box being removed when the application is upgraded has been fixed.</li>
+<li>The issue of the Dynamic Box not working properly when the user adds multiple Dynamic Boxes for a single application has been fixed.</li>
+</ul></li>
+<li>Tizen::Social
+<ul><li>The issue of not getting the recurrence of an event if the event does not have mandatory recurring information has been fixed.</li>
+<li>The issue of the initial calendar ID of CalEvent and CalTodo instances not being E_INVALID_RECORD_ID has been fixed.</li>
+<li>The issue of contact updates failing if some properties of the contact have been removed by another application has been fixed.</li>
+<li>The issue of Addressbook APIs failing when the caller thread cannot get the database lock in a certain time has been fixed.</li>
+</ul></li>
+<li>Tizen::Ui::Scenes
+<ul><li>The issue of application crashing when the scene transition is finished due to the SD card being ejected manually has been fixed.</li>
+</ul></li>
+<li>Tizen::Ui::Ime
+<ul><li>The issue of an IME application crashing when accessing a setting value using the Tizen::App::AppSetting class has been fixed.</li>
+</ul></li>
+</ul>
+
+<h4>Known Issues</h4>
+
+<ul><li>Tizen::Media
+<ul><li>When several AudioOut instances are used in an application, the performance can deteriorate. In this case, use OpenAL instead of the AudioOut class.</li>
+<li>Keep the number of simultaneous working handles in the system, including the AudioOut and Player classes, under 30.</li>
+</ul></li>
+</ul>
+
+<h2 id="ide_tools">IDE and Tools</h2>  
+
+<h3>New Features</h3>
+
+<ul><li>Common tools
+<ul><li>Smart Development Bridge (SDB)
+<ul><li>Password lock mode of the target is supported.</li>
+<li>SDB timeout setting to has been added to Tizen preferences (default: 5 minutes).</li>
+</ul></li>
+</ul></li><li>Web IDE and tools
+<ul><li>Hybrid multi-app packaging is supported.</li>
+<li>Configuration editor
+<ul><li>A feature list is supported.</li>
+<li>Validation checks for the icon, version, and content elements have been refined and added.</li>
+</ul></li>
+<li>jQuery Mobile templates have been updated to jQuery Mobile version 1.3.2.</li>
+</ul></li>
+<li>Native IDE and tools
+<ul><li>Debugging
+<ul><li>The GDB (GNU Debugger) pretty-print feature for basic STL library and Tizen string type is supported, enabling users to debug the value of these types in a human-readable format.</li>
+</ul></li>
+<li>Unit Test and Code coverage
+<ul><li>The code coverage feature in Windows&reg; has been defined by filtering the garbage value of the gcda path.</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h3>Changed Features</h3>
+
+<ul><li>Common tools
+<ul><li>Smart Development Bridge (SDB)
+<ul><li>The PATH setting &lt;tizen-sdk&gt;/tools in Linux when SDB is installed has been removed. Run the SDB in the &lt;tizen-sdk&gt;/tools directory or set the PATH variable yourself.</li>
+<li>Displaying the target name in the connect command is supported.</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h3>Fixed Bugs</h3>
+
+<ul><li>Common tools
+<ul><li>The slowness of pushing files in the <strong>Connection Explorer</strong> has been fixed.</li>
+<li>Smart Development Bridge (SDB)
+<ul><li>Device detection and CPU drain problem in Mac OS&reg; X has been fixed.</li>
+</ul></li>
+</ul></li>
+<li>Web IDE and tools
+<ul><li>The issue of live reload not working in the file mode has been fixed.</li>
+<li>The issue of 2nd launch not running in the RDS mode has been fixed.</li>
+</ul></li>
+<li>Native IDE and tools
+<ul><li>The issue of drag-and-drop failing from the <strong>Connection Explorer</strong> to the <strong>Package Explorer</strong> has been fixed.</li>
+</ul></li>
+</ul>
+
+<h3>Known Issues</h3>
+
+<ul><li>Native IDE and tools
+<ul><li>Debugging of the LaunchOnBoot applications is not supported. If you select the <strong>Launch the application automatically at start-up</strong> option in the <strong>Manifest Editor</strong> or directly set the LaunchOnBoot option to true, debugging can fail.</li>
+<li>Unit Test
+<ul><li>Launching to debug using the <strong>Run Checked</strong> option in the <strong>Test Explorer</strong> view can fail depending on the OS, when the command to be executed has many arguments.</li>
+</ul></li>
+</ul></li>
+<li>Native UI Builder
+<ul><li>The text function as ellipsis and line-break is sometimes displayed differently with an actuality operation.</li>
+</ul></li>
+</ul>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/2_2_release_notes.htm b/org.tizen.devtools/html/download/2_2_release_notes.htm
new file mode 100644 (file)
index 0000000..d70140a
--- /dev/null
@@ -0,0 +1,452 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.2 Release Notes</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#intro">Introduction</a></li>
+            <li><a href="#platform">Tizen Platform</a></li>
+                       <li><a href="#ide_tools">IDE and Tools</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Tizen 2.2 Release Notes</h1>
+
+<ul>
+<li>Release Date: July 21, 2013</li>
+</ul>
+
+<h2 id="intro">Introduction</h2>  
+
+<p>Welcome to Tizen.</p>
+<p>Tizen is an open source, standards-based software platform supported by leading mobile operators, device manufacturers, and chip suppliers for multiple device categories, including smartphones, tablets, netbooks, in-vehicle infotainment devices, and smart TVs.</p>
+<p>The Tizen Platform consists of the Web framework (APIs), native framework (APIs), and core system.</p>
+<p>The Tizen Software Development Kit (SDK) is a comprehensive set of tools for developing Web applications, native applications, and the platform component for Tizen. The SDK contains an install manager, IDE, tools, documents, samples, and a platform image.</p>
+
+<h2 id="platform">Tizen Platform</h2>  
+
+<h3>Web Framework</h3>
+
+<h4>New Features</h4>
+
+<ul><li>Web Runtime
+<ul><li>New elements: &lt;tizen:content-security-policy&gt;, &lt;tizen:content-security-policy-report-only&gt;, &lt;tizen:allow-navigation&gt;, &lt;tizen:metadata&gt;, &lt;tizen:setting hwkey-event&gt;, and &lt;tizen:box-size use-decoration&gt;</li>
+<li>New events: appwidgetready and tizenhwkey</li>
+<li>Web Runtime supports auto-orientation change</li>
+</ul></li>
+<li>Tizen Web APIs
+<ul><li>SystemInfo
+<ul><li>readonly attribute SystemInfoProfile profile;</li>
+<li>readonly attribute DOMString buildVersion;</li>
+<li>readonly attribute boolean isAutoRotation;</li>
+</ul></li>
+<li>Bluetooth
+<ul><li>void setChangeListener(BluetoothAdapterChangeCallback listener);</li>
+<li>void unsetChangeListener();</li>
+<li>void onstatechanged(boolean powered);</li>
+<li>void onnamechanged(DOMString name);</li>
+<li>void onvisibilitychanged(boolean visible);</li>
+</ul></li>
+<li>Application
+<ul><li>ApplicationMetaData[ ] getAppMetaData(optional ApplicationId? id);</li>
+</ul></li>
+<li>WebSetting
+<ul><li>[NoInterfaceObject] interface WebSettingObject
+
+<pre class="prettyprint">
+{
+&nbsp;&nbsp;&nbsp;readonly attribute WebSettingManager websetting;
+}
+</pre>
+</li>
+<li>[NoInterfaceObject] interface WebSettingManager
+
+<pre class="prettyprint">
+{
+&nbsp;&nbsp;&nbsp;void setUserAgentString(DOMString userAgent,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optional SuccessCallback? successCallback,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optional ErrorCallback? errorCallback);
+&nbsp;&nbsp;&nbsp;void removeAllCookies(optional SuccessCallback? successCallback,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optional ErrorCallback? errorCallback);
+}
+</pre>
+</li>
+</ul></li>
+<li>Notification
+<ul><li>attribute DOMString? ledColor;</li>
+<li>attribute unsigned long ledOnPeriod;</li>
+<li>attribute unsigned long ledOffPeriod;</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h4>Changed Features</h4>
+
+<ul><li>For Tizen Web API change details, see <a href="http://developer.tizen.org/downloads/sdk/2.2-api-change-notes">Tizen API Change Notes</a>.</li>
+<li>HTML5/W3C
+<ul><li>Method, attribute, and constructor support updated
+<ul><li>Media
+<ul><li>getUserMedia (Partial) - The audio dictionary member (MediaStreamOptions dictionary) is not supported</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Web UI Framework
+<ul><li>H/W key support
+<ul><li>H/W key binding support</li>
+<li>S/W back/menu button is optional</li>
+</ul></li>
+<li>Tizen 2.2 UX/GUI
+<ul><li>New white and black themes</li>
+<li>Header/footer height is changed</li>
+<li>Tabbar style is changed</li>
+<li>Other minor UX changes</li>
+</ul></li>
+</ul></li>
+<li>Tizen Web APIs
+<ul><li>Power : enum "SCREEN_BRIGHT" is deprecated.
+<ul><li>enum PowerScreenState {"SCREEN_OFF", "SCREEN_DIM", "SCREEN_NORMAL"};</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h3>Native Framework</h3>
+
+<h4>New Features</h4>
+
+<ul><li>Tizen::App
+<ul><li>AppControl
+<ul><li>API for clearing AppControl default selection is added</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Media
+<ul><li>Player
+<ul><li>SeekVideoKeyFrameCloseTo() method is added to seek the current playback position of the video content to the nearest key frame at the given time if the content contains key frames.</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Security
+<ul><li>SecureElement
+<ul><li>Supports access to secure elements, such as SIM card, and embedded secure elements</li>
+</ul></li>
+<li>Global
+<ul><li>Security policy is refined</li>
+</ul></li>
+<li>Smack
+<ul><li>A significant number of rules have been removed to allow required access only</li>
+<li>Mapping Smack rules with native/Web privileges to support better access control on kernel space</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Shell
+<ul><li>Dynamic Box
+<ul><li>Supports home screen customization
+<ul><li>Home screen can decorate the Dynamic Box frame</li>
+<li>Dynamic Box can declare in the manifest file whether such modifications are allowed</li>
+</ul></li>
+</ul></li>
+<li>Notification
+<ul><li>Supports H/W notification light settings</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Social
+<ul><li>Addressbook
+<ul><li>Supports storing application launch data in contacts</li>
+<li>Supports extra data for categories</li>
+</ul></li>
+</ul></li>
+<li>Tizen::System
+<ul><li>SystemInfo
+<ul><li>http://tizen.org/system/platform.processor and http://tizen.org/system/platform.communication_processor keys are added</li>
+</ul></li>
+</ul></li>
+<li>Tizen::Ui
+<ul><li>UX Update
+<ul><li>The GUI has been extensively revised for Tizen 2.2. Black theme is now the default theme, and many GUI improvements to improve clarity and legibility have been made. Some changes, such as reduction of height in Header require application to make sure that there is no break in the layout.</li>
+</ul></li>
+<li>Touch Effect
+<ul><li>Supports the Touch Effect to play predefined effects</li>
+</ul></li>
+<li>Indicator
+<ul><li>A new form style for landscape indicator is added (FORM_STYLE_LANDSCAPE_INDICATOR_AUTO_HIDE) and other indicator styles are only for portrait mode. If this new landscape indicator style is not specified for forms, no indicator will be displayed for landscape.</li>
+</ul></li>
+<li>Physical menu and back key support
+<ul><li>Because physical menu and back buttons are mandatory, APIs about back buttons are deprecated and new APIs about menu event handler were added.</li>
+</ul></li>
+<li>Controlling effect sounds
+<ul><li>New APIs are added for enabling and disabling effect sound.</li>
+</ul></li>
+<li>Controls
+<ul><li>New styles for fast scroll are added. (SCROLL_STYLE_FAST_SCROLL_FIXED and TABLE_VIEW_SCROLL_BAR_STYLE_FAST_SCROLL_FIXED for ListView and TableView, respectively). The fast scroll with these new styles will not fade in/out automatically.
+<p>New API to make a password visible is added for EditField.</p>
+</li>
+</ul></li>
+<li>Accessibility and Focus UI
+<ul><li>Accessibility and Focus UI features are enabled. Accessibility screen reader supports the following languages: English, French, Italian, German, Spanish, and Korean.</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h4>Changed Features</h4>
+
+<ul><li>For Tizen native API change details, see <a href="http://developer.tizen.org/downloads/sdk/2.2-api-change-notes">Tizen API Change Notes</a>.</li>
+<li>Tizen::Ui
+<ul><li>Indicator
+<ul><li>Because indicator UX for landscape is changed, thin indicator for landscape is not supported anymore and the client size is also changed.</li>
+</ul></li>
+<li>Controls
+<ul><li>The height of header is changed and new header and footer styles for large tab are added (HEADER_STYLE_TAB_LARGE and FOOTER_STYLE_TAB_LARGE).</li>
+<li>The positions of <strong>Cancel</strong> and <strong>No</strong> buttons on MessageBox have changed and are now moved to the left side.</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h3>Supported Devices</h3>
+
+<h4>Features</h4>
+
+<ul><li>Emulator
+<ul><li>The Emulator is an x86-based Qemu image which can be run on computers</li>
+<li>Preloaded applications:
+<ul><li>Reference Core applications
+<ul><li>Home and Lock</li>
+</ul></li>
+<li>Reference native applications
+<ul><li>Calculator, Calendar, CalendarService, Camera, Clock, Contacts, Email, Gallery, ImageViewer, Internet, Memo, Messages, MusicPlayer, MyFiles, Phone, Settings, and VideoPlayer</li>
+</ul></li>
+<li>Home and Lock applications can be changed from reference core applications to reference native applications with the build configuration.</li>
+</ul></li>
+</ul></li>
+<li>Reference target devices
+<ul><li>The reference target devices are based upon existing commercial target devices</li>
+<li>Ref.Device-PQ
+<ul><li>Ref.Device-PQ is a reference target based on Samsung Galaxy S3</li>
+</ul></li>
+<li>Preloaded applications:
+<ul><li>Reference native applications
+<ul><li>Calculator, Calendar, CalendarService, Camera, Clock, Contacts, Email, Gallery, ImageViewer, Internet, Memo, Messages, MusicPlayer, MyFiles, Phone, Settings, and VideoPlayer</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h4>Changed Features</h4>
+
+<ul><li>Tizen 2.2 does not support the Ref-210 device due to the absence of H/W keys.</li>
+<li>The Reference Core applications are not updated in Tizen 2.2.</li>
+</ul>
+
+<h4>Known Issues</h4>
+
+<ul><li>Reference applications are a bit unstable and they will be updated soon.</li>
+</ul>
+
+<h3>Supported Languages</h3>
+
+<ul><li>The following languages are supported:
+<ul><li>Armenian</li>
+<li>Azerbaijani</li>
+<li>Basque</li>
+<li>Bulgarian</li>
+<li>Catalan</li>
+<li>Chinese</li>
+<li>Chinese(Singapore)</li>
+<li>Chinese(HongKong)</li>
+<li>Chinese(Taiwan)</li>
+<li>Croatian</li>
+<li>Czech</li>
+<li>Danish</li>
+<li>Dutch</li>
+<li>English (US)</li>
+<li>English (UK)</li>
+<li>English (Philippines)</li>
+<li>Estonian</li>
+<li>Finnish</li>
+<li>French</li>
+<li>French (Canada)</li>
+<li>Galician</li>
+<li>Georgian</li>
+<li>German</li>
+<li>Greek</li>
+<li>Hungarian</li>
+<li>Icelandic</li>
+<li>Irish</li>
+<li>Italian</li>
+<li>Japanese</li>
+<li>Kazakh</li>
+<li>Korean</li>
+<li>Latvian</li>
+<li>Lithuanian</li>
+<li>Macedonian</li>
+<li>Norwegian</li>
+<li>Polish</li>
+<li>Portuguese</li>
+<li>Portuguese(Brazil)</li>
+<li>Romanian</li>
+<li>Russian</li>
+<li>Serbian</li>
+<li>Slovak</li>
+<li>Slovenian</li>
+<li>Spanish</li>
+<li>Spanish (Mexico)</li>
+<li>Swedish</li>
+<li>Turkish</li>
+<li>Ukrainian</li>
+<li>Uzbek</li>
+</ul></li>
+<li>The following languages are partially supported:
+<ul><li>Arabic (supports text display and string translation)</li>
+<li>Hindi (supports text display and string translation)</li>
+</ul></li>
+</ul>
+
+<h2 id="ide_tools">IDE and Tools</h2>  
+
+<h3>New Features</h3>
+
+<ul><li>General
+<ul><li>Supports additional signing controls for generating author certificate and distributor1 signature</li>
+<li>EGit upgraded to 2.3.1 version</li>
+</ul></li>
+<li>Common Tools
+<ul><li>Emulator
+<ul><li>In General Purpose Skin type, the Key window can be docked not only to the right side but also to the left side of the Emulator window.</li>
+<li>Emulator provides the &quot;3btn Emulator Skin&quot; type for Menu and Back HW key.</li>
+</ul></li>
+<li>Emulator Manager
+<ul><li>Reflects a new user interface</li>
+</ul></li>
+<li>Event Injector</li>
+<li>Install Manager </li>
+</ul></li>
+<li>Web IDE and Tools
+<ul><li>Configuration Editor
+<ul><li>Locale setting and BoxLabel</li>
+</ul></li>
+<li>Building and Running
+<ul><li>Supports Privilege Checker to check the missing privilege and level
+<ul><li>Shows problems for a missing privilege</li>
+<li>Quick Fix for adding a missing privilege</li>
+<li>Shows warning for an unsupported privilege level</li>
+</ul></li>
+<li>Supports live editing in Emulator and Simulator</li>
+<li>Supports Smart Launch</li>
+<li>Adds an optimization option in Project properties</li>
+</ul></li>
+<li>CLI
+<ul><li>Provides web-build command for building and optimizing Web projects</li>
+<li>In web-signing command, the -d/--develop option is deprecated. The option is applied by default.</li>
+</ul></li>
+<li>Advanced Declaration View
+<ul><li>Supports HTML editor
+<ul><li>Shows CSS rules for id/class attributes</li>
+<li>Shows local source files or preview of local image files for local path attributes</li>
+<li>Shows declarations of embedded JavaScript code</li>
+</ul></li>
+<li>Jump to the Declaration function is added
+<ul><li>Jump to the Declaration function is added for HTML editor and UI Builder</li>
+<li>Open Input function for JavaScript editor is changed to Jump to the Declaration function</li>
+</ul></li>
+</ul></li>
+<li>Web UI Builder
+<ul><li>Supports H/W back key</li>
+<li>Back Button property is removed on the page</li>
+</ul></li>
+</ul></li>
+<li>Native IDE and Tools
+<ul><li>Debugging
+<ul><li>Integration with platform launcher</li>
+<li>Attach Debugging now initially selects the process of the selected project</li>
+</ul></li>
+<li>Unit Test and Code Coverage
+<ul><li>Code Coverage now shows the result automatically when an application is complete</li>
+<li>Unit Test template is changed for working as a normal UI application</li>
+</ul></li>
+<li>CLI
+<ul><li>Added -f option in native-gen project (Overwrite existing files)</li>
+<li>Refined usage and help messages</li>
+</ul></li>
+<li>Added CDT Refactor menu</li>
+<li>Native UI Builder
+<ul><li>Supports H/W back key</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h3>Changed Features</h3>
+
+<ul><li>Supported OS
+<p>The Tizen SDK does not support Ubuntu&trade; 11.10 but supports Ubuntu&trade; 12.04 and 12.10.</p>
+</li></ul>
+
+<h3>Known Issues</h3>
+
+<ul><li>Common IDE
+<ul><li>Target might not be displayed in Connection Explorer after a target reboot. To fix this issue, run &#39;sdb kill-server&#39; and &#39;sdb start-server&#39;.</li>
+</ul></li>
+<li>Web IDE
+<ul><li>Tizen Device API does not work in live editing on an Emulator</li>
+<li>After cleaning the project or restarting IDE, the RDS mode does not work for the first launch. </li>
+</ul></li>
+<li>Native IDE
+<ul><li>LLVM-Bitcode/ARM(Experimental) feature is not supported in Windows 64-bit environments</li>
+<li>Tizen IDE provides &#39;native-gen makefile&#39; command for some limited cases. So you may need to modify the generated makefile manually.
+<ul><li>It does not support the subfolders in &#39;src&#39;; for example, &#39;Model/file2.cpp&#39;</li>
+<li>It only supports the default Tizen IDE &quot;Debug&quot; build configuration</li>
+</ul></li>
+</ul></li>
+<li>Emulator
+<ul><li>When the disk storage is full, various incorrect operations may occur</li>
+<li>The Emulator skin may not be drawn properly on Ubuntu&trade; if the graphics driver is not installed or an older version is installed. To fix this issue, update the graphics driver version.</li>
+</ul></li>
+<li>Dynamic Analyzer
+<ul><li>Sometimes a screenshot is not taken if the screen or scene change is implemented using an animation technique</li>
+<li>The analysis of IME and Service Applications is not supported</li>
+</ul></li>
+</ul>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/2_3_1_release_notes.htm b/org.tizen.devtools/html/download/2_3_1_release_notes.htm
new file mode 100644 (file)
index 0000000..5cba1e4
--- /dev/null
@@ -0,0 +1,870 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.3.1 Release Notes </title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#introduction">Introduction</a></li>
+            <li><a href="#rev1">Tizen 2.3.1_Rev1</a></li>
+                       <li><a href="#Tizen_2_3_1">Tizen 2.3.1</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Tizen 2.3.1 Release Notes </h1>
+
+<ul>
+<li>Release Date: November 13, 2015</li>
+</ul>
+
+<h2 id="introduction">Introduction</h2> 
+
+<p>Welcome to Tizen!</p>
+<p>Tizen is an open source, standards-based software platform supported by leading mobile operators, device manufacturers, and chip suppliers for multiple device categories, including smartphones, tablets, netbooks, in-vehicle infotainment devices, and smart TVs.</p>
+<p>The Tizen Software Development Kit (SDK) is a comprehensive set of tools for developing Web and native applications for Tizen. The SDK contains an install manager, IDE, tools, documents, samples, and platform images for wearable and mobile profiles.</p>
+
+ <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">The Tizen 2.3.1 rev1 SDK only supports the Tizen 2.3.1 Platform. The upcoming Tizen 2.4 rev1 SDK will support both the Tizen 2.3.1 and 2.4 Platforms. The Tizen 2.3.1 rev1 SDK will be available until the Tizen 2.4 rev1 SDK is released.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+  
+<h2 id="rev1">Tizen 2.3.1_Rev1</h2>
+
+<h3>IDE and Tools</h3>
+
+<h4>New Features</h4>
+
+<ul>
+<li>Native UIB
+<ul>
+<li>Supports Wearable Profile
+<ul>
+<li>320 * 320, 360 * 360, 360 * 480 square resolutions for wearable devices have been added.</li>
+<li>360 * 360 circle resolution for wearable devices has been added.</li>
+</ul>
+</li>
+<li>Supports the making of a snippet (such as custom widget) by combining ready-made UI components. Snippets work the same as other ready-made UI components.</li>
+</ul>
+</li>
+<li>CLI
+<ul>
+<li>Supports the packaging, installing, running, and uninstalling of features for 2.3.0 projects.</li>
+</ul>
+</li>
+</ul>
+
+<h4>Changed Features</h4>
+
+<ul>
+<li>TAU (Tizen Advanced UI Framework)
+<ul>
+<li>TAU for web UI controls and some web sample applications have been updated to support the latest Design guide.</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li>Common
+<ul>
+<li>To improve security for connected Tizen devices, the execute permission of some features, such as Dynamic Analyzer, SDBD, etc., which control the devices, has been changed from the root/administrator to the developer.</li>
+</ul>
+</li>
+</ul>
+
+<h4>Fixed Bugs</h4>
+
+<ul>
+<li>Native IDE
+<ul>
+<li>The bug, which IDE stops responding when an Android device is connected, has been fixed.</li>
+</ul>
+</li>
+<li>Emulator
+<ul>
+<li>The bug, which IDE fails to install the Tizen HAX driver on a PC if the Android HAX driver is already installed, has been fixed.</li>
+</ul>
+</li>
+</ul>
+
+<h4>​​Known Issues</h4>
+
+<ul>
+<li>Common
+<ul>
+<li>Tizen IDE for MAC OS&reg; X has dependencies on Apple JDK. To support legacy java software on MAC OS&reg; X, download and install the Java for Mac OS X 2015-001 from <a href="https://support.apple.com/kb/DL1572" target="_blank">https://support.apple.com/kb/DL1572</a></li>
+</ul>
+</li>
+<li>Emulator
+<ul>
+<li>To use the Tizen Emulator, you should install an Intel VTx supported by the CPU, and the latest version of the graphic card driver provided by the vendor. Check the prerequisites for the Tizen Emulator from:
+<ul>
+<li><a href="sdk_prerequisites.htm#emulator">Emulator Requirements</a>.</li>
+<li>If the host machine is using the Nvidia Optimus&trade; technology on either Ubuntu&trade; or Windows&reg;, you must set the Tizen Emulator to run with your Nvidia&reg; graphics card. If you use Ubuntu&trade;, check the bumblebee project (<a href="https://wiki.ubuntu.com/Bumblebee" target="_blank">https://wiki.ubuntu.com/Bumblebee</a>). If you use Windows&reg;, you should select &quot;High Speed NVIDIA Processor&quot; as &quot;Preferred Graphics processor&quot; in the Nvidia&reg; control panel.</li>
+<li>On Ubuntu&trade;, if the graphics driver is outdated, your Ubuntu&reg; desktop session may be occasionally logged out when launching the Emulator Manager. Or the Emulator skin may be drawn improperly. Please check the prerequisites and upgrade the latest graphics driver.</li>
+</ul>
+</li>
+<li>On Ubuntu&trade; 14.04, the shortcut menu can appear sometimes transparently.</li>
+<li>On Windows&reg;, depending on your OS theme (such as Non-Aero themes and Windows XP themes), a display surface can be erased for a while if the Emulator window is covered by another window. If you click the Emulator window, the display surface runs correctly again</li>
+<li>On Windows&reg;, if a memory allocation error occurs while executing the Emulator, try the following: 
+<ul>
+<li>Close some other programs and try to launch the Emulator again</li>
+<li>If the RAM size is set as 768 or 1024 MB for the VM in the Emulator Manager, change the RAM size to 512 MB.</li>
+<li>Increase the user area of the virtual memory in the system to 3 GB by typing bcdedit /set increaseuserva 3072 on the console with administrator rights (Windows&reg; 7 only) and reboot.</li>
+</ul>
+</li>
+<li>If you use a MacBook Pro which has both Intel HD and NVidia GPUs, when you execute the Emulator with the OpenGL ES ver. v1.1 &amp; v2.0 option, the Emulator may be unexpectedly terminated. Please use the OpenGL ES ver. v2.0 &amp; v3.0 option.</li>
+<li>The Dynamic Analyzer may not recognize the Emulator the first time but it will recognize it next time.</li>
+</ul>
+</li>
+</ul>
+
+<h2 id="Tizen_2_3_1">Tizen 2.3.1</h2> 
+
+<h3>Tizen Platform Wearable Profile</h3>
+
+<p>The wearable profile provides a complete implementation of the Web APIs optimized for wearable devices. It includes WebKit, a layout engine designed to enable Web browsers to render Web pages. It also provides a runtime for Web applications. From Tizen 2.3.1, it provides native APIs for wearable native applications.</p>
+<p>The wearable profile&#39;s features include:</p>
+
+<h4>Web Framework</h4>
+
+<h5>Web Device API</h5>
+
+<p>The following wearable Web Device APIs have been added in this release to allow a richer variety of features to be implemented in wearable Web applications:</p>
+<ul>
+<li>Archive API (tizen.archive)
+<ul>
+<li>Creates an archive file and operates on it. For example, applications can use this API to extract files from an archive or add a file to an archive.</li>
+</ul>
+</li>
+<li>Exif  API (tizen.exif)
+<ul>
+<li>Manipulates exchangeable image file format (Exif) metadata.</li>
+</ul>
+</li>
+<li>NFC API (tizen.nfc)
+<ul>
+<li>Provides Near Field Communication (NFC) service to enable information exchange between NFC-enabled devices.</li>
+<li>Provides a new NFC host-based card emulation feature.</li>
+</ul>
+</li>
+<li>Secure Element API (tizen.seService)
+<ul>
+<li>Enables the application to communicate with several Secure Elements (SE).</li>
+</ul>
+</li>
+<li>Push API (tizen.push)
+<ul>
+<li>Provides functionality to receive push notifications.</li>
+</ul>
+</li>
+<li>Bluetooth API (tizen.bluetooth)
+<ul>
+<li>Provides functionality to control Bluetooth.</li>
+<li>Provides a new advertising feature for remote devices (including Bluetooth LE devices).</li>
+<li>Provides a new feature to allow the application to act as a GATT client (Generic Attribute Profile client).</li>
+</ul>
+</li>
+</ul>
+<p>The following features have been added to the existing wearable Web Device APIs in this release:</p>
+
+<ul>
+<li>Sensor API
+<ul>
+<li>Enables the application to get raw HRM sensor data.</li>
+</ul>
+</li>
+<li>Sound API
+<ul>
+<li>Enables the application to check whether a specific sound device type is connected.</li>
+</ul>
+</li>
+</ul>
+
+<h5>Web Runtime</h5>
+
+<p>The following custom event has been added in this release to give notifications on detected rotary detents:</p>
+<ul>
+<li>Custom event: rotarydetent</li>
+</ul>
+<p>The following custom events and configuration have been added to support the ambient mode for watch applications:</p>
+<ul>
+<li>Configuration: ambient_support</li>
+<li>Custom event: ambientmodechanged, timetick</li>
+</ul>
+
+
+<p>The Web Dynamic Box feature has been removed from this release.</p>
+
+<h5>Web UI Framework (TAU)</h5>
+
+<p>The Tizen platform also provides new components for wearable Web applications in this release.</p>
+
+<h6>New Features</h6>
+
+<ul>
+<li>Support for wearable devices with a circular screen has been added.
+<ul>
+<li>UI components for wearable devices have been enhanced to support a circular screen. You can make an application that runs on both rectangular and circular screens with a single source code.</li>
+<li>Drawer, Marquee, PageIndicator, and Selector have been added as wearable common UI components.</li>
+<li>Circular Progressbar and SnapListview (specialized for a circular screen) have been added.</li>
+</ul>
+</li>
+<li>Documents and samples have been updated.
+<ul>
+<li>The &quot;Support for Circular UI&quot; section has been added. It includes descriptions for the new UI components and migration guides for users who want to make their TAU-using applications work on a circular screen.</li>
+<li>Samples for the new UI components and information on how to use rotary events have been added.</li>
+</ul>
+</li>
+</ul>
+
+<h6>Changed Features</h6>
+
+<ul>
+<li>In SectionChanger, the fillContent option has been added to allow sections to be partially displayed.</li>
+<li>In Popup, maximizing pop-ups to the screen dimensions is supported through its option.</li>
+<li>In Page/Popup, you can enable the scrolls using the tau.defaults.enablePageScroll and tau.defaults.enablePopupScroll variables.</li>
+<li>In Page, the ui-scroller element has been added as a child of the page element.</li>
+<li>TAU license has been changed to the Flora license from the MIT license.</li>
+<li>Expandable Header Concept has been removed.</li>
+<li>MoreOption can be implemented with the Popup and Selector components.</li>
+</ul>
+
+<h6>Fixed Bugs</h6>
+
+<ul>
+<li>Gesturing bugs, which occurred when dragging on a nested SectionChanger, have been fixed.</li>
+<li>Differences between codes in the documents and their corresponding samples have been fixed.</li>
+<li>AnchorHighlight bugs, which occurred when removing the activeClass, have been fixed.</li>
+<li>According to the memory usage, composited layers for components have been reduced.</li>
+</ul>
+
+<h5>Webkit</h5>
+
+<p>The layout engine of the 2.3.1 wearable profile now supports circular/rotaUX for circle-shaped wearable devices:</p>
+
+<ul>
+<li>Support for the circular-type Web UI framework and a new media type to detect circle-shaped wearable devices has been added.</li>
+<li>Integration with platform UI components (such as pickers and popups) to support the circular/rotary UX has been added.</li>
+<li>Support for a touchcancel event (in some abnormal occurrences, such as touchstart event being canceled upon a palm gesture) has been added. </li>
+</ul>
+
+<h3>Native Framework</h3>
+
+<p>The Tizen platform provides native APIs for wearable native applications in this release:</p>
+
+<ul>
+<li>Application Framework API module
+<ul>
+<li>Application model
+<ul>
+<li>Widget application model has been added.</li>
+<li>Watch application model has been added.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Base API module
+<ul>
+<li>i18n
+<ul>
+<li>APIs for generating and parsing number or date format patterns for any locale have been added.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>UI API module
+<ul>
+<li>EFL (UI core)
+<ul>
+<li>Same EFL APIs are available as in the mobile profile (except for some profile-specific Elementary APIs).</li>
+<li>Rectangular and circular UI components and Theme (Styles) have been added.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>WebView API module
+<ul>
+<li>Tizen Native API provides EFL WebKit APIs to:
+<ul>
+<li>Create a webview context and instance.</li>
+<li>Set the URL and load a Web page.</li>
+<li>Navigate the loaded Web page back and forward.</li>
+<li>Reload, pause, and resume the Web page.</li>
+<li>Retrieve the page navigation details.</li>
+<li>Define basic settings, such as default font size, and cookie and cache management.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Location API module
+<ul>
+<li>Location Manager
+<ul>
+<li>Support for wearable devices has been added.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Network API module
+<ul>
+<li>Bluetooth
+<ul>
+<li>Support for the following:
+<ul>
+<li>GAP (Generic Access Profile)</li>
+<li>Audio Profiles (HFP, HSP, and A2DP)</li>
+<li>GATT(Generic Attribute Profile)</li>
+<li>OPP (Object Push Profile)</li>
+<li>HID (Human Interface Device Profile)</li>
+<li>HDP (Health Device Profile)</li>
+<li>SPP (Serial Port Profile)</li>
+</ul>
+</li>
+<li>New LE (Low Energy) APIs have been added, such as adding the advertising manufacturer data. The previous LE APIs have been deprecated in Tizen 2.3.1 and are to be removed in Tizen 3.0.</li>
+<li><strong>Note:</strong> Bluetooth features are only supported on reference target devices, not on the SDK emulator.</li>
+</ul>
+</li>
+<li>Connection management
+<ul>
+<li>Support for:
+<ul>
+<li>IPv6 (Internet Protocol version 6)</li>
+<li>New API for IPv6 routing</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Wi-Fi
+<ul>
+<li><strong>Note</strong>: Wi-Fi features are only supported on reference target devices, not on the SDK emulator.</li>
+</ul>
+</li>
+<li>NFC
+<ul>
+<li>New NFC host-based card emulation APIs have been added.</li>
+</ul>
+</li>
+<li>Smartcard
+<ul>
+<li>New Smartcard API has been added.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Socket and HTTP features supported by the OpenSSL and Curl open source libraries are provided.</li>
+<li>Graphics
+<ul>
+<li>2D Graphics
+<ul>
+<li>Cairo evas-gl backend feature has been added to provide GPU-accelerated Cairo rendering.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Sensor API module
+<ul>
+<li>Support to enable the application to get HRM and raw HRM sensor data has been added.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Tizen Platform Mobile Profile</h3>
+
+<h4>Web Framework</h4>
+
+<p>The following features have been added to the existing mobile web device APIs in this release:</p>
+
+<ul>
+<li>NFC API
+<ul>
+<li>​The NFC host-based card emulation feature has been added.</li>
+</ul>
+</li>
+<li>Sensor API
+<ul>
+<li>Raw HRM sensor data retrieval feature has been added.</li>
+</ul>
+</li>
+<li>​Sound API
+<ul>
+<li>Check whether a specific sound device type is connected has been added.</li>
+</ul>
+</li>
+<li>​Bluetooth  API
+<ul>
+<li>Advertising for remote devices (including Bluetooth LE devices) has been added.</li>
+<li>Feature to act as a GATT client (Generic Attribute Profile client) has been added.</li>
+</ul>
+</li>
+</ul>
+
+<h4>Native Framework</h4>
+
+<p>The following features have been added to the existing mobile native APIs in this release:</p>
+
+<ul>
+<li>Application Framework API module
+<ul>
+<li>Application model
+<ul>
+<li>Widget application model has been added.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Base API module
+<ul>
+<li>i18n
+<ul>
+<li>APIs for finding the location of boundaries in text and Unicode set have been added.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Messaging API module
+<ul>
+<li>Message management
+<ul>
+<li>Several enums have been modified for unused or product code.</li>
+</ul>
+</li>
+<li>E-mail
+<ul>
+<li>API has been added to convert strings: int email_convert_mutf7_to_utf8(const char *mutf7_str, char **utf8_str)</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Network API module
+<ul>
+<li>Bluetooth
+<ul>
+<li>Support for the following:
+<ul>
+<li>GAP (Generic Access Profile)</li>
+<li>Audio Profiles (HFP, HSP, and A2DP)</li>
+<li>GATT(Generic Attribute Profile)</li>
+<li>OPP (Object Push Profile)</li>
+<li>HID (Human Interface Device Profile)</li>
+<li>HDP (Health Device Profile)</li>
+<li>SPP (Serial Port Profile)</li>
+</ul>
+</li>
+<li>New LE API was added for adding advertising manufacturer data. The previous LE APIs have been deprecated in Tizen 2.3.1 and are to be removed in Tizen 3.0.</li>
+<li><strong>Note:</strong> Bluetooth features are only supported on reference target devices, not on the SDK emulator.</li>
+</ul>
+</li>
+<li>Connection management
+<ul>
+<li>Support for the following:
+<ul>
+<li>IPv6 (Internet Protocol version 6)</li>
+<li>New API for IPv6 routing</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Wi-Fi
+<ul>
+<li><strong>Note</strong>: Wi-Fi features are only supported on reference target devices, not on the SDK emulator.</li>
+</ul>
+</li>
+<li>NFC
+<ul>
+<li>New NFC host-based card emulation API has been added.</li>
+</ul>
+</li>
+<li>Smartcard
+<ul>
+<li>New Smartcard APsI have been added.</li>
+</ul>
+</li>
+<li>Socket and HTTP features supported by the OpenSSL and Curl open source libraries are provided.</li>
+</ul>
+</li>
+<li>Social API module
+<ul>
+<li>Contacts
+<ul>
+<li>Connection recovery from abnormal disconnection has been added.</li>
+<li>SIM access disability verification feature in a non-telephony device has been added.</li>
+</ul>
+</li>
+<li>Calendar
+<ul>
+<li>Connection recovery from abnormal disconnection has been added.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>UI API module
+<ul>
+<li>EFL (UI core)</li>
+<li>Tizen Buffer Management</li>
+</ul>
+</li>
+<li>Graphics
+<ul>
+<li>2D Graphics
+<ul>
+<li>Cairo evas-gl backend feature has been added to provide GPU-accelerated Cairo rendering.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Sensor API module
+<ul>
+<li>Features to get HRM and raw HRM sensor data have been added.</li>
+</ul>
+</li>
+</ul>
+
+<h5>​​Fixed Bugs</h5>
+
+<ul>
+<li>Evas GL extension list bugs:
+<ul>
+<li>Get the extension list of GLES 1.1 and the exceptional case has been fixed.</li>
+<li>Abnormal extension name had been fixed.</li>
+</ul>
+</li>
+<li>Memory leak in case of the GLES 1.1 surface has been fixed.</li>
+<li>Reconfiguration of the window surface when Evas GL runs with Direct Rendering has been fixed.</li>
+<li>Null-checking code has been added.</li>
+<li>Pixmap surface fallback has been added for the case of the GLES 1.1 indirect rendering .</li>
+<li>Black rectangle underneath the image has been added for the native surface video.</li>
+<li>glGetString wrapper function has been added for Evas GL.</li>
+</ul>
+
+<h4>Security</h4>
+
+<h5>Privilege</h5>
+
+<ul>
+<li>Privilege verification process during the installation is changed to check the API version of the application. It checks whether the given privilege is valid in a given API version. If a deprecated or unknown privilege is declared in the tizen-manifest.xml (or config.xml) file and the API version (or required version) is equal or greater than 2.3.1, the installation fails. There is an exception for a Web application with a required version lower than 2.3.1. Deprecated or unknown privilege declared in those applications does not cause a problem during the installation.</li>
+<li>Native privileges for the mobile profile:
+<ul>
+<li>New privileges:
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/reboot</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/secureelement</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/widget.viewer</span></li>
+</ul>
+</li>
+<li>Deprecated privilege:
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/systemsettings</span> (APIs using this privilege are changed to N/P)</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Native privileges for the wearable profile:
+<ul>
+<li>Native privileges available in the wearable profile:
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/alarm.get</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/alarm.set</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/appmanager.kill</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/appmanager.launch</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.admin</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/call</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/callhistory.read</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/callhistory.write</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/camera</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/content.write</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/datasharing</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/display</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/download</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/externalstorage</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/externalstorage.appdata</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/haptic</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/healthinfo</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/internet</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/keymanager</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/keymanager.admin</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/led</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/location</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/location.enable</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/mediastorage</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/message.read</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/message.write</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/network.get</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/network.profile</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/network.set</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/nfc</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/nfc.admin</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/nfc.cardemulation</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/notification</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/packagemanager.admin</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/packagemanager.info</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/power</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/push</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/reboot</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/recorder</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/screenshot</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/secureelement</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/systemsettings.admin</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/telephony</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/telephony.admin</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/volume.set</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/widget.viewer</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/window.priority.set</span></li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Web privileges for the mobile profile:
+<ul>
+<li>New privilege:
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/telephony</span></li>
+</ul>
+</li>
+<li>Deprecated privilege:
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/systemmanager</span> (Use <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/telephony</span> instead.)</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Web privilege for the wearable profile:
+<ul>
+<li>New privileges:
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.admin</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.gap</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.health</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.spp</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetoothmanager</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/nfc.admin</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/nfc.cardemulation</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/nfc.common</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/nfc.p2p</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/nfc.tag</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/push</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/secureelement</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/telephony</span></li>
+</ul>
+</li>
+<li>Deprecated privilege:
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/systemmanager</span> (Use <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/telephony</span> instead.)</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+<h4>IDE and Tools</h4>
+
+<h5>New Features</h5>
+
+<ul>
+<li>Native IDE
+<ul>
+<li>Support for developing a native application based on the Tizen wearable SDK has been added.</li>
+<li>Support  for using the ninja build system has been added:
+<ul>
+<li>Generating ninja build script files</li>
+<li>Using the ninja build instead of make</li>
+</ul>
+</li>
+<li>&quot;Archive Generator&quot; has been added:
+<ul>
+<li>Merging static objects from one library into another static library</li>
+</ul>
+</li>
+<li>Watch project types have been added:
+<ul>
+<li>Watch app can be installed only when launching the application.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Tools
+<ul>
+<li>CLI (Common Line Interface) supports &#39;post-certification&#39; of packaged binaries from native (.tpk), Web (.wgt), and hybrid (.tpk + .wgt) applications.</li>
+</ul>
+</li>
+<li>Emulator
+<ul>
+<li>360 * 360 and circular wearable emulators have been added.</li>
+<li>Extra packages are automatically installed when launching the emulator. You do not need to manually install them on the emulator.</li>
+<li>Rotary events for a circular screen are supported.</li>
+<li>Virtual hardware key which functions like a back button, has been added to the circular wearable emulator.</li>
+</ul>
+</li>
+<li>Sample applications for the wearable profile
+<ul>
+<li>The following Web sample applications have been added in this release:
+<ul>
+<li>Altimeter, App Callee, App Caller, Compass, Digital Watch, Hello Tizen, Mini Gallery, NewsFeed, Spinning Arrow, Sunburn Monitor, World Clock</li>
+</ul>
+</li>
+<li>The following native sample applications have been added in this release:
+<ul>
+<li>Analog Watch, Bluetooth-Chat, Digital-Watch, Notification Manager, Rotary Timer, Watch Application</li>
+<li>(Circle/Rectangle) Email, (Circle/Rectangle) Setting UI, (Circle) Time Setting UI, (Rectangle) Dialer UI, (Circle/Rectangle) UI Controls</li>
+<li>Cairo Basic, Cairo EvasGL, EvasGLCube, GLView11Cube, GLViewCube, GLViewShader</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+<h5>Changed Features</h5>
+
+<ul>
+<li>Web IDE and tools
+<ul>
+<li>&#39;app-widget&#39; element has been removed from the config.xml editor.</li>
+<li>&#39;tau&#39; keyword has been added to the CSS validation.</li>
+<li>Web UI Builder has been deprecated.</li>
+<li>Some &#39;widget&#39; terms have been changed to &#39;Web application&#39;.</li>
+<li>Default-installed user templates are no longer provided. However, the user template feature is still supported (only for Web applications).</li>
+<li>Tizen Import Wizards, such as &quot;Web Projects and Widget file&quot;, have been replaced with an integrated Import Wizard named &quot;Tizen Project or Package&quot;. This is intended for multi-platform changeable support.</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li>Native IDE
+<ul>
+<li>shared/res folder has been added to the source location by default to build the EDC and PO files in the shared/res folder path.</li>
+</ul>
+</li>
+</ul>
+
+<h5>Fixed Bugs</h5>
+<ul>
+<li>Web IDE and tools
+<ul>
+<li>False error message when using &#39;flex&#39; in the CSS file has been fixed.</li>
+</ul>
+</li>
+<li>Emulator
+<ul>
+<li>Bug, which caused the &quot;Always on Top&quot; feature to sometimes not work correctly on Ubuntu, has been fixed.</li>
+<li>Bug, which caused the emulator to sometimes not display the screen on Ubuntu and Radeon graphics cards, has been fixed.</li>
+</ul>
+</li>
+<li>​Native IDE
+<ul>
+<li>Linked resources are now added to the TPK file when packaging a project.</li>
+<li>Problem about a project build configuration occasionally changing from x86 to arm has been fixed.</li>
+<li>Linking error caused by an empty space in a project name when a project is building has been fixed.</li>
+</ul>
+</li>
+</ul>
+
+<h5>​​Known Issues</h5>
+
+<ul>
+<li>Web IDE and tools
+<ul>
+<li>Web Simulator
+<ul>
+<li>Web Simulator does not support a circular UI.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Emulator
+<ul>
+<li>In Mac OS, some files  transferred  to the emulator using an SDB push command cannot be accessed due to a file permission problem. To solve this problem, the file permission for other users must be changed at the host side.</li>
+<li>If you already installed an Android HAX driver, the Tizen HAX driver is not installed. This causes you to encounter the &quot;No accelerator found&quot; error while launching the emulator. Uninstall the Android HAX driver and install the Tizen HAX driver manually as follows:
+<ul>
+<li>MS Windows
+<ul>
+<li>Uninstall the Android HAX driver by going to the Windows control panel &gt; &quot;Programs and Features&quot; &gt; &quot;Intel(R) Hardware Accelerated Execution Manager&quot;.</li>
+<li>Install the Tizen HAX driver by executing the driver installer, whose path is &quot;&lt;TIZEN_SDK_HOME&gt;\tools\emulator\etc\IntelHaxmTizen.exe&quot; and proceeding with the installation process.</li>
+</ul>
+</li>
+<li>Mac OS X 10.10
+<ul>
+<li>​Uninstall the Android HAX driver by opening a terminal, changing the directory to &quot;/System/Library/Extensions/intelhaxm.kext/Contents/Resources&quot;, and entering the &quot;sudo ./uninstall.sh&quot; command.</li>
+<li>Install the Tizen HAX driver by executing the driver installer, whose path is &quot;&lt;TIZEN_SDK_HOME&gt;/tools/emulator/etc/IntelHaxmTizen_for_10.10.dmg&quot; and proceeding with the installation process.</li>
+</ul>
+</li>
+<li>​Mac OS X 10.9 and under
+<ul>
+<li>Uninstall the Android HAX driver by opening a terminal, changing the directory to &quot;/System/Library/Extensions/intelhaxm.kext/Contents/Resources&quot;, and entering the &quot;sudo ./uninstall.sh&quot; command.</li>
+<li>Install the Tizen HAX driver by executing the driver installer, whose path is &quot;&lt;TIZEN_SDK_HOME&gt;/tools/emulator/etc/IntelHaxmTizen.dmg&quot; and proceeding with the installation process. </li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Emulator Manager can be closed temporarily.
+<ul>
+<li>Condition
+<ul>
+<li>Run Emulator Manager</li>
+<li>Change the wearable-2.3.1 profile into x86-standard from x86-circle</li>
+<li>Close the Emulator Manager and re-run</li>
+<li>Select all tab on Emulator Manager</li>
+</ul>
+</li>
+<li>Solution
+<ul>
+<li>Roll back the wearable-2.3.1 profile into x86-circle</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Dynamic Analyzer failed to recognize emulator for 1st time only &amp; later running fine.</li>
+</ul>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/2_3_1_rev1_SDK_release_notes.htm b/org.tizen.devtools/html/download/2_3_1_rev1_SDK_release_notes.htm
new file mode 100644 (file)
index 0000000..4f1ea57
--- /dev/null
@@ -0,0 +1,169 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.3.1 Rev1 SDK Release Notes</title>
+</head>
+
+<body class="no-toc" onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation"></div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<div id="profile"><p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p></div>
+
+<h1>Tizen 2.3.1 Rev1 SDK Release Notes</h1>
+
+<ul> 
+   <li>Release Date: November 13, 2015</li> 
+  </ul>
+  
+<table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">The Tizen 2.3.1 rev1 SDK only supports the Tizen 2.3.1 Platform. The upcoming Tizen 2.4 rev1 SDK will support both the Tizen 2.3.1 and 2.4 Platforms. The Tizen 2.3.1 rev1 SDK will be available until the Tizen 2.4 rev1 SDK is released.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+<h2 id="ide_tools">IDE and Tools</h2>  
+
+<h3>New Features</h3>
+
+<ul>
+<li>Native UIB (only for Ubuntu)
+<ul>
+<li>Supports Wearable Profile
+<ul>
+<li>320 * 320, 360 * 360, 360 * 480 square resolutions for wearable devices have been added.</li>
+<li>360 * 360 circle resolution for wearable devices has been added.</li>
+</ul>
+</li>
+<li>Supports the making of a snippet (such as custom widget) by combining ready-made UI components. Snippets work the same as other ready-made UI components.</li>
+</ul>
+</li>
+<li>CLI
+<ul>
+<li>Supports the packaging, installing, running, and uninstalling of features for 2.3.0 projects.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Changed Features</h3>
+
+<ul>
+<li>TAU (Tizen Advanced UI Framework)
+<ul>
+<li>TAU for web UI controls and some web sample applications have been updated to support the latest Design guide.
+<ul>
+<li>The sizes of the following components got smaller.
+<ul>
+<li>List item, Checkbox, Radio button, Toggle switch</li>
+</ul>
+</li>
+<li>The size of header text is changed</li>
+<li>Visual interaction of button is changed</li>
+<li>Circular edge shadow is added to popup component</li>
+<li>The colors of the following are changed
+<ul>
+<li>Selector, Circular index scrollbar</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Common
+<ul>
+<li>To improve security for connected Tizen devices, the execute permission of some features, such as Dynamic Analyzer, SDBD, etc., which control the devices, has been changed from the root/administrator to the developer.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Fixed Bugs</h3>
+
+<ul>
+<li>Native IDE
+<ul>
+<li>The bug, which IDE stops responding when an Android device is connected, has been fixed.</li>
+</ul>
+</li>
+<li>Emulator
+<ul>
+<li>The bug, which IDE fails to install the Tizen HAX driver on a PC if the Android HAX driver is already installed, has been fixed.</li>
+</ul>
+</li>
+</ul>
+
+<h3>​​Known Issues</h3>
+
+<ul>
+<li>Common
+<ul>
+<li>Tizen IDE for MAC OS&reg; X has dependencies on Apple JDK. To support legacy java software on MAC OS&reg; X, download and install the Java for Mac OS X 2015-001 from <a href="https://support.apple.com/kb/DL1572" target="_blank">https://support.apple.com/kb/DL1572</a></li>
+</ul>
+</li>
+<li>Emulator
+<ul>
+<li>To use the Tizen Emulator, you should install an Intel VTx supported by the CPU, and the latest version of the graphic card driver provided by the vendor. Check the prerequisites for the Tizen Emulator from:
+<ul>
+<li><a href="sdk_prerequisites.htm#emulator">Emulator Requirements</a>.</li>
+<li>If the host machine is using the Nvidia Optimus&trade; technology on either Ubuntu&trade; or Windows&reg;, you must set the Tizen Emulator to run with your Nvidia&reg; graphics card. If you use Ubuntu&trade;, check the bumblebee project (<a href="https://wiki.ubuntu.com/Bumblebee" target="_blank">https://wiki.ubuntu.com/Bumblebee</a>). If you use Windows&reg;, you should select &quot;High Speed NVIDIA Processor&quot; as &quot;Preferred Graphics processor&quot; in the Nvidia&reg; control panel.</li>
+<li>On Ubuntu&trade;, if the graphics driver is outdated, your Ubuntu&trade; desktop session may be occasionally logged out when launching the Emulator Manager. Or the Emulator skin may be drawn improperly. Please check the prerequisites and upgrade the latest graphics driver.</li>
+</ul>
+</li>
+<li>On Ubuntu&trade; 14.04, the shortcut menu can appear sometimes transparently.</li>
+<li>On Windows&reg;, depending on your OS theme (such as Non-Aero themes and Windows XP themes), a display surface can be erased for a while if the Emulator window is covered by another window. If you click the Emulator window, the display surface runs correctly again</li>
+<li>On Windows&reg;, if a memory allocation error occurs while executing the Emulator, try the following: 
+<ul>
+<li>Close some other programs and try to launch the Emulator again</li>
+<li>If the RAM size is set as 768 or 1024 MB for the VM in the Emulator Manager, change the RAM size to 512 MB.</li>
+<li>Increase the user area of the virtual memory in the system to 3 GB by typing <strong>bcdedit /set increaseuserva 3072</strong> on the console with administrator rights (Windows&reg; 7 only) and reboot.</li>
+</ul>
+</li>
+<li>If you use a MacBook Pro which has both Intel HD and NVidia GPUs, when you execute the Emulator with the <strong>OpenGL ES ver. v1.1 &amp; v2.0</strong> option, the Emulator may be unexpectedly terminated. Please use the <strong>OpenGL ES ver. v2.0 &amp; v3.0 </strong>option.</li>
+<li>The Dynamic Analyzer may not recognize the Emulator the first time but it will recognize it next time.</li>
+</ul>
+</li>
+</ul>
+
+  
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/2_3_release_notes.htm b/org.tizen.devtools/html/download/2_3_release_notes.htm
new file mode 100644 (file)
index 0000000..8fc6472
--- /dev/null
@@ -0,0 +1,1004 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.3 Release Notes</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#intro">Introduction</a></li>
+            <li><a href="#rev3">Tizen 2.3.0_Rev3</a></li>
+                       <li><a href="#rev2">Tizen 2.3.0_Rev2</a></li>
+                       <li><a href="#rev1">Tizen 2.3.0_Rev1</a></li>
+                       <li><a href="#Tizen_2_3_0">Tizen 2.3.0</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Tizen 2.3 Release Notes</h1>
+
+<ul>
+<li>Release Date: July 6, 2015</li>
+</ul>
+
+<h2 id="intro">Introduction</h2> 
+
+<p>Welcome to Tizen.</p>
+<p>Tizen is an open source, standards-based software platform supported by leading mobile operators, device manufacturers, and chip suppliers for multiple device categories, including smartphones, tablets, netbooks, in-vehicle infotainment devices, and smart TVs.</p>
+<p>The Tizen Platform consists of the Web framework (APIs) and Native framework (APIs).</p>
+<p>The Tizen Software Development Kit (SDK) is a comprehensive set of tools for developing Web and Native applications for Tizen. The SDK contains an install manager, IDE, tools, documents, samples and platform images for mobile and wearable profiles.</p>
+
+<h2 id="rev3">Tizen 2.3.0_Rev3</h2> 
+
+<h3>IDE and Tools</h3>
+
+<h4>Fixed Bugs</h4>
+
+<ul><li>Native IDE
+<ul><li>The compression library issue making the tpk size too big due to the defective compression has been fixed.</li>
+<li>Invalid file permission issue when unzip the tpk has been fixed. This issue can cause the application is rejected due to signing failure from Tizen seller site.</li>
+</ul></li>
+</ul>
+
+<h2 id="rev2">Tizen 2.3.0_Rev2</h2> 
+
+<h3>IDE and Tools</h3>
+
+<h4>New Features</h4>
+
+<ul>
+<li>Native UI Builder
+<ul>
+<li>The Native UI Builder is a WYSIWYG Editing tool for Tizen Native App developer. It can help the developer to develop Tizen UI Application easily.</li>
+<li>The Native UI Builder has the following features:
+<ul><li>Project Template
+<ul><li>2 Native UI Builder Application Templates are added.</li>
+</ul></li>
+<li>WYSIWYG Editor
+<ul><li>2 Native UI Builder Application Templates are added.</li>
+<li>Widget Palette.</li>
+<li>Drag-and-drop widget placement, moving, deleting, and visual layout editing.</li>
+<li>­Copy/cut/paste, and undo/redo, align, match size.</li>
+<li>­Guidelines</li>
+<li>­Preview mode</li>
+</ul></li>
+<li>Properties View
+<ul><li>Attributes editing through effective graphical UX.</li>
+<li>Creating a visual UI event binding with you event handler code and moving to the event handler code.</li>
+</ul></li>
+<li>Navigation View
+<ul><li>Showing the view thumbnail.</li>
+<li>You can switch editing view by clicking the view thumbnail.</li>
+</ul></li>
+<li>Outline View
+<ul><li>Hierarchical structure of the view.</li>
+</ul></li>
+<li>Resources View
+<ul><li>Resource management – import/copy/paste/delete resources.</li>
+<li>You can edit the resource property of the widgets using drag and drop.</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Emulator, Web simulator, Native UI Builder, Web UI Builder
+<ul><li>The qHD(540X960) resolution is additionally supported.</li>
+</ul></li>
+</ul>
+
+<h4>Changed Features</h4>
+
+<ul><li>Native IDE
+<ul><li>Building and packaging
+<ul><li>Multi-project packaging. You can develop a UI project and service or shared library projects as a package.</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h2 id="rev1">Tizen 2.3.0_Rev1</h2> 
+
+<h3>Tizen Platform Mobile Profile</h3>
+
+<h4>Web framework</h4>
+
+<h5>Changed Features</h5>
+
+<ul><li>Webkit
+<ul><li>The unit of Media Query has been changed from physical pixel to CSS pixel.</li>
+<li>Now window.screen object returns the values in which the devicePixelRatio is reflected.</li>
+</ul></li>
+</ul>
+
+<h4>Native Framework</h4>
+
+<h5>Changed Features</h5>
+
+<ul><li>Network API Module
+<ul><li>The connection_reset_profile(…) has been changed from synchronous API to asynchronous API.</li>
+<li>The behavior of NFC set activation via app control has been changed to return the result and end automatically after the operation.</li>
+<li>The package_manager_clear_cache_dir(), package_manager_clear_all_cache_dir(), package_manager_get_package_size_info() and package_manager_get_total_package_size_info() have been removed for the security reason.</li>
+<li>Bluetooth system popup has been added for phone book request and message request operations.</li>
+</ul></li>
+</ul>
+
+<h5>Fixed Bugs</h5>
+
+<ul><li>Network API Module
+<ul><li>The issue of the bluetooth pairing did not working properly on occasion has been fixed.</li>
+<li>Connection API privilege issues have been fixed.</li>
+</ul></li>
+</ul>
+
+<h3>IDE and Tools</h3>
+
+<h4>New Features</h4>
+
+<ul><li>Web UI Builder
+<ul><li>Migration
+<ul><li>Added Migration wizard for project(tizen 2.2.1).</li>
+</ul></li>
+<li>N-Screen
+<ul><li>Added Configuration Editor (UI Builder project configuration editor).</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h4>Changed Features</h4>
+
+<ul><li>Web UI Builder
+<ul><li>Page Designer
+<ul><li>Added page combo in toolbar.</li>
+<li>Added &quot;Set position&quot; in context menu.</li>
+</ul></li>
+<li>Pages View
+<ul><li>Changed page template wizard. (create, import, export template wizard).</li>
+<li>Changed context menu(&quot;Add Basic Page&quot; From &quot;Add Empty Page&quot;).</li>
+<li>The position of page name was changed to the top of the page in pages view.</li>
+</ul></li>
+<li>DataBinding view
+<ul><li>Added &quot;Set Target&quot; in toolbar of Data Model panel.</li>
+</ul></li>
+<li>N-Screen
+<ul><li>Changed devices list.</li>
+</ul></li>
+<li>Animation
+<ul><li>Added custom animation.</li>
+</ul></li>
+<li>Changed timeline icon.</li>
+</ul></li>
+</ul><ul><li>Tools
+<ul><li>Added &quot;—strip&quot; option to native &quot;package&quot; command.</li>
+<li>Removed Default Author Certificate.</li>
+<li>Added web privilege <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/internet</span>.</li>
+</ul></li>
+</ul>
+
+<h4>Fixed Bugs</h4>
+
+<ul><li>Fixed less compiler&#39;s bug that cannot compile less resources.</li>
+<li>Removed xwalk&#39;s launch command and option page.</li>
+<li>Fixed to show logs normally for the service applications.</li>
+</ul><ul><li>Emulator
+<ul><li>In Ubuntu, added warning message if host&#39;s graphic driver is invalid for emulator.(Gallium driver). Pop-up dialog is showed when.
+<ul><li>Emulator is installed.</li>
+<li>Launch emulator with emulator-manager.</li>
+</ul></li>
+<li>IntelHaxm
+<ul><li>Skip IntelHaxm installation if the same version of the driver has already been installed.</li>
+</ul></li>
+</ul></li>
+<li>Tools
+<ul><li>Added to generate .exportMap file when native project is created.</li>
+<li>Fixed rootstrap bug that causes some compile error.</li>
+</ul></li>
+<li>Web UI builder
+<ul><li>Fixed UI Builder&#39;s bug that occurred tool exception sometimes.</li>
+</ul></li>
+</ul>
+
+<h4>Known Issues</h4>
+
+<ul><li>IDE
+<ul><li>In the Mac OS 10.9 version, the File dialog button may not respond from the second time onwards:
+<ul><li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=433486" target="_blank">https://bugs.eclipse.org/bugs/show_bug.cgi?id=433486</a></li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h2 id="Tizen_2_3_0">Tizen 2.3.0</h2>  
+
+<h3>Tizen Platform Mobile Profile</h3>
+
+<h4>Web framework</h4>
+
+<h5>New Features</h5>
+
+<p>The following Mobile Web Device APIs have been added in this release to allow a richer variety of features to be implemented in mobile Web applications:</p>
+<ul><li>Web Device API</li>
+<li>The  following Mobile Web Device APIs have been added in this release to allow a richer variety of features to be implemented in mobile Web applications:
+<ul><li>Account API (tizen.account)
+<ul><li>Manages accounts within the device. For example, applications can use this API to create an account or change account information.</li>
+</ul></li>
+<li>Archive API (tizen.archive)
+<ul><li>Creates an archive file and operates on it. For example, applications can use this API to extract files from an archive or add a file to an archive.</li>
+</ul></li>
+<li>Badge API (tizen.badge)
+<ul><li>Overlays an image with the number of unread notifications for an application on the application&#39;s Home screen icon. The image is known as a badge.</li>
+</ul></li>
+<li>Bluetooth API
+<ul><li>Manages Bluetooth connections. An application must now request permission from the user to use Bluetooth. Previously, you were able to enable Bluetooth without user consent, but that API is to be deprecated soon. To request permission, you must now launch the Bluetooth settings option from within your application so that the user can choose to enable Bluetooth. Similarly, applications must no longer change a device&#39;s Bluetooth visibility, as this API is also to be deprecated.</li>
+</ul></li>
+<li>Exif API (tizen.exif)
+<ul><li>Manipulates exchangeable image file format (Exif) metadata.</li>
+</ul></li>
+<li>FM Radio API (tizen.fmradio)
+<ul><li>Manages FM radio operations, such as switching the FM radio on or off, scanning frequencies, and tuning up or down.</li>
+</ul></li>
+<li>Human Activity Monitor API (tizen.humanactivitymonitor)
+<ul><li>Provides support for pedometers, heart rate monitors (HRMs), and GPS tracking features to determine the device&#39;s geographical location and changes, such as velocity changes. It also supports the detection of &quot;wrist-up&quot; motions. For example, if a smartwatch user rotates their wrist to look at their watch screen, the application can detect this and present content on the screen.</li>
+<li>Only HRMs are supported on the Tizen 2.3 mobile and wearable Emulator.</li>
+</ul></li>
+<li>MediaKey API (tizen.mediakey)
+<ul><li>Provides methods to handle multimedia keys, such as the volume control or pause buttons on a Bluetooth headset connected to the Tizen device.</li>
+</ul></li>
+<li>Sensor API (tizen.sensorservice)
+<ul><li>Supports light, magnetic, pressure, proximity, and ultraviolet sensors.</li>
+<li>All sensor types are supported on the Tizen 2.3 mobile and wearable Emulator through the Event Injectors.</li>
+</ul></li>
+<li>Sound API (tizen.sound)
+<ul><li>Controls the sound volume level for various sound types, such as system sounds, media playback audio, notifications, and alarms. It also gets information about the sound mode of the device, such as whether it is set to the mute or vibrate mode.</li>
+</ul></li>
+</ul></li>
+<li>The following features have been added to the existing Mobile Web Device APIs in this release:
+<ul><li>Calendar API
+<ul><li>The feature to use calendars from multiple accounts has been added. This is useful because you can create, add, or remove calendars from different accounts by using their account ID.</li>
+</ul></li>
+<li>CallHistory API
+<ul><li>The device&#39;s local phone number (calling party) attribute can now be added to the call history information. This is particularly useful in dual SIM devices.</li>
+</ul></li>
+<li>Contact API
+<ul><li>The feature to use contacts from multiple accounts has been added. This is useful because you can create, add, or remove contacts from different accounts by using their account ID.</li>
+<li>The following attributes (among others) have been added for individual contacts: relationship, messenger address, contact message alert setting, and contact vibration pattern URL.</li>
+</ul></li>
+<li>Content API
+<ul><li>The &#39;isFavorite&#39; attribute has been added to the Content interface to mark favorite content.</li>
+<li>The playlist feature has been added so that you can add, remove, and update your favorite media content.</li>
+</ul></li>
+<li>Data Synchronization API
+<ul><li>From Tizen 2.3, this API is optional for Tizen mobile devices.</li>
+</ul></li>
+<li>Filesystem API
+<ul><li>The &#39;camera&#39; virtual path has been added to make it easier to access the pictures and videos taken by a device.</li>
+</ul></li>
+<li>Messaging API
+<ul><li>The feature to select which SIM card to use when sending an SMS had been added to support devices that can use multiple SIM cards.</li>
+</ul></li>
+<li>NFC API
+<ul><li>The NFC card emulation feature has been added.</li>
+<li>The feature to turn NFC on and off has been deprecated. Instead, you must launch the NFC settings option from within your application to allow the user to choose to enable NFC.</li>
+</ul></li>
+<li>Push API
+<ul><li>The feature to retrieve unread push notifications when your application is connected to a push service has been added.</li>
+</ul></li>
+<li>Secure Element API
+<ul><li>The feature to get received data from the application select command (getSelectResponse()) has been added.</li>
+</ul></li>
+<li>System Information API
+<ul><li>The new profile name enum values (MOBILE, WEARABLE) have been added to be used in the application manifest (config.xml) to indicate which device types your application can support. Note that the previous enum values (MOBILE_FULL and MOBILE_WEB in SystemInfoProfile) have been deprecated.</li>
+<li>The getCapabilities() method has been replaced with getCapability() and must be used to retrieve the device capabilities.</li>
+<li>The feature to get information about multiple system properties, such as dual SIM card capabilities, has been provided. For example, in the previous API, you were able to retrieve the information for a single SIM card only; however, now you can get an array of available SIM cards on the device.</li>
+<li>The feature to get memory state information, total memory size, and available memory size has been added. You can query the total memory on the device as well as the currently available memory in bytes.</li>
+<li>The DUID has been replaced with tizen ID, which is a randomly-generated value based on the model name.</li>
+<li>The feature to obtain the Wi-Fi MAC address information has been added.</li>
+</ul></li>
+<li>TBM Surface API
+<ul><li>The feature to get low-level graphic buffer which is provided by system has been added.</li>
+</ul></li>
+<li>Time API
+<ul><li>The feature to register and unregister callbacks to receive notifications of device time, date, or time zone changes has been added.</li>
+</ul></li>
+</ul></li>
+</ul><ul><li>Web Runtime
+<ul><li>The Dynamic Box has been enabled.
+<ul><li>Note that the Dynamic Box Viewer is only supported on the reference target device, not on the Emulator.</li>
+</ul></li>
+</ul></li>
+<li>Web UI Framework (TAU)
+<ul><li>The navigation bar winset has been added.
+<ul><li>The navigation bar with a history can be used through the &lt;nav data-role=&quot;navigation&quot;&gt; element.</li>
+</ul></li>
+<li>The select menu winset has been added.
+<ul><li>The select menu with the tizen theme can be used through the &lt;select name=&quot;select-custom-1&quot; data-native-menu=&quot;false&quot;&gt; element.</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h5>Changed Features</h5>
+
+<ul><li>Web UI Framework (TAU)
+<ul><li>The base library has been changed to TAU from jQM. TAU API use is recommended.</li>
+<li>The library JS path has been changed from tizen-web-ui-fw/{version}/js/tizen-web-ui-fw.js to lib/tau/mobile/js/tau.js.</li>
+<li>The default theme file path has been changed from tizen-web-ui-fw/{version}/theme/default/theme.css to lib/tau/mobile/theme/default/tau.css.</li>
+<li>The date-time picker and multimedia view widgets have been deprecated. Use the HTML standard instead (input, video, and audio elements).</li>
+<li>The gallery3D, split view, and virtual grid widgets have been deprecated.</li>
+</ul></li>
+</ul>
+
+<h5>Fixed Bugs</h5>
+
+<ul><li>Web UI Framework (TAU)
+<ul><li>The issue of the &#39;refresh&#39; method of the listview winset not working properly has been fixed.</li>
+<li>The broken button style has been fixed.</li>
+</ul></li>
+</ul>
+
+<h4>Native Framework</h4>
+
+<p>The Tizen platform provides a new API for native applications in Tizen 2.3, replacing the previous Tizen 2.2.1 Native API. The primary development language for native applications has changed from C++ to C. However, the C++ standard library has been provided as an open source library, so C++ can still be used to create the application logic that does not use any Tizen platform features. This big change has been made for the following reasons:</p>
+<ul><li>The Tizen native framework currently only supports the mobile profile. However, in the near future, multiple other device profiles, such as wearable and TV will be supported. A new Native API is required to ensure that the native framework is lightweight and fast to run well on both low- and high-end profiles and devices.</li>
+<li>With the new native framework, minimal porting effort is required to run native applications on multiple Tizen device profiles.</li>
+<li>Improved scalability, and fast, themeable, and easily customizable graphics are now possible by using the Enlightenment Foundation Libraries (EFL).</li>
+<li>More than 10 open source libraries are now available to 3rd party applications through the native framework. This is particularly advantageous for developers who are already familiar with some of these libraries, because they can quickly add features and use previous written code in certain cases.</li>
+</ul>
+
+<p>Note that you cannot use the new Tizen 2.3 SDK to develop native applications that have been written with the older Tizen SDKs. If you want to develop a native application written with an older Tizen SDK, rewrite your application with the new Tizen 2.3 SDK. The signature changes of Native APIs from Tizen 2.3 Beta to Tizen 2.3 release can be found from <a href="http://download.tizen.org/misc/change-log/Native%20API%20Changes.pdf" target="_blank">here</a>.</p>
+<p>The new Tizen Native API includes the following API modules and features:</p>
+
+<ul><li>Application Framework API Module
+<ul><li>Application model
+<ul><li>The UI application model.</li>
+<li>The service application model. Service applications run in the background without a graphical user interface.</li>
+</ul></li>
+<li>Application controls
+<ul><li>The framework to share application functionalities with other applications.</li>
+<li>Explicit and implicit application control resolution. This enables you to specify a specific application or give the user a choice of applications when launching another application from your application for a specific task.</li>
+</ul></li>
+<li>Data controls
+<ul><li>The framework to exchange data between applications by allowing an application to query the public database of another application that has opted to be a data provider.</li>
+</ul></li>
+<li>Package management
+<ul><li>Retrieving information about installed packages.</li>
+<li>Application-specific metadata in the application manifest.</li>
+<li>Package filtering and package application filtering to get an installed package list more effectively.</li>
+<li>Retrieving package information from a specific Tizen package file.</li>
+</ul></li>
+<li>Message port
+<ul><li>Sending messages to the message ports of another application.</li>
+<li>Receiving messages from other applications.</li>
+<li>Trusted communication between applications. This is allowed only if both applications are signed with the same certificate.</li>
+</ul></li>
+<li>Notification
+<ul><li>Text notifications on the status bar.</li>
+<li>Ongoing notifications, such as when a download is in progress.</li>
+<li>Additional notification functionality to customize each notification message. For example, the notification title, icon, and sound can be customized. Furthermore, thumbnail and multiline-type notifications are supported.</li>
+<li>Removing individual notifications.</li>
+</ul></li>
+<li>Badge
+<ul><li>Overlaying an image with the number of unread notifications for that application on the application&#39;s icon.</li>
+<li>Setting and getting the value and visibility of the badge.</li>
+</ul></li>
+<li>Bundle
+<ul><li>The small string-based dictionary abstract data type.</li>
+<li>Creating and managing a small dictionary for passing information among modules or processes through inter-process communication methods, such as message port.</li>
+</ul></li>
+</ul></li>
+<li>Context API Module
+<ul><li>Activity recognition
+<ul><li>Recognizing user activities, such as walking, running, or being in a vehicle with a device.</li>
+<li>Reacting to recognized user activities.</li>
+</ul></li>
+<li>Gesture recognition
+<ul><li>Recognizing gestures, such as tap, shake, snap, and tilt.</li>
+<li>Reacting to recognized user gestures.</li>
+</ul></li>
+</ul></li>
+<li>Content API Module
+<ul><li>Media content
+<ul><li>Managing, inserting, updating, or removing content information, such as file attribute metadata, playlists, and custom data.</li>
+<li>Retrieving all content associated with a media directory when searching for content information.</li>
+<li>Extracting metadata, such as EXIF and ID3 tags, from images, audio, and video files.</li>
+<li>Scanning for a file or directory to synchronize content information with the local content database.</li>
+<li>Enabling and disabling content database change notifications.</li>
+</ul></li>
+<li>Download manager
+<ul><li>Downloading content using HTTP.</li>
+<li>Enabling and disabling download notifications.</li>
+<li>Setting the allowed network type.</li>
+<li>Managing the HTTP header fields.</li>
+</ul></li>
+</ul></li>
+<li>Messaging API Module
+<ul><li>Message management
+<ul><li>Creating, sending, and receiving SMS messages.</li>
+<li>Searching for SMS and MMS messages in the inbox, sentbox, and outbox individually or in all message boxes together.</li>
+<li>Sending and receiving WAP push messages.</li>
+</ul></li>
+<li>Email
+<ul><li>Creating, sending, and receiving email messages.</li>
+<li>Setting email attributes, such as the email subject or recipients.</li>
+</ul></li>
+<li>Push
+<ul><li>Connecting to a push service.</li>
+<li>Receiving push notification data.</li>
+</ul></li>
+</ul></li>
+<li>Base API Module
+<ul><li>Calendar data (utils-i18n)
+<ul><li>Converting the date, time, and calendar fields using the Gregorian calendar (used by most of the world), depending on the device locale.</li>
+<li>Managing time zone information with daylight saving time (DST).</li>
+</ul></li>
+<li>Formatting data (utils-i18n)
+<ul><li>Formatting numbers, currencies, dates, and time depending on the device locale.</li>
+</ul></li>
+<li>Data types and collections
+<ul><li>Supporting data types and collections provided by the Eglibc, Glib, and C++ Standard Library open source libraries.</li>
+</ul></li>
+<li>Utility functions
+<ul><li>Supporting utility functions provided by the Glib, C++ Standard Library, and Minizip open source libraries.</li>
+</ul></li>
+<li>Threads and synchronization mechanisms
+<ul><li>Supporting thread and synchronization mechanisms provided by the Glib open source library.</li>
+</ul></li>
+</ul></li>
+<li>I/O API Module
+<ul><li>I/O support by open source libraries, such as Eglibc, Glib, Sqlite, and C++ Standard Library
+<ul><li>Supporting file and directory functions provided by the Eglibc and Glib open source libraries.</li>
+<li>Supporting database features provided by Sqlite3.</li>
+</ul></li>
+</ul></li>
+<li>Multimedia API Module
+<ul><li>Camera
+<ul><li>Displaying a live preview and capturing a still image.</li>
+</ul></li>
+<li>Image util
+<ul><li>Decoding and encoding JPEG images. Tools, such as crop, resize, and rotate, are also provided to transform images.</li>
+</ul></li>
+<li>Metadata extractor
+<ul><li>Extracting metadata information from a media file.</li>
+</ul></li>
+<li>Player and recorder
+<ul><li>Playing audio and video from media files that are stored on a device or streamed over a network.</li>
+<li>Providing audio and video pre-processing filter APIs. Attributes, such as recording filename and file format, can be configured.</li>
+<li>Playing DTMF tones (with the tone player).</li>
+<li>Playing Waveform Audio File (WAV) format files using the WAV player.</li>
+<li>Providing low-level audio playback and capture.</li>
+<li>Recording audio and video.</li>
+</ul></li>
+<li>Sound manager
+<ul><li>Checking and controlling output volumes.</li>
+<li>Enabling and disabling volume change notifications.</li>
+<li>Determining sound session policies, such as how to handle sound session interruptions.</li>
+</ul></li>
+<li>Video util
+<ul><li>Transcoding or converting media files from one encoding to another.</li>
+</ul></li>
+<li>Media codec
+<ul><li>Encoding and decoding audio and video data by having direct access to the media codec on the device.</li>
+</ul></li>
+<li>Media tool
+<ul><li>Handling audio and video packet buffers. These buffers are utilized by the Multimedia API modules.</li>
+</ul></li>
+<li>Radio
+<ul><li>Starting and stopping radio.</li>
+<li>Seeking radio frequencies.</li>
+<li>Scanning radio signals.</li>
+<li>Getting the radio state.</li>
+</ul></li>
+</ul></li>
+<li>Network API Module
+<ul><li>Bluetooth
+<ul><li>Support for the following:
+<ul><li>GAP (Generic Access Profile)</li>
+<li>Audio Profiles (HFP, HSP, and A2DP)</li>
+<li>GATT(Generic Attribute Profile)</li>
+<li>OPP (Object Push Profile)</li>
+<li>HID (Human Interface Device Profile)</li>
+<li>HDP (Health Device Profile)</li>
+<li>SPP (Serial Port Profile)</li>
+</ul></li>
+<li>Note that Bluetooth features are only supported on reference target devices, not on the SDK Emulator.</li>
+</ul></li>
+<li>Connection management
+<ul><li>Providing the custom connection management service API.</li>
+<li>Selecting a preferred connection.</li>
+<li>Providing an internet protocol (IP) address that represents a network resource or service.</li>
+</ul></li>
+<li>Wi-Fi
+<ul><li>Managing the local Wi-Fi device.</li>
+<li>Note that Wi-Fi features are only supported on reference target devices, not on the SDK Emulator.</li>
+</ul></li>
+<li>Socket and HTTP
+<ul><li>Supporting socket and HTTP features provided by the openSSL and Curl open source libraries.</li>
+</ul></li>
+</ul></li>
+<li>Security API Module
+<ul><li>Supporting a wide range of cryptographic algorithms, certificate handling mechanisms, hash functions, and key management algorithms covered by the openSSL open source library</li>
+<li>Key manager
+<ul><li>The secure repository (protected by a user&#39;s password) for keys, certificates, and sensitive data of the users and their applications.</li>
+</ul></li>
+<li>Privilege info
+<ul><li>Reading information of a given privilege name.</li>
+</ul></li>
+<li>Smack
+<ul><li>A significant number of rules have been revised to allow required access only.</li>
+<li>Supporting better access control in the kernel space with Map Smack rules with native or Web privileges.</li>
+</ul></li>
+</ul></li>
+<li>Social API Module
+<ul><li>Account manager
+<ul><li>Managing the account information from multiple accounts.</li>
+<li>Accessing account and account provider information.</li>
+</ul></li>
+<li>Contacts
+<ul><li>Managing and searching contacts in the device storage.</li>
+<li>Importing and exporting vCard files.</li>
+<li>Aggregating contacts.</li>
+<li>Managing user profiles.</li>
+<li>Providing bulk operations for adding, updating, and removing contacts.</li>
+<li>Storing application launch data in contacts.</li>
+<li>Providing extra categories for data.</li>
+</ul></li>
+<li>Calendar
+<ul><li>Managing and searching personal schedules and task information in the device storage.</li>
+<li>Importing and exporting vCalendar files.</li>
+<li>Updating an event instance.</li>
+<li>Providing absolute time for reminders.</li>
+</ul></li>
+</ul></li>
+<li>System API Module
+<ul><li>Device
+<ul><li>Listening and handling events for various devices, such as battery, display, haptic, led, and power services.</li>
+</ul></li>
+<li>Dlog
+<ul><li>Sending and filtering log output from the Dlog service.</li>
+</ul></li>
+<li>Storage
+<ul><li>Providing information, such as total available space of internal and external storages.</li>
+<li>Getting a path for the media directory.</li>
+</ul></li>
+<li>Runtime info
+<ul><li>Providing runtime information, such as hardware availability. For example, obtaining information about whether a USB device is connected.</li>
+</ul></li>
+<li>System settings
+<ul><li>Accessing various system settings, such as the current language.</li>
+</ul></li>
+<li>Sensor
+<ul><li>Starting and stopping receiving acceleration, gravity, gyroscope, humidity, light, magnetic, orientation, pressure, proximity, and temperature sensor data.</li>
+<li>Getting and setting sensor options.</li>
+</ul></li>
+<li>System info
+<ul><li>Providing system information, such as API and platform versions, supported device features, and screen dimensions.</li>
+</ul></li>
+</ul></li>
+<li>Telephony API Module
+<ul><li>Telephony information
+<ul><li>Getting information on the current call type, status, and event.</li>
+<li>Getting information on the current network, such as the cell ID, LAC, and PLMN.</li>
+<li>Getting information on the current network status, such as the availability of the call and data services and roaming.</li>
+<li>Getting information on the inserted SIM card.</li>
+</ul></li>
+</ul></li>
+<li>UI API Module
+<ul><li>EFL (UI core)
+<ul><li>UI controls
+<ul><li>Providing containers, such as forms, panels, split panels, and windows, which can be used to hold different UI components.</li>
+<li>Providing windows, such as frames, pop-ups, and message boxes, which can be used to support layered display surfaces for UI components.</li>
+<li>Providing UI components for user interaction, such as buttons, lists, grids, panes, labels, sliders, tab bars, and various date, time, and color pickers.</li>
+</ul></li>
+<li>Scalable UI
+<ul><li>Developing and migrating multi-resolution applications with utilities, such as the layout manager, logical coordinates, and automatic resource selection.</li>
+</ul></li>
+<li>Themes
+<ul><li>Providing a set of themes. Each application can select a theme to use.</li>
+</ul></li>
+<li>Effects
+<ul><li>Providing 3D effect animations, such as page flipping and various rotations.</li>
+</ul></li>
+<li>Multi-point touch and gestures
+<ul><li>Providing multi-point touch events and touch gestures.</li>
+</ul></li>
+<li>Scene management
+<ul><li>Managing form life-cycles, and making transitions between forms or panels easier and smoother.</li>
+</ul></li>
+<li>Animation
+<ul><li>Providing key frame-based animation of UI controls, such as view or panel transitions.</li>
+</ul></li>
+<li>SW accessibility
+<ul><li>Providing a container for the customization of the screen reader functionality for the visually handicapped users.</li>
+</ul></li>
+<li>Focused UI
+<ul><li>Displaying and moving the UI control focus by touch gestures and the HW keyboard.</li>
+</ul></li>
+<li>2D graphics
+<ul><li>Providing platform-independent 2D graphics.</li>
+<li>Providing graphics rendering methods and data structures.</li>
+<li>Providing floating point matrix and vector manipulation functions.</li>
+</ul></li>
+<li>3D graphics
+<ul><li>Supporting OpenGL&reg; ES 1.1 and 2.0, which are subsets of the OpenGL&reg; 3D graphics API that has been designed for mobile devices.</li>
+<li>Supporting OpenGL rendering on drawing canvasses.</li>
+</ul></li>
+</ul></li>
+<li>Tizen buffer management
+<ul><li>Providing a low-level graphics buffer.</li>
+<li>Getting the format list supported by the system.</li>
+<li>Accessing the surface with the access type.</li>
+<li>Supporting multiple plane graphic buffers.</li>
+<li>Getting information about surface and planes.</li>
+</ul></li>
+</ul></li>
+<li>UIX
+<ul><li>Speech-To-Text (STT) service to recognize text from voice</li>
+<li>Text-To-Speech (TTS) service to synthesize voice from text and play synthesized sound data</li>
+</ul></li>
+<li>Web API Module
+<ul><li>The Tizen Native API provides EFL WebKit APIs for:
+<ul><li>Web browsing
+<ul><li>Loading and rendering a page from a network or local storage.</li>
+</ul></li>
+<li>Page navigation list
+<ul><li>Listing the visited pages.</li>
+</ul></li>
+<li>Page control
+<ul><li>Getting the size of a Web page.</li>
+<li>Scrolling a Web page.</li>
+<li>Clearing the navigation history.</li>
+</ul></li>
+<li>Webview configuration settings
+<ul><li>Managing features, such as enable JavaScript, user agent, load image, encoding, and font size.</li>
+<li>Providing private browsing control.</li>
+</ul></li>
+<li>Cookie and cache control
+<ul><li>Clearing the cache and cookies.</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Open Source Libraries
+<ul><li>The following open source libraries are additionally supported in the 2.3 release:
+<ul><li>libEXIF (0.6.21): Accessing EXIF meta information in image files.</li>
+<li>Json-glib (0.10.4): Manipulating JSON documents.</li>
+<li>Glib (2.32.3): Basic programming facilities.</li>
+<li>Curl (7.28.1_24): Client side URL data transfer library.</li>
+<li>libXML2 (2.7.8): Parsing XML documents.</li>
+<li>Fontconfig (2.9.0) and Freetype (2.4.9): Rendering text and fonts.</li>
+<li>Minizip (1.2.5): Processing files in the ZIP format.</li>
+<li>Sqlite (3.7.13): Lightweight SQL database.</li>
+<li>Cairo (1.12.14): 2D graphics library.</li>
+<li>openssl (1.0.1g_1): Library for basic cryptographic functions.</li>
+<li>libOAuth (0.9.4): Open standard for authorization.</li>
+</ul></li>
+</ul></li>
+</ul><p>The new Tizen Native API does not support the following features in the 2.3 release (but they are expected in a future release):</p>
+<ul><li>Image recognition and QR code recognition (Tizen::Ui in the 2.2.1 Native API)</li>
+<li>Quick Panel Frame and Dynamic Box (Tizen::Shell in the 2.2.1 Native API)</li>
+<li>Serial port (Tizen::System in the 2.2.1 Native API)</li>
+<li>IME and downloadable IME (Tizen::UI in the 2.2.1 Native API)</li>
+</ul>
+
+<h3>Tizen Platform Wearable Profile</h3>
+
+<p>The wearable profile provides a complete implementation of the Web API optimized for wearable devices. It includes the WebKit, a layout engine designed to enable Web browsers to render Web pages. It also provides a runtime for Web applications.</p>
+
+<h4>Web Framework</h4>
+
+<h5>New Features</h5>
+
+<ul><li>Web Device API</li>
+</ul><ul><li>The following Wearable Web Device APIs have been added in this release to allow a richer variety of features to be implemented in wearable Web applications: 
+<ul><li>Badge API (tizen.badge)
+<ul><li>Overlays an image with the number of unread notifications for an application on the application&#39;s Home screen icon. The image is known as a badge.</li>
+</ul></li>
+<li>Human Activity Monitor API (tizen.humanactivitymonitor)
+<ul><li>Provides support for pedometers, heart rate monitors (HRMs), and GPS tracking features to determine the device&#39;s geographical location and changes, such as velocity changes. It also supports the detection of &quot;wrist-up&quot; motions. For example, if a smartwatch user rotates their wrist to look at their watch screen, the application can detect this and present content on the screen.</li>
+<li>Only HRMs are supported on the Tizen 2.3 mobile and wearable Emulator.</li>
+</ul></li>
+<li>MediaKey API (tizen.mediakey)
+<ul><li>Provides methods to handle multimedia keys, such as the volume control or pause buttons on a Bluetooth headset connected to the Tizen device.</li>
+</ul></li>
+<li>Sensor API (tizen.sensorservice)
+<ul><li>Supports light, magnetic, pressure, proximity, and ultraviolet sensors.</li>
+<li>All sensor types are supported on the Tizen 2.3 mobile and wearable Emulator through the Event Injectors.</li>
+</ul></li>
+<li>Sound API (tizen.sound)
+<ul><li>Controls the sound volume level for various sound types, such as system sounds, media playback audio, notifications, and alarms. It also gets information about the sound mode of the device, such as whether it is set to the mute or vibrate mode.</li>
+</ul></li>
+</ul></li>
+<li>The following features have been added to the existing Wearable Web Device APIs in this release, in addition to new features in the Alarm, Application, Package, Download, Message port, Power, and System setting API modules:
+<ul><li>Content API
+<ul><li>The &#39;isFavorite&#39; attribute has been added to the Content interface to mark favorite content.</li>
+<li>The playlist feature has been added so that you can add, remove, and update your favorite media content.</li>
+</ul></li>
+<li>Filesystem API
+<ul><li>The &#39;camera&#39; virtual path has been added to make it easier to access the pictures and videos taken by a device.</li>
+</ul></li>
+<li>System Information API
+<ul><li>The new profile name enum values (MOBILE, WEARABLE) have been added to be used in the application manifest (config.xml) to indicate which device types your application can support. Note that the previous enum values (MOBILE_FULL and MOBILE_WEB in SystemInfoProfile) have been deprecated.</li>
+<li>The getCapabilities() method has been replaced with getCapability() and must be used to retrieve the device capabilities.</li>
+<li>The feature to get information about multiple system properties, such as dual SIM card capabilities, has been provided. For example, in the previous API, you were able to retrieve the information for a single SIM card only; however, now you can get an array of available SIM cards on the device.</li>
+<li>The feature to get memory state information, total memory size, and available memory size has been added. You can query the total memory on the device as well as the currently available memory in bytes.</li>
+<li>The DUID has been replaced with tizen ID, which is a randomly-generated value based on the model name.</li>
+<li>The feature to obtain the Wi-Fi MAC address information has been added.</li>
+</ul></li>
+<li>Time API
+<ul><li>The feature to register and unregister callbacks to receive notifications of device time, date, or time zone changes has been added.</li>
+</ul></li>
+</ul></li>
+<li>Web Runtime
+<ul><li>3 new application types have been added to the 2.3 wearable profile (WebIME, ClockWidget, and Web Service Application):
+<ul><li>The following configuration elements have been added to support the Web IME application:
+<ul><li>&lt;tizen:ime&gt;, &lt;tizen:uuid&gt;, &lt;tizen:languages&gt;, and &lt;tizen:language&gt;</li>
+</ul></li>
+<li>Web service application type is provided to support background running without the UI. The following configuration element has been added to support the Web service application:
+<ul><li>&lt;tizen:service&gt;</li>
+</ul></li>
+<li>The ClockWidget application type is provided to customize the Home screen. The following configuration element has been added to support the ClockWidget application:
+<ul><li>&lt;tizen:category name=&quot;<span style="font-family: Courier New,Courier,monospace">http://tizen.org/category/wearable_clock</span>&quot; /&gt;</li>
+</ul></li>
+</ul></li>
+<li>The Web Dynamic Box has been added to provide content on the Home screen:
+<ul><li>The following configuration elements have been added to support Web Dynamic Box:
+<ul><li>&lt;tizen:app-widget&gt;</li>
+</ul></li>
+</ul></li>
+<li>The &lt;tizen:category&gt; element has been added to define the categories to which an application belongs.</li>
+<li>The application ID constraint has been added to the Web application packages (widgets):
+<ul><li>Once the application has been published, the ID cannot be changed.</li>
+</ul></li>
+</ul></li>
+<li>Web UI Framework (TAU)
+<ul><li>A new Web UI framework, called TAU, has been added to the 2.3 wearable profile. This JS framework is written to optimize the application launching time based on pure JavaScript replacing JQueryMobile.
+<ul><li>Page navigation and basic event handling support as pure JavaScript library have been added.</li>
+<li>CSS themes and resources for reference Web UI widgets are supported:
+<ul><li>2 resolutions are supported: 320x320 and 360x480</li>
+</ul></li>
+<li>Advanced widgets, including virtual list, indexed scroll, and swipelist, have been added.</li>
+<li>Reflection of the system font change is supported.</li>
+<li>Widget test application for the wearable UI has been added.</li>
+</ul></li>
+</ul></li>
+<li>Webkit
+<ul><li>The layout engine of the 2.3 wearable profile is based on WebKit2 and its APIs are selected to support typical uses for a wearable device.
+<ul><li>W3C/HTML5 specifications support:
+<ul><li>DOM/Media/Graphics: HTML5 audio/video element, HTML5 Forms (Partial), Session History API, DOM/JS-related HTML5 enhancements, iframe sandbox attribute, HTML5 2D Canvas, Web Speech (TTS only), and Scalable Vector Graphics.</li>
+<li>CSS3: CSS3 2D Transforms (H/W accelerated), CSS3 3D Transforms (H/W accelerated), CSS3 Animations (H/W accelerated), CSS3 Transitions (H/W accelerated), CSS3 Colors, CSS3 Backgrounds and Borders (Partial), CSS3 Flexible Box Layout (Partial), and CSS3 User Interface (Partial).</li>
+<li>Device: Touch Events, CSS3 Media Queries (Partial), Vibration API, getUserMedia API, Battery Status, Device Orientation Events, and Geolocation.</li>
+<li>Communication: Network access including XHR, and Web Socket.</li>
+<li>Security: iframe sandbox and CSP1.0 (Partial).</li>
+<li>Storage: Web Storage, File Reader API, and Indexed DB API.</li>
+<li>Performance: Web Worker (Partial) and Page visibility API.</li>
+</ul></li>
+<li>Changes in W3C APIs:
+<ul><li>Page visibility API: the &quot;webkit&quot; prefix has been removed: webkitvisibilitychange -&gt; visibilitychange</li>
+<li>File Reader API: BlobBuilder has been deprecated and replaced by the Blob object</li>
+<li>The indexed DB flag change: multientry -&gt; multiEntry</li>
+</ul></li>
+<li>Khronos specifications support:
+<ul><li>WebGL and Typed Arrays.</li>
+</ul></li>
+<li>W3C Widget specifications support
+<ul><li>Packaging and Configuration, Digital Signing, and Widget Interface.</li>
+</ul></li>
+<li>Camera API support
+<ul><li>Providing, for example, camera preview, camera setting changes (such as picture size and format), image capture, and video recording.</li>
+<li>Recording audio.</li>
+<li>Supporting audio recording formats: AMR and 3GP.</li>
+</ul></li>
+<li>HTML5 security policy
+<ul><li>The behavior on privileges of the HTML5 APIs has been changed.</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h3>IDE and Tools</h3>
+
+<h4>New Features</h4>
+
+<ul><li>Common
+<ul><li>Provides the multi-profile development environment with a new wearable profile.</li>
+<li>Upgrades the Eclipse version to Kepler(4.3) SR2.</li>
+<li>Provides the Eclipse theme for Tizen optionally (configured in Preferences &gt; General &gt; Appearance in the Tizen IDE).</li>
+</ul></li>
+<li>Web IDE and tools
+<ul><li>Adds a new wearable profile for wearable application development.
+<ul><li>Project Wizard provides wearable template and samples.</li>
+</ul></li>
+<li>Adds a new Command Bar tool which provides convenient command and is integrated with the IDE.</li>
+<li>Adds the Javascript unit testing tool based on QUnit.</li>
+<li>Provides Android keystore certificate support when generating a certificate request.</li>
+<li>Connection Explorer
+<ul><li>Adds a new Remote Device Manager tool in the Connection Explorer, providing management features for remotely connected devices.</li>
+</ul></li>
+<li>HTML Editor
+<ul><li>Adds the breadcrumb, advanced content assist, and hover in the HTML Editor.</li>
+<li>Adds a quick-fix when a file name included in HTML is changed (like .js or .png).</li>
+</ul></li>
+<li>Supports compiling LESS (dynamic stylesheet language) and Coffeescript (language that compiles into Javascript).</li>
+<li>Javascript Editor
+<ul><li>Supports content assist for some string literal parameters.</li>
+<li>Supports hyperlink for some string literal parameters.</li>
+<li>Supports a quick-fix when the file name included in Javascript is changed (like .html, .png, or .css).</li>
+</ul></li>
+<li>Configuration Editor
+<ul><li>Adds the background-support setting in the Tizen tab.</li>
+</ul></li>
+</ul></li>
+<li>Web UI Builder
+<ul><li>Supports the new Tizen Web UI framework (TAU).</li>
+<li>Adds a new Animator tool providing CSS animation to widgets.</li>
+<li>Adds a new Data Binding tool providing 2-way binding between the data and view. Currently 6 types of data source and 16 bindable widgets are supported for TAU.</li>
+<li>Adds a new Resources View tool providing easy editing for setting the image property.</li>
+<li>Adds a new Widget Snippet function which makes a widget contain some widgets.</li>
+<li>Supports Page Template in the Page View making a template.</li>
+<li>Adds a new N-Screen tool providing easy editing for a UI of a predefined resolution.</li>
+<li>Adds a new CSS Selector tool supporting the CSS Selector to add to the widget from the live DOM.</li>
+</ul></li>
+<li>Native IDE
+<ul><li>Adds the native IDE for the Tizen version 2.3, supporting native application development.</li>
+<li>Building and packaging
+<ul><li>Supports TPK (Tizen Package File) packaging.</li>
+<li>Supports author and distributor signing.</li>
+<li>Supports multi-process application packaging. Multi-process applications enable a hybrid architecture combining UI and service applications.</li>
+<li>Supports the LLVM 3.4 and GCC tool chains.</li>
+</ul></li>
+<li>Adds the PO file editor for i18n.</li>
+<li>Adds EFL Enventor only in Ubuntu. It supports editing and previewing edc source files.</li>
+<li>Adds the Potential Bug Detector static analysis tool to help to find bugs in applications.</li>
+</ul></li>
+<li>Dynamic Analyzer
+<ul><li>Changes the data collecting mechanism.</li>
+<li>Adds Network Analysis.</li>
+<li>Adds OpenGL Analysis.</li>
+<li>Adds Energy Usage in the Time line view.</li>
+</ul></li>
+<li>Emulator
+<ul><li>Adds a new Emulator Control Panel (ECP) tool to replace the Event Injector in the previous version.
+<ul><li>Supports the device manager, such as Device Tree and Network.</li>
+<li>Supports virtual inputs, such as Gesture.</li>
+<li>Supports uninstalling applications.</li>
+<li>Supports message synchronization between the ECP (UI and CLI tools) and Emulator.</li>
+<li>Adds the feature to enable/disable host directory sharing in runtime.</li>
+<li>Adds sensors: pressure, ultraviolet, and heart rate monitor.</li>
+<li>Adds the &quot;altitude&quot; and &quot;horizontal accuracy&quot; location input values on the manual event injection settings.</li>
+</ul></li>
+<li>Adds the EventCast tool enabling you to inject sensor and touch events more intuitively by means of a real target.</li>
+</ul></li>
+<li>Tools
+<ul><li>Adds new Command Line Tools.</li>
+</ul></li>
+</ul>
+
+<h4>Changed Features</h4>
+
+<ul><li>Install Manager
+<ul><li>Supports multi-profile installation.</li>
+<li>Provides UI renewal and improved UX.</li>
+<li>Offers improved performance.</li>
+</ul></li>
+<li>Web IDE and tools
+<ul><li>Certificate
+<ul><li>Disables the generating author certificate button at Security Profile of preferences, since the process generating the author certificate has changed.</li>
+<li>Provides a toolbar for generating a certificate request and registering a certificate.</li>
+</ul></li>
+<li>Connection Explorer
+<ul><li>Provides UI renewal and improved UX.</li>
+</ul></li>
+<li>Project Explorer
+<ul><li>Shows the platform profile information with the project name.</li>
+<li>Shows the content of the wgt file directly.</li>
+</ul></li>
+<li>Build and packaging
+<ul><li>Separates the packaging process from the build process.</li>
+<li>Provides the context menu of &#39;Build Package&#39;.</li>
+<li>Provides the &#39;package&#39; property and removes the &#39;Build&#39; property.</li>
+<li>Optimizes Web resources (html, js, css, png) when the &#39;Build Package&#39; command is executed.</li>
+</ul></li>
+<li>Web UI Builder
+<ul><li>Changes the programming model for the new UI FW TAU.</li>
+<li>Enhances the Properties View.</li>
+</ul></li>
+</ul></li>
+<li>Emulator
+<ul><li>Menu
+<ul><li>Deletes the host keyboard menu from the pop-up menu and the Emulator Control Panel. From now on, the Tizen platform automatically recognizes a host keyboard when a key event is injected.</li>
+</ul></li>
+<li>Emulator Manager
+<ul><li>Changes the HD (720x1280) resolution density to 306.</li>
+</ul></li>
+<li>Emulator Control Panel
+<ul><li>Enables the sensor, location, and telephony events in the wearable Emulator.</li>
+<li>Changes the marking map injection from a mouse-double-click to a mouse-left-click on Location.</li>
+<li>Changes the moving map from a mouse drag to mouse-left-click on Location.</li>
+</ul></li>
+</ul></li>
+<li>Dynamic Analyzer
+<ul><li>Changes the settings dialog UX to select one of the feature templates.</li>
+</ul></li>
+</ul>
+
+<h4>Fixed Bugs</h4>
+
+<ul><li>IDE
+<ul><li>Packaging
+<ul><li>The OutOfMemoryError at the signing process on a project having large resources has been fixed.</li>
+<li>The bug at the signing process in case of a Unicode resource name on the project has been fixed.</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h4>Known Issues</h4>
+
+<ul><li>IDE and Tools
+<ul><li>Because the old workspace metadata is incompatible due to the major upgrading effect, an IDE crash can occur. Create new workspace to avoid the problem.</li>
+<li>The Connection Explorer view sometime does not show all running Emulator information.</li>
+</ul></li>
+<li>Web UI Builder
+<ul><li>The text functions (ellipsis and line-break) are sometimes displayed differently with an actual operation.</li>
+<li>Some TAU widgets are not included in the widget palette nor work properly.</li>
+<li>The selected resolution in the N-Screen View is not applied on the application.</li>
+<li>In some cases, the designer does not work properly if you modify the HTML code directly.</li>
+<li>The scroll bar is displayed in the middle of the content area in the Simulator, if the animation applies to the content.</li>
+<li>The animation does not work properly with N-Screen.</li>
+<li>The IDE creates a console window when an internal browser has been created in Windows 8.</li>
+</ul></li>
+<li>Emulator
+<ul><li>On Windows&reg;, depending on your OS theme (such as non-Aero themes and Windows XP themes), a display surface can be erased for a while if the Emulator window is obscured by another window. If you click the Emulator window, the display surface works correctly again.</li>
+<li>The Emulator skin cannot be drawn properly on Ubuntu&trade;, if the graphics driver is not installed or an old version is installed. To fix this issue, upgrade the graphics driver.</li>
+<li>When the disk storage is full, various incorrect operations can occur.</li>
+<li>To use the Tizen Emulator, you need, for example, an Intel VTx supported by the CPU, and the latest vendor-provided version of the graphic card driver. Check the prerequisites for the Tizen Emulator from:
+<ul><li><a href="sdk_prerequisites.htm#emulator">Emulator Requirements</a></li>
+<li>On Ubuntu, if the host machine is using Nvidia Optimus&trade; technology, you can set the Tizen Emulator to run with your Nvidia&reg; graphics card through the bumblebee project: <a href="https://wiki.ubuntu.com/Bumblebee" target="_blank">https://wiki.ubuntu.com/Bumblebee</a></li>
+</ul></li>
+<li>The browser for the map of the location tab does not support HTTPS/SSL certificate on Ubuntu.</li>
+<li>Sound control does not work properly in wearable settings application.</li>
+</ul></li>
+<li>IDE
+<ul><li>In the Mac OS 10.9 version, the File dialog button may not respond from the second time onwards:
+<ul><li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=433486" target="_blank">https://bugs.eclipse.org/bugs/show_bug.cgi?id=433486</a></li>
+</ul></li>
+</ul></li>
+</ul>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/2_3_rev1_SDK_release_notes.htm b/org.tizen.devtools/html/download/2_3_rev1_SDK_release_notes.htm
new file mode 100644 (file)
index 0000000..0246c9c
--- /dev/null
@@ -0,0 +1,225 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.3 Rev1 SDK Release Notes</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#profiles">Tizen Platform Mobile Profile</a></li>
+            <li><a href="#ide_tools">IDE and Tools</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Tizen 2.3 Rev1 SDK Release Notes</h1>
+
+<ul>
+<li>Release Date: December 2, 2014</li>
+</ul>
+
+<h2 id="profiles">Tizen Platform Mobile Profile</h2>
+
+<h3>Web Framework</h3>
+
+<h4>Changed Features</h4>
+
+<ul>
+<li>Webkit
+<ul>
+<li>The unit of Media Query has been changed from physical pixel to CSS pixel.</li>
+<li>Now window.screen object returns the values in which the devicePixelRatio is reflected.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Native Framework</h3>
+
+<h4>Changed Features</h4>
+
+<ul>
+<li>Network API Module
+<ul>
+<li>The connection_reset_profile(…) has been changed from synchronous API to asynchronous API.</li>
+<li>The behavior of NFC set activation via app control has been changed to return the result and end automatically after the operation.</li>
+<li>The package_manager_clear_cache_dir(), package_manager_clear_all_cache_dir(), package_manager_get_package_size_info() and package_manager_get_total_package_size_info() have been removed for the security reason.</li>
+<li>Bluetooth system popup has been added for phone book request and message request operations.</li>
+</ul>
+</li>
+</ul>
+
+<h4>Fixed Bugs</h4>
+
+<ul>
+<li>Network API Module
+<ul>
+<li>The issue of the bluetooth pairing did not working properly on occasion has been fixed.</li>
+<li>Connection API privilege issues have been fixed.</li>
+</ul>
+</li>
+</ul>
+
+<h2 id="ide_tools">IDE and Tools</h2>  
+
+<h3>New Features</h3>
+
+<ul>
+<li>Web UI Builder
+<ul>
+<li>Migration
+<ul>
+<li>Added Migration wizard for project(tizen 2.2.1).</li>
+</ul>
+</li>
+<li>N-Screen
+<ul>
+<li>Added Configuration Editor (UI Builder project configuration editor).</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+<h3>Changed Features</h3>
+
+<ul>
+<li>Web UI Builder
+<ul>
+<li>Page Designer
+<ul>
+<li>Added page combo in toolbar.</li>
+<li>Added &quot;Set position&quot; in context menu.</li>
+</ul>
+</li>
+<li>Pages View
+<ul>
+<li>Changed page template wizard. (create, import, export template wizard).</li>
+<li>Changed context menu(&quot;Add Basic Page&quot; From &quot;Add Empty Page&quot;).</li>
+<li>The position of page name was changed to the top of the page in pages view.</li>
+</ul>
+</li>
+<li>DataBinding view
+<ul>
+<li>Added &quot;Set Target&quot; in toolbar of Data Model panel.</li>
+</ul>
+</li>
+<li>N-Screen
+<ul>
+<li>Changed devices list.</li>
+</ul>
+</li>
+<li>Animation
+<ul>
+<li>Added custom animation.</li>
+</ul>
+</li>
+<li>Changed timeline icon.</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li>Tools
+<ul>
+<li>Added &quot;—strip&quot; option to native &quot;package&quot; command.</li>
+<li>Removed Default Author Certificate.</li>
+<li>Added web privilege <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/internet</span>.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Fixed Bugs</h3>
+
+<ul>
+<li>Fixed less compiler&#39;s bug that cannot compile less resources.</li>
+<li>Removed xwalk&#39;s launch command and option page.</li>
+<li>Fixed to show logs normally for the service applications.</li>
+</ul>
+<ul>
+<li>Emulator
+<ul>
+<li>In Ubuntu, added warning message if host&#39;s graphic driver is invalid for emulator.(Gallium driver). Pop-up dialog is showed when.
+<ul>
+<li>Emulator is installed.</li>
+<li>Launch emulator with emulator-manager.</li>
+</ul>
+</li>
+<li>IntelHaxm
+<ul>
+<li>Skip IntelHaxm installation if the same version of the driver has already been installed.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Tools
+<ul>
+<li>Added to generate .exportMap file when native project is created.</li>
+<li>Fixed rootstrap bug that causes some compile error.</li>
+</ul>
+</li>
+<li>Web UI builder
+<ul>
+<li>Fixed UI Builder&#39;s bug that occurred tool exception sometimes.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Known Issues</h3>
+
+<ul>
+<li>IDE
+<ul>
+<li>In the MacOS 10.9 version, the File dialog button may not respond from the second time onwards:
+<ul>
+<li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=433486" target="_blank">https://bugs.eclipse.org/bugs/show_bug.cgi?id=433486</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/2_3_rev2_SDK_release_notes.htm b/org.tizen.devtools/html/download/2_3_rev2_SDK_release_notes.htm
new file mode 100644 (file)
index 0000000..12eb276
--- /dev/null
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.3 Rev2 SDK Release Notes</title>
+</head>
+
+<body class="no-toc" onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation"></div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<div id="profile"><p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p></div>
+
+<h1>Tizen 2.3 Rev2 SDK Release Notes</h1>
+
+<ul>
+<li>Release Date: February 13, 2015</li>
+</ul>
+
+<h2 id="ide_tools">IDE and Tools</h2>
+
+<h3>New Features</h3>
+
+<ul>
+<li>Native UI Builder
+<ul>
+<li>The Native UI Builder is a WYSIWYG Editing tool for Tizen Native App developer. It can help the developer to develop Tizen UI Application easily.</li>
+<li>The Native UI Builder has the following features:
+<ul>
+<li>Project Template
+<ul>
+<li>2 Native UI Builder Application Templates are added.</li>
+</ul>
+</li>
+<li>WYSIWYG Editor
+<ul>
+<li>2 Native UI Builder Application Templates are added.</li>
+<li>Widget Palette.</li>
+<li>Drag-and-drop widget placement, moving, deleting, and visual layout editing.</li>
+<li>­Copy/cut/paste, and undo/redo, align, match size.</li>
+<li>­Guidelines</li>
+<li>­Preview mode</li>
+</ul>
+</li>
+<li>Properties View
+<ul>
+<li>Attributes editing through effective graphical UX.</li>
+<li>Creating a visual UI event binding with you event handler code and moving to the event handler code.</li>
+</ul>
+</li>
+<li>Navigation View
+<ul>
+<li>Showing the view thumbnail.</li>
+<li>You can switch editing view by clicking the view thumbnail.</li>
+</ul>
+</li>
+<li>Outline View
+<ul>
+<li>Hierarchical structure of the view.</li>
+</ul>
+</li>
+<li>Resources View
+<ul>
+<li>Resource management – import/copy/paste/delete resources.</li>
+<li>You can edit the resource property of the widgets using drag and drop.</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Emulator, Web simulator, Native UI Builder, Web UI Builder
+<ul>
+<li>The qHD(540X960) resolution is additionally supported.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Changed Features</h3>
+
+<ul>
+<li>Native IDE
+<ul>
+<li>Building and packaging
+<ul>
+<li>Multi-project packaging. You can develop a UI project and service or shared library projects as a package.</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/2_3_rev3_SDK_release_notes.htm b/org.tizen.devtools/html/download/2_3_rev3_SDK_release_notes.htm
new file mode 100644 (file)
index 0000000..bb74760
--- /dev/null
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.3 Rev3 SDK Release Notes</title>
+</head>
+
+<body class="no-toc" onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation"></div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<div id="profile"><p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p></div>
+
+<h1>Tizen 2.3 Rev3 SDK Release Notes</h1>
+
+<ul> 
+   <li>Release Date: July 6, 2015</li> 
+  </ul>
+  
+  <h2 id="ide_tools">IDE and Tools</h2> 
+  
+  <h3>Fixed Bugs</h3>
+  
+  <ul> 
+   <li>Native IDE
+   <ul> 
+   <li>The compression library issue making the tpk size too big due to the defective compression has been fixed.</li> 
+   <li>Invalid file permission issue when unzip the tpk has been fixed. This issue can cause the application is rejected due to signing failure from Tizen seller site.</li> 
+  </ul>
+ </li> 
+   </ul>
+  
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/2_4_release_notes.htm b/org.tizen.devtools/html/download/2_4_release_notes.htm
new file mode 100644 (file)
index 0000000..4816a8f
--- /dev/null
@@ -0,0 +1,1614 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.4 Release Notes </title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#rev2">Tizen 2.4_Rev2</a></li>
+            <li><a href="#rev1">Tizen 2.4_Rev1</a></li>
+                       <li><a href="#Tizen_2_4">Tizen 2.4</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Tizen 2.4 Release Notes </h1>
+
+<p>Release Date: December 23, 2015</p>
+
+<h2 id="rev2">Tizen 2.4_Rev2</h2> 
+
+<h3>IDE and Tools</h3>
+
+<h4>Fixed bugs</h4> 
+
+<ul> 
+   <li>Web IDE
+   <ul> 
+   <li>The bug, which the installing and launching of wgt  was failed after installing TV extension, has been fixed.</li> 
+   <li>The web debugging failure caused by the invalid reference of external library after installing TV extension, has been fixed.</li> 
+  </ul>
+ </li> 
+   <li>Web Inspector
+   <ul> 
+   <li>The bug, the socket connection with the web inspector was failed sometimes, has been fixed.</li>
+  </ul>
+  </li> 
+  </ul>
+  
+  <h2 id="rev1">Tizen 2.4_Rev1</h2> 
+  
+  <h3>IDE and Tools</h3>
+
+<h4>New Features</h4> 
+
+<ul> 
+   <li>Common
+   <ul> 
+   <li>Tizen 2.4 Rev1 SDK supports developing an application on multi-platform environments. In the 2.4 Rev1 SDK, you can also develop 2.3.1 based applications.</li> 
+   <li>From Tizen 2.4 Rev1, the SDK image installation is not officially supported. Use the Tizen package server for installation.</li>
+   <li>From Tizen 2.4 Rev1, the Update Manager supports the package server mirroring. Without uninstalling the Tizen SDK, you can enhance the installation speed of the new SDK version by changing the target repository address to an alternative repository that exists in your country or region.</li>   
+  </ul>
+  </li> 
+   <li>CLI<ul> 
+   <li>Support has been added for the package/install/run/uninstall features for the 2.3.0 projects.</li> 
+  </ul>
+  </li> 
+   <li>Native UIB and Enventor
+     <ul> 
+   <li>Supports the following host operating systems:
+     <ul> 
+   <li>Tizen 2.3.1 (Mobile/Wearable): Ubuntu&trade; 12.04/14.04 32-bit/64-bit</li> 
+   <li>Tizen 2.4 (Mobile): Ubuntu&trade; 12.04/14.04 32-bit/64-bit, Windows&reg; 7/8 32-bit/64bit</li> 
+  </ul>
+  </li>
+  </ul>
+  </li> 
+  </ul>
+  
+  <h4>Changed Features</h4> 
+  
+  <ul> 
+   <li>Common
+   <ul> 
+   <li>The Project wizard has been enhanced to be opened and closed faster than in the 2.4 official version.</li>
+   <li>To improve the security of a connected Tizen device, the execute permission has been changed from the root/administrator to the developer in some features that control the device, such as the dynamic analyzer and SDBD.</li>
+   <li>The IDE has been changed to hold the settings (filter, log level, category) of the Log view after the device is disconnected.</li>
+   <li>The default value for the log level property of the Log view has been changed from Verbose to Error.</li>
+  </ul>
+  </li> 
+   <li>Installer and Update Manager
+   <ul> 
+   <li>A combo box has been added to the Update Manager to easily change the URL of the target repository.</li>
+  </ul>
+  </li>
+  <li>Web IDE<ul> 
+   <li>The Localize wizard has been replaced with the Localization view.</li> 
+   <li>You can localize your resource files and strings.</li> 
+   <li>You can export or import a localized string as a CSV (comma-separated value) file.</li> 
+  </ul>
+ </li> 
+  <li>Native IDE<ul> 
+   <li>The content/code assist feature has been added for the i18n_get_text() function. After you complete the i18n_get_text() function on the C/C++ source file editor by pressing Ctrl + Space, you can see a candidate parameter list which consists of original untranslated strings you added to the PO file.</li> 
+   <li>When you develop a multi-project packaged application (such as a combination of UI and service projects, or UI and shared library projects), the res.xml files of the projects are automatically merged. If a project has no res.xml file, a res.xml is automatically generated for that project and merged with the other res.xml files. </li>
+   <li>The &quot;Export to CLI&quot; menu has been added, and appears when multiple projects are selected.</li> 
+   <li>The Resource Explorer view has been added. It appears only for Tizen 2.4-based projects, not Tizen 2.3.1.</li> 
+   <li>Multi-project packaging policy has been updated.<ul> 
+   <li>A Web UI project can be packaged with several native-widget type projects.</li> 
+   <li>A native IME project can be packaged with several UI application type projects.</li> 
+  </ul></li>   
+  </ul></li>
+  </ul>
+
+   <h4>Fixed Bugs</h4>
+  
+  <ul> 
+   <li>Common
+   <ul> 
+   <li>The Apple JDK dependency issue, which appeared when starting the Tizen IDE and dynamic analyzer, has been fixed.</li> 
+   </ul>
+   </li> 
+   <li>Native<ul> 
+   <li>The bug, which caused unnecessary files (such as .EDC file) to be included when native modules were packaged into the .tpk file, has been fixed.</li> 
+   </ul></li>
+   <li>CLI<ul> 
+   <li>The bug, which caused the native CLI to return success codes even though a build failed, has been fixed.</li> 
+   </ul></li>
+  </ul>
+  
+  <h4>Known issues</h4>
+  
+  <ul> 
+   <li>Installer and Update Manager
+ <ul> 
+   <li>If there is a multibyte character in the installation path of the Tizen SDK, some development packages cannot find the installed SDK&#39;s location when they are working.</li> 
+   <li>When you install packages by using the All Packages tab in the Update Manager, the number of the progress indicator is only changed each time a package in dependency is downloaded. While downloading, the number of the progress indicator is not changed.</li>
+   <li>When you run the dynamic analyzer on Mac OS, the SDK Update Notification does not appear though there are available SDK updates.</li>
+   <li>If the SDK Update Notification appears when you start the Tizen IDE or Emulator on Mac OS, a terminal (shell.exec) icon can appear on the dock for a few seconds.</li> 
+  </ul>
+  </li> 
+   <li>Native IDE<ul> 
+   <li>When you import some projects generated from Tizen 2.3 Rev2, the import can take some time.</li> 
+   <li>The Restore Defaults feature in the Native project&#39;s properties > C/C++ Build, does not work properly.</li> 
+  </ul>
+  </li>
+   <li>Emulator
+   <ul> 
+   <li>Ubuntu&trade; sometimes stops responding for a few seconds after closing the Emulator Manager. This issue is related to a bug of IBus (Intelligent Input Bus). When the issue occurs, restart the ibus-daemon by typing ibus-daemon –drx at the command prompt, and use another framework, such as uim and fcitx, for multilingual input.</li> 
+   <li>To use the Tizen Emulator, install an Intel VTx supported by the CPU, and the latest version of the graphic card driver provided by the vendor.
+    <ul> 
+   <li>Check the prerequisites for the Tizen Emulator from: <a href="sdk_prerequisites.htm#emulator">Emulator Requirements</a>.</li> 
+   <li>If the host machine is using the Nvidia Optimus&trade; technology on either Ubuntu&trade; or Windows&reg;, you must set the Tizen Emulator to run with your Nvidia&reg; graphics card. If you use Ubuntu&trade;, check the bumblebee project (<a href="https://wiki.ubuntu.com/Bumblebee" target="_blank">https://wiki.ubuntu.com/Bumblebee</a>). If you use Windows&reg;, select &quot;High Speed NVIDIA Processor&quot; as &quot;Preferred Graphics processor&quot; in the Nvidia&reg; control panel.</li>
+   <li>On Ubuntu&trade;, if the graphics driver is outdated, your Ubuntu&trade; desktop session can be occasionally logged out when launching the Emulator Manager, or the Emulator skin can be drawn improperly. Check the prerequisites and upgrade to the latest graphics driver.</li>   
+  </ul>
+  </li>
+   <li>On Ubuntu&trade; 14.04, the shortcut menu can sometimes appear transparently.</li> 
+   <li>On Windows&reg;, depending on your OS theme (such as Non-Aero themes and Windows XP themes), a display surface can be erased for a while if the Emulator window is covered by another window. If you click the Emulator window, the display surface runs correctly again.</li>
+   <li>On Windows&reg;, if a memory allocation error occurs while executing the Emulator, try  the following:
+   <ul> 
+   <li>Close some other programs and try to launch the Emulator again.</li> 
+   <li>If the RAM size is set as 768 or 1024 MB for the VM in the Emulator Manager, change the RAM size to 512 MB.</li>
+   <li>Increase the user area of the virtual memory in the system to 3 GB by typing bcdedit /set increaseuserva 3072 on the console with administrator rights (Windows&reg; 7 only) and reboot.</li> 
+  </ul>
+  </li> 
+   <li>If you use a MacBook Pro which has both Intel HD and NVidia GPUs, the Emulator may be unexpectedly terminated when you execute with the OpenGL ES ver. v1.1 &amp; v2.0 option. Use the OpenGL ES ver. v2.0 &amp; v3.0 option.</li>    
+  </ul>
+  </li>
+   <li>SDB
+   <ul> 
+   <li>​To use the SDB bash completion feature, type the source .sdb-complete.bash command on the bash shell. The feature runs manually from the Tizen 2.4 official version due to the Installer and Update Manager issue.</li> 
+  </ul>
+  </li>
+   <li>Native UIB<ul> 
+   <li>The Native UIB does not support the storyboard for the Tizen 2.3.1 platforms.</li> 
+  </ul></li>   
+  </ul>
+  
+   <h2 id="Tizen_2_4">Tizen 2.4</h2> 
+   
+   <h3>IDE and Tools</h3>
+
+<h4>New Features</h4> 
+
+<ul> 
+   <li>Web IDE and Tools  
+   <ul> 
+   <li>Rest Viewer has been added.</li> 
+   <li>Multi Package preference panel has been added to <strong>Project Properties &gt; Tizen SDK &gt; Package</strong>. You must refer projects to other projects in this panel, not in the Project Reference panel. The hybrid project referencing feature is removed from the Project Reference panel.</li> 
+  </ul>
+ </li> 
+   <li>Native IDE
+     <ul> 
+   <li>New project template types (IME, widget, and watch) have been added.</li> 
+   <li>Project migration wizard, which imports 2.3-based projects for making 2.4-based projects, has been added.</li> 
+   <li>Resource Manager View, which places application resources to support specific device configurations, such as different screen densities and locales, has been added.</li> 
+   <li>Select Emulator Wizard, which calls a previously run emulator automatically while &#39;Run As&#39; is called and Emulator Manager is not running, has been added.</li> 
+   <li>Ninja build system for enhancing the application build time has been added.</li> 
+   <li>LLVM-3.6 and GCC-4.9 toolchains have been added.</li> 
+   <li>New function generating author signatures to support App slicing has been added.</li> 
+   <li>New function exporting an IDE project to a CLI project has been added.</li> 
+  </ul>
+  </li> 
+   <li>Native UI Builder
+     <ul> 
+   <li>Supports the following host operating systems:
+    <ul> 
+   <li>Windows 7 32-bit/64-bit and Windows 8 32-bit/64-bit</li> 
+   <li>Ubuntu 12.04 32-bit/64-bit and Ubuntu 14.04 32-bit/64-bit</li> 
+  </ul>
+  </li> 
+   <li>Supports the making of a custom UI component by combining ready-made UI components.</li>
+   <li>Provides a storyboard, which represents a transition from one view to the next.</li> 
+  </ul>
+  </li> 
+   <li>Enventor
+     <ul> 
+   <li>Supports the following host operating systems:
+     <ul> 
+   <li>Windows 7 32-bit/64-bit and Windows 8 32-bit/64-bit</li> 
+   <li>Ubuntu 12.04 32-bit/64-bit and Ubuntu 14.04 32-bit/64-bit</li> 
+  </ul>
+  </li>  
+  </ul>
+  </li>
+   <li>Emulator
+     <ul> 
+   <li>SMP with CPU VT acceleration is enabled for enhancing performance.</li> 
+   <li>OpenGL ES 3.0 is supported.</li>
+   <li>Virtual camera is supported. Applications which use a camera can be developed without a Webcam.</li> 
+   <li>Multi-touch simulation has been added. Multi-touch drag and pinch-zoom gestures are also supported.</li>
+   <li>H.264 video compression format is supported.</li> 
+   <li>Bridged networking feature is enabled. It can connect the emulator to  the PC&#39;s Ethernet adapter directly.</li>
+   <li>Proxy setting is enabled in the Emulator Manager. It allows the emulator to get a proxy network separated from the PC network.</li> 
+   <li>Sharing host PC&#39;s directories with the emulator is supported. The shared directory can be added or removed in the ECP (Emulator Control Panel) while the emulator is running.</li>
+   <li>Low-memory event in the ECP has been added.</li> 
+   <li>Shortcut keys for Windows and Ubuntu have been added. <strong>Ctrl + Shift + S</strong> or <strong>Ctrl + F6</strong>  can be used to open the sdb shell when the emulator is focused.</li>   
+  </ul>
+  </li> 
+   <li>Dynamic Analyzer
+     <ul> 
+   <li>Checkpoint analysis has been added. It displays the checked variable value of the application in real time.</li> 
+   <li>App startup analysis has been added. It displays information both before and after the application starts.</li>
+   <li>UI gesture event chart has been added. It displays the UI application&#39;s gesture events.</li>   
+  </ul>
+  </li>
+   <li>T-trace
+     <ul> 
+   <li>Profiling tool has been added to optimize the application performance by measuring and visualizing instrumented function calls in the Tizen platform.</li> 
+  </ul>
+  </li> 
+   <li>Stale Object Checker 
+   <ul> 
+   <li>Dynamic analysis tool has been added to examine whether JavaScript objects of a Web application can cause possible memory leaks.</li> 
+  </ul>
+  </li>
+   <li>CLI
+   <ul> 
+   <li>Certificate management named &#39;Security Profiles&#39; has been added, to enable developer certificates to sign Tizen applications.</li> 
+  </ul>
+  </li>
+  </ul>
+  
+  <h4>Changed Features</h4> 
+  
+    <ul> 
+   <li>Web IDE and tools
+  <ul> 
+   <li>Various sample projects can be downloaded in the Online Sample of the New Project Wizard.</li> 
+   <li>Localization Wizard has been changed to Localization View. If you click Localization in the project shortcut menu, the Localization View appears.</li> 
+  </ul>
+  </li> 
+   <li>Native IDE
+     <ul> 
+   <li>PO editor&#39;s UX has been improved.</li>
+  </ul>
+  </li> 
+   <li>Native UI Builder
+     <ul> 
+   <li>Some &quot;widget&quot; terms have been changed to &quot;UI component&quot;.</li> 
+   <li>WYSIWYG UX has been improved.
+     <ul> 
+   <li>Z-order index (back, backward, front, frontward) of the UI components arranged on the canvas can be changed.</li> 
+   <li>UI components can overlap each other.</li>
+   <li>UI components can be handled outside the canvas.</li> 
+   <li>UX of selecting a container UI component (box) has been improved.</li>
+   <li>UX of Direct Text Editing has been added.</li>    
+  </ul>
+  </li> 
+   <li>View template category has been removed.</li> 
+   <li>Method for selecting a view in the Navigation view has been changed from a single-click to double-click.</li>
+  </ul>
+  </li> 
+   <li>TEP (Tizen Expansion Package) feature will be supported in the later version.</li> 
+  </ul>
+  
+  <h4>Fixed Bugs</h4> 
+  <ul> 
+   <li>Web IDE and tools
+    <ul> 
+   <li>The bug, where a wrong hyperlink appears when the log message at the JavaScript console contains a number, has been fixed.</li>
+  </ul>
+ </li> 
+   <li>Emulator
+     <ul> 
+   <li>The bug, which appears while installing the Tizen HAX driver on a computer where Android HAX driver is already installed, has been fixed. The Tizen HAX driver overwrites the Android HAX driver.</li> 
+   <li>The bug, where the emulator is terminated abnormally due to the misconfiguration of SOCKS (SOCKet Secure) proxy on Mac OS&reg; X, has been fixed.</li> 
+  </ul>
+  </li> 
+  </ul>
+  
+  <h4>Known Issues</h4> 
+  
+    <ul> 
+   <li>Install Manager and Update Manager
+     <ul> 
+   <li>If there is a multibyte character in the installation path of the Tizen SDK, some development packages cannot find the installed SDK&#39;s location when they are working.</li> 
+   <li>When you install packages by using the All Packages tab in the Update Manager, the number of the progress indicator is changed only each time a package in dependency is downloaded. While downloading, the number of the progress indicator is not changed.</li> 
+  </ul>
+  </li> 
+   <li>Native IDE
+     <ul> 
+   <li>Generating the res.xml file in Multi-Packaged projects is not available.</li> 
+   <li>When you import some projects generated from the Tizen 2.3 Rev2 SDK, the importing can take some time.</li> 
+  </ul>
+  </li> 
+   <li>Emulator
+     <ul> 
+   <li>To use the Tizen Emulator, you must install an Intel VTx supported by the CPU, and the latest version of the graphic card driver which the vendor provides. Check the prerequisites for the Tizen Emulator from:
+     <ul> 
+   <li><a href="sdk_prerequisites.htm#emulator">Emulator Requirements</a></li> 
+   <li>If the host machine is using the Nvidia Optimus&trade; technology on either Ubuntu&trade; or Windows&reg;, set the Tizen Emulator to run with your Nvidia&reg; graphics card. In case of Ubuntu&trade;, check the bumblebee project (<a href="https://wiki.ubuntu.com/Bumblebee" target="_blank">https://wiki.ubuntu.com/Bumblebee</a>). If you use Windows&reg;, select &quot;High Speed NVIDIA Processor&quot; as &quot;Preferred Graphics processor&quot; in the Nvidia&reg; control panel.</li>
+   <li>On Ubuntu&trade;, if the graphics driver is out-of-date, your Ubuntu&trade; desktop session can be occasionally logged out when launching the Emulator Manager. Or the Emulator skin can be drawn improperly. Check the prerequisites and upgrade to the latest graphics driver.</li>   
+  </ul>
+  </li>
+   <li>On Ubuntu&trade; 14.04, the shortcut menu can sometimes appear transparently.</li> 
+   <li>On Windows&reg;, depending on your OS theme (such as Non-Aero themes and Windows XP themes), a display surface can be erased for a while if the Emulator window is covered by another window. If you click the Emulator window, the display surface runs correctly again.</li>
+   <li>On Windows&reg;, if &#39;failed to allocate memory&#39; error occurs while executing the Emulator, try the following:
+   <ul> 
+   <li>Close some other programs and try to launch the Emulator again.</li> 
+   <li>If the RAM size is set as 768 or 1024 MB for the VM in the Emulator Manager, change the RAM size to 512 MB.</li>
+   <li>Increase the user area of the virtual memory in the system to 3 GB by typing bcdedit /set increaseuserva 3072 on the console with administrator rights (Windows&reg; 7 only) and reboot.</li> 
+  </ul>
+  </li> 
+   <li>If you use a MacBook Pro which has both Intel HD and NVidia GPUs, when you execute with the OpenGL ES ver. v1.1 &amp; v2.0 option, the Emulator may be unexpectedly terminated. Use the OpenGL ES ver. v2.0 &amp; v3.0 option.</li>    
+  </ul>
+  </li>
+   <li>SDB
+   <ul> 
+   <li>​To use the SDB bash completion feature, you must type the source .sdb-complete.bash command on the bash shell. The feature runs manually from the Tizen 2.4 due to the Installer and Update Manager issue.</li> 
+  </ul>
+  </li>  
+  </ul>
+  
+  <h3>UI FW</h3>
+  
+  <h4>New Features</h4>
+  
+  <ul> 
+   <li>Tizen 2015 UX support has been added (new winset and style).</li> 
+   <li>Vector winset support has been added.</li>
+   <li>Unicode 6.1 Colored Emoticons have been added.</li> 
+   <li>Gamepad support has been added.</li>
+   <li>Cancel Event support has been added.</li> 
+   <li>ATK has been integrated.</li> 
+   <li>Ecore Buffer has been added.
+     <ul> 
+   <li>New API abstracts the graphic buffer and allows you to share it between processes.</li> 
+  </ul>
+  </li> 
+  </ul>
+  
+  <h4>Change Notes</h4>
+  
+   <ul> 
+   <li>Open source upgrade
+    <ul> 
+   <li>EFL version has been upgraded from 1.7 to 1.13.</li> 
+  </ul>
+  </li> 
+   <li>API changes
+    <ul> 
+   <li>Eina_Bool edje_text_class_get (const char *text_class, char **font, Evas_Font_Size *size) has been changed to  Eina_Bool edje_text_class_get (const char *text_class, const char **font, Evas_Font_Size *size).</li> 
+   <li>◦void elm_win_wm_rotation_preferred_rotation_set(Evas_Object *obj, const int rotation) has been changed to void elm_win_wm_rotation_preferred_rotation_set(const Evas_Object *obj, int rotation).</li> 
+  </ul></li> 
+  </ul>
+  
+  <h3>Network Connectivity</h3>
+  
+  <h4>New Features</h4>
+  
+    <ul> 
+   <li>NFC
+     <ul> 
+   <li>New HCE (Host Card Emulation) APIs for NFC has been added.</li> 
+  </ul>
+  </li> 
+   <li>Smartcard
+     <ul> 
+   <li>New APIs for smartcards (Smartcard API) have been added.</li> 
+  </ul>
+  </li>
+   <li>Bluetooth
+     <ul> 
+   <li>New APIs for AVRCP have been added.</li> 
+   <li>SDK extension APIs have been moved into bluetooth_extension.h.</li> 
+  </ul>
+  </li> 
+   <li>Connection Manager 
+     <ul> 
+   <li>New API to get MAC address has been added.</li> 
+   <li>New APIs for Ethernet cable state have been added.</li> 
+  </ul>
+  </li>
+   <li>Wi-Fi 
+     <ul> 
+   <li>New APIs for a specific scan have been added.</li>
+   <li>New APIs for Wi-Fi configuration have been added.</li>
+  </ul>
+  </li> 
+   <li>Wi-Fi direct
+     <ul> 
+   <li>New APIs for a Wi-Fi display have been added.</li> 
+  </ul>
+  </li>
+   <li>Telephony  
+   <ul> 
+   <li>New APIs for a call status have been added.</li> 
+   <li>New APIs for a modem power status have been added.</li>
+   <li>New APIs for SIM application lists have been added.</li> 
+   <li>New APIs for a network have been added.</li>   
+  </ul></li> 
+  </ul>
+  
+  <h4>Change Notes</h4>
+  
+    <ul> 
+   <li>Open source upgrade
+     <ul> 
+   <li>ConnMan has been upgraded from 1.3.313 to 1.29.15.</li> 
+   <li>Bluez has been upgraded from 5.27 to 5.28.</li> 
+   <li>libsoup has been upgraded from 2.38.1 to 2.46.0, gnutls from 2.12.20 to 3.3.5, and glib-networking from 2.32.3 to 2.38.0.</li> 
+  </ul>
+ </li> 
+   <li>Notice of deprecated APIs
+     <ul> 
+   <li>Bluetooth
+     <ul> 
+   <li>Legacy LE discovery APIs have been deprecated.</li> 
+   <li>Legacy GATT client APIs have been deprecated.</li> 
+  </ul>
+  </li> 
+   <li>Wi-Fi Direct</li> 
+   <li>Telephony
+     <ul> 
+   <li>Call status API has been deprecated. </li> 
+  </ul>
+  </li> 
+  </ul>
+  </li> 
+  </ul>
+  
+   <h3>Contact and Calendar Service</h3>
+   
+<h4>New Features</h4>
+
+  <ul> 
+   <li>New APIs for the phonenumber-utils module (phone number location, formatting, location data replace) have been added.</li> 
+   <li>Lunar calendar has been added in the Event schedule.</li> 
+  </ul>   
+  
+  <h4>Change Notes</h4>
+  
+   <ul> 
+   <li>PIMS-ipc abnormal disconnection recovery feature has been added.</li> 
+   <li>_contacts_event.is_leap_month property has been deprecated.</li>
+   <li>On-demand launching has been applied.</li>   
+  </ul>
+  
+  <h3>Multimedia FW</h3>
+  
+  <h4>New Features</h4>
+  
+  <ul>
+<li>Media Content
+<ul>
+<li>Empty folder management support has been added.</li>
+<li>Mass-storage scanning has been added.</li>
+<li>Export and Import Playlist File (.m3u) service has been added.</li>
+</ul>
+</li>
+<li>Media Controller
+<ul>
+<li>Media Controller Service has  been added.</li>
+</ul>
+</li>
+<li>Mediavision
+<ul>
+<li>Mediavision component, supporting generation and detection of various barcodes (such as UPC-A, CODE128, and QR) has been added.</li>
+</ul>
+</li>
+<li>Camera
+<ul>
+<li>New API to get the FPS list in each resolution has been added.</li>
+<li>T-trace support has been added.</li>
+</ul>
+</li>
+<li>Recorder
+<ul>
+<li>Maximum file size in the recording has been increased (larger than 4 GB).</li>
+</ul>
+</li>
+<li>Image util
+<ul>
+<li>NV12 for JPEG encoding/decoding support has been added.</li>
+<li>Jpeg downscale decoding support has been added.</li>
+</ul>
+</li>
+<li>Player
+<ul>
+<li>New APIs to play a demuxed AV elementary stream which is pushed from application have been added.</li>
+<li>New APIs to monitor the QoS of the elementary stream have been added.</li>
+<li>New APIs to give notifications about the changing of the video stream have been added.</li>
+<li>New APIs to select the audio and subtitle language have been added.</li>
+</ul>
+</li>
+<li>Audio I/O 
+<ul>
+<li>New APIs to flush the playback/capture stream have been added.</li>
+<li>New API to drain the playback stream has been added.</li>
+</ul>
+</li>
+<li>Media codec
+<ul>
+<li>New API to query which codecs are supported has been added.</li>
+<li>New API to flush buffers has been added.</li>
+<li>New API to check the buffer status has been added.</li>
+</ul>
+</li>
+<li>Media tool
+<ul>
+<li>New APIs to get some TBM surface info have been added.</li>
+<li>New API to get codec data has been added.</li>
+<li>New enum in media_format_mimetype_e has been added.</li>
+</ul>
+</li>
+<li>Radio
+<ul>
+<li>New API to get the min. and max. frequency has been added.</li>
+<li>New API to get the channel spacing value has been added.</li>
+</ul>
+</li>
+<li>Metadata Editor
+<ul>
+<li>Media Content metadata editing service has been added.</li>
+</ul>
+</li>
+<li>Thumbnail Util
+<ul>
+<li>Support for extracting a thumbnail in various resolutions has been added.</li>
+</ul>
+</li>
+<li>Screen Mirroring
+<ul>
+<li>Sink device can play the mirrored stream.</li>
+</ul>
+</li>
+</ul>
+
+<h4>Change Notes</h4>
+
+<ul>
+<li>Media Content
+<ul>
+<li>Exposure time, fnumber, iso, and model can be extracted from Exif.</li>
+<li>media_info_increase_played_count() has replaced video_meta_set_played_count() and audio_meta_set_played_count().</li>
+<li>media_info_set_played_time() has replaced video_meta_set_played_time() and audio_meta_set_played_time().</li>
+</ul>
+</li>
+<li>Camera 
+<ul>
+<li>Flash control behavior has changed. (Flash control can fail if the flash is pre-empted by another API.)</li>
+<li>Code for removing remaining messages when destroying a handle has been updated.</li>
+<li>dbus has been replaced with gdbus.</li>
+<li>Signal handler has been added to reset vconf keys updated by the camera and recorder.</li>
+<li>MMVideoBuffer has been applied.</li>
+</ul>
+</li>
+<li>Notice
+<ul>
+<li>Media Content ignores the hidden file and the hidden folder.</li>
+<li>ffmpeg (1.0) has been replaced with libav (11.3).</li>
+<li>GStreamer0.10.36 ´has been replaced with GStreamer1.4.5.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Email and Message Service</h3>
+
+<h4>New Features</h4>
+
+<ul>
+<li>SMS, CB, and PUSH incoming message events are published using the event-system.</li>
+</ul>
+
+<h4>Change Notes</h4>
+
+<ul>
+<li>vconf-keys have been moved from the spec file into &#39;vconf-internal-keys&#39;.</li>
+<li>Unused vconf-keys have been removed.</li>
+</ul>
+
+
+<h3>Context/Location/Account/Interaction FW</h3>
+
+<h4>New Features</h4>
+
+<ul>
+<li>Context FW
+<ul>
+<li>New Contextual Trigger APIs have been added for creating context-aware app-launching and notification rules, based on time, several device status and events, and communication events.</li>
+<li>New Contextual History APIs have been added for getting device usage statistics, including what are the most frequently, recently, and rarely used applications, and when the user most intensively uses the applications or listens to music.</li>
+</ul>
+</li>
+<li>Interaction FW
+<ul>
+<li>Voice control
+<ul>
+<li>New APIs to control application features with voice recognition have been added.</li>
+<li>New APIs to control EFL-supported UI components with voice recognition have been added.</li>
+</ul>
+</li>
+<li>Text Input
+<ul>
+<li>New APIs to develop downloadable Native IME have been added.</li>
+<li>New APIs to manage IMEs (providing list and selector menus) have been added.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Account FW
+<ul>
+<li>Account Manager
+<ul>
+<li>Account connect/disconnect APIs have been deprecated to avoid applications using them inappropriately.</li>
+</ul>
+</li>
+<li>Sync Manager
+<ul>
+<li>New APIs to schedule the operation of applications which need synchronization with a server have been added.</li>
+</ul>
+</li>
+<li>OAuth 2.0
+<ul>
+<li>New APIs for easy usage of the OAuth 2.0 protocol have been added.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Location FW 
+<ul>
+<li>Location Manager
+<ul>
+<li>New API for distance-based location updates has been added.</li>
+<li>New API to enable location with the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/location.enable</span> privilege has been added.</li>
+<li>New API for location update callback has been added.</li>
+</ul>
+</li>
+<li>Maps Service 
+<ul>
+<li>New Maps Service API (Geocoder, Places, and Routes) has been added.</li>
+<li>Support for the HereMaps plugin based on the HERE REST API has been added.</li>
+</ul>
+</li>
+<li>Geofence Manager (Mobile) 
+<ul>
+<li>New Geofence Manager API has been added.</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+<h4>Known Issues</h4>
+
+<ul>
+<li>Geofence Manager
+<ul>
+<li>This feature is optional, and is only supported is certain device models.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Web UI Framework (TAU)</h3>
+
+<h4>New Features</h4>
+
+<ul>
+<li>Tizen 2015 UX (new UI and style)
+<ul>
+<li>New floating actions, PanelChanger, PageIndicator, SectionChanger and Tabs have been added as UI components.</li>
+</ul>
+</li>
+<li>Gesture Event APIs that help to detect the user gesturing input have been added.</li>
+<li>Animation Utility that provides APIs to easily animate DOM elements with great performance has been added.</li>
+<li>Globalization Utility that provides APIs to convert user-entered string, date, or numbers into a country-specific format has been added.</li>
+</ul>
+
+<h4>Change Notes</h4>
+
+<ul>
+<li>Changed APIs
+<ul>
+<li>CheckboxRadio has been separated into Checkbox and Radio.</li>
+<li>Collapsible has been renamed to Expandable.</li>
+<li>FastScroll has been renamed to IndexScrollbar.</li>
+<li>ProgressBar has been renamed to Progress.</li>
+<li>SelectMenu has been renamed to DropdownMenu.</li>
+<li>TokenTextArea has been renamed to TextEnveloper.</li>
+<li>A plugin, &quot;support-2.3&quot;, is provided for backward compatibility.</li>
+</ul>
+</li>
+<li>Deprecated APIs
+<ul>
+<li>Gallery, Autodividers, ControlGroup, DatetimePicker, MultimediaView, Notification, ScrollHandler, and Swipe have been deprecated.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Graphics</h3>
+
+<h4>New Features</h4>
+
+<ul>
+<li>DALi has been added.
+<ul>
+<li>OpenGL ES-based light-weight rendering engine</li>
+<li>Dedicated rendering thread and resource loading threads</li>
+<li>2D and 3D draw mode</li>
+<li>Basic UI components
+<ul>
+<li>TextField</li>
+<li>TextLabel</li>
+<li>ImageView</li>
+<li>Buttons</li>
+<li>TableView</li>
+<li>ItemView</li>
+<li>ScrollView</li>
+<li>ScrollBar</li>
+<li>GaussianBlurView</li>
+</ul>
+</li>
+<li>Properties-based animations</li>
+<li>Platform adaptation 
+<ul>
+<li>Virtual keyboard</li>
+<li>Clipboard</li>
+<li>Native application life-cycle management</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Evas GL/Engine
+<ul>
+<li>Support for OpenGL ES 3.0 has been added.</li>
+<li>Support for DRI3 in SW-X11 Backend has been added.</li>
+</ul>
+</li>
+<li>CoreGL
+<ul>
+<li>Support for driver-independent performance optimization (called FASTPATH) has been added.</li>
+<li>Helps OpenGL ES v2.0 debugging.</li>
+<li>Provides performance logging (called TRACEPATH).</li>
+</ul>
+</li>
+</ul>
+
+<h4>Change Notes</h4>
+
+<ul>
+<li>Evas GL/Engine
+<ul>
+<li>Provides Evas GL Context Restoring when the current context is changed.</li>
+<li>Evas GL cache files (shader, capability) have been recreated by micro version.</li>
+<li>Render buffer has been changed from pixmap to FBO for GLES 1.1 and 3.0.</li>
+</ul>
+</li>
+<li>ARM Mali driver (kernel &amp; OpenGL ES driver)
+<ul>
+<li>Driver version has been updated to r4p0 from r3p0.</li>
+<li>TIZEN_image_native_surface feature has been added.</li>
+<li>Support for DRI3 has been added.</li>
+<li>Surface pitch alignment has been changed from 8 bytes to 64 bytes.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Applications</h3>
+
+<h4>New Reference Applications</h4>
+
+<ul>
+<li>Call, Message, Email, Video, Music, and more have been added.</li>
+</ul>
+
+<h4>New Features</h4>
+
+<ul>
+<li>Attach panel
+<ul>
+<li>Module to help attach content with ease has been added.</li>
+<li>New set of APIs have been added.</li>
+<li>Gallery, Camera, Voice-recorder, and many applications can be used to attach various types of content.</li>
+</ul>
+</li>
+<li>Share panel
+<ul>
+<li>Module to share content with ease has been added.</li>
+<li>You can call the share panel with the app_control protocol.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Application FW</h3>
+
+<h4>New Features</h4>
+<ul>
+<li>Application background policy
+<ul>
+<li>Restricting CPU resources for background application processes has been added according to the background categories that are specified in the application manifest.</li>
+</ul>
+</li>
+<li>Alarm API
+<ul>
+<li>Alarm APIs for inexact periodic processing have been added.</li>
+</ul>
+</li>
+<li>App group launching management API
+<ul>
+<li>New API to group applications has been added.</li>
+</ul>
+</li>
+<li>Application event system
+<ul>
+<li>New API to handle event broadcasting has been added.</li>
+</ul>
+</li>
+<li>Resource management API for multiple devices
+<ul>
+<li>New API to get a proper resource for multiple devices has been added.</li>
+</ul>
+</li>
+</ul>
+
+<h4>Change Notes</h4>
+
+<ul>
+<li>Alarm API
+<ul>
+<li>Alarm API has been changed to support explicit app control only.</li>
+<li>Some alarm APIs have been changed to register UI applications only.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Windows System</h3>
+
+<h4>New Features</h4>
+<ul>
+<li>X11
+<ul>
+<li>Two X input drivers have been integrated into one: X Evdev + X Evdev-multitouch =&gt; X Evdev</li>
+<li>Support for the pointer barrier which restricts pointer movement has been added.</li>
+<li>Support for input event generation for touchscreen and hardware key devices has been added.</li>
+<li>Support for input redirection has been added to enable input event redirection to the transformed windows by compositor.</li>
+<li>Support for keycode remapping has been added to remap the keycode more than 248 in the X Evdev driver.</li>
+<li>Support for touch cancel event generation has been added.</li>
+<li>Support for DRI3 and Present extension has been added.</li>
+<li>Support for HWA (hardware access) extension has been added.</li>
+</ul>
+</li>
+<li>EOM
+<ul>
+<li>New APIs for EOM (External Output Manager) have been added.</li>
+</ul>
+</li>
+<li>Window Manager
+<ul>
+<li>Support for window and input transformation has been added.</li>
+<li>Support for starting a window with an iconic state has been added.</li>
+<li>Support for screen on/off control using the pm-helper module has been added.</li>
+<li>Support for Ecore_buffer management has been added.</li>
+<li>tizen-ws-shell library has been provided for communicating between the window manager and system service applications.</li>
+</ul>
+</li>
+</ul>
+
+<h4>Change Notes</h4>
+
+<ul>
+<li>X11
+<ul>
+<li>xorg-server has been upgraded from 1.13.0 to 1.16.0.</li>
+<li>[Profile] ttrace has been added to xorg-server.</li>
+<li>[DRI2] DRI2SwapBuffers are skipped when the size of the front buffer differs from the back buffer.</li>
+<li>[DRI2] Sync draw done at DRI2SwapBuffers is sent.</li>
+<li>[XV] Access control mechanism has been added regarding the screen capture request (XVPutStill).</li>
+<li>[Input] Access control mechanism has been added regarding input event generation.</li>
+</ul>
+</li>
+<li>Window Manager
+<ul>
+<li>e17.service file has been moved to each e17-misc-xxx package from the e17 package.</li>
+<li>Modules have been separated to e17-mod-tizen-xxx.</li>
+<li>Blinking problem when the window manager is restarted has been fixed.</li>
+</ul>
+</li>
+<li>TBM
+<ul>
+<li>drm_slp so file has been removed.</li>
+<li>Creation of tbm_surface with multiple buffers is allowed.</li>
+</ul>
+</li>
+</ul>
+
+<h4>Known Issues </h4>
+
+<ul>
+<li>X11
+<ul>
+<li>Emulator X video driver does not support DRI3 and Present extension.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Settings and Base library</h3>
+
+<h4>New Features</h4>
+
+<ul>
+<li>New tizen locale (ckb_IR, ckb_IQ, raj_IN, ce_RU) has been added.</li>
+<li>XML-based configuration tool has been adopted for all modules (vconf-internal-keys).
+<ul>
+<li>Content in vconf-keys.h has been moved from &#39;vconf&#39; into &#39;vconf-internal-keys&#39; (refactoring).</li>
+<li>All unused keys have been removed.</li>
+<li>All un-initialized keys have been removed.</li>
+</ul>
+</li>
+</ul>
+
+<h4>Change Notes</h4>
+
+<ul>
+<li>Open-source base libraries
+<ul>
+<li>Upgrades: SQLite3, glib2, json-glib, json-c, and boost</li>
+<li>Patches: swig, libsolve, libzypp, python, tizen-locale, and tzdata</li>
+<li>Security patches: procps, gawk and etc.</li>
+</ul>
+</li>
+<li>org.tizen.setting
+<ul>
+<li>Enhanced EFL library has been adopted.</li>
+<li>Tizen 2.4 coding rules have been adopted.</li>
+<li>More than 120 vconf keys have been removed from the spec and moved to vconf-internal-keys.</li>
+<li>Event system functions have been moved to system settings and changed the calls with system-settings. (Refactoring)</li>
+</ul>
+</li>
+<li>system-settings
+<ul>
+<li>More than 100 UTC test-cases (system-settings) have been added and ITC, UTC test made to pass with 100%.</li>
+<li>Bugs have been fixed: between logic, get/set/notifiers from EAP binary (2.3.1)</li>
+<li>Event-system has been integrated into system-settings.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Convergence Service FW</h3>
+
+<h4>New Features</h4>
+
+<ul>
+<li>New APIs for Service-Adaptor have been added.
+<ul>
+<li>You can use a public infrastructure (such as Cloud Storage) as a local device.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Web Runtime/Web Device APIs</h3>
+
+<h4>New Features</h4>
+
+<ul>
+<li>Media controller API
+<ul>
+<li>This interface provides a media server (which plays media content) and a client interface (which requests the server to control the media server state, such as play and pause).</li>
+<li>Normally, the server and client are created by the same application developer and the client can act as a remote controller for the media server.</li>
+<li>It helps to transfer the information, such as playback info, shuffle/repeat mode, and metadata, from the media controller server to client.</li>
+<li>You can control the server state by sending commands from the client.</li>
+</ul>
+</li>
+<li>Application API
+<ul>
+<li>Application interface provides application event broadcasting and listening features. The application can broadcast user events to other listening applications.</li>
+<li>&quot;GROUP&quot; mode has been added to the Application API, and used to set an application group before launching an application using the Application Control. Specifies the application launch mode when the application is launched by the launchAppControl() method.</li>
+</ul>
+</li>
+<li>SystemInformation API
+<ul>
+<li>SystemInfoCameraFlash interface has been added to control the camera flash (getter and setter for the brightness of the camera flash).</li>
+<li>SystemInfoEthernetNetwork interface has been added to get Ethernet information, such as IP address, mac address, and status.</li>
+</ul>
+</li>
+<li>Notification API
+<ul>
+<li>playLEDCustomEffect() and stopLEDCustomEffect() methods have been added in the NotificationManager interface to control the LED of the device.</li>
+<li>You can play the custom effect of the service LED that is located on the front of a device.</li>
+</ul>
+</li>
+<li>Contents API
+<ul>
+<li>scanDirectory() and cancelScanDirectory() methods have been added to the ContentManager interface to perform media content scanning of a specific directory.</li>
+</ul>
+</li>
+<li>Bluetooth API
+<ul>
+<li>Bluetooth LE-related interfaces have been added.</li>
+<li>API is related to the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.bluetooth.le</span> feature.</li>
+</ul>
+</li>
+<li>InputDevice API
+<ul>
+<li>This interface provides functions to subscribe to the key events of the input device.</li>
+<li>You can handle device-dependent key events after registration.</li>
+</ul>
+</li>
+<li>NFC API
+<ul>
+<li>NFC host-based card emulation interfaces have been added.</li>
+<li>They are only supported on the HCE-enabled devices (no SDK support).</li>
+<li>API is related to the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/feature/network.nfc.card_emulation.hce</span> feature.</li>
+</ul>
+</li>
+<li> Web Runtime
+<ul>
+<li>In the tizen:application element in the config.xml file, &quot;launch_mode&quot; is added to set the launch mode to &quot;single&quot;, &quot;caller&quot;, or &quot;group&quot;. For more information, see Guides &gt; Native Application &gt; Application Framework &gt; Application Group.</li>
+<li>In the tizen:app-control element in the config.xml file, &quot;reload&quot; is added to enable or disable a page reload when an application control request is received.</li>
+<li>Feature for restricting CPU resources for a background application process according to the background categories that are specified in the config.xml file has been added.</li>
+</ul>
+</li>
+</ul>
+
+<h4>Change Notes</h4>
+
+<ul>
+<li>BT privileges (<span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.xx</span>) have been deprecated to synchronize the privilege names between Web and native Bluetooth APIs. From 2.4, <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth</span> must be used instead of the listed <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.xx</span> privileges.
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.xx</span> -&gt; <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.admin</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.gap</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.health</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.spp</span></li>
+</ul>
+</li>
+<li>Unnecessary and misplaced exception errors have been removed and added in the Web Device API specification.  
+<ul>
+<li>Alarm
+<ul>
+<li>TypeMismatchError of remove() has been removed.</li>
+<li>TypeMismatchError of get() has been removed.</li>
+</ul>
+</li>
+<li>Calendar
+<ul>
+<li>TypeMismatchError and InvalidValuesError of removeChangeListener() have been removed.</li>
+</ul>
+</li>
+<li>Messaging
+<ul>
+<li>TypeMismatchError and InvalidValuesError of stopSync() have been removed.</li>
+<li>UnknownError of stopSync() has been added.</li>
+</ul>
+</li>
+<li>Messageport 
+<ul>
+<li>TypeMismatchError and InvalidValuesError of requestRemoteMessagePort() have been removed.</li>
+<li>TypeMismatchError and InvalidValuesError of requestTrustedRemoteMessagePort() have been removed.</li>
+</ul>
+</li>
+<li>Secure element
+<ul>
+<li>TypeMismatchError and InvalidValuesError of unregisterSEListener() have been removed.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>websetting privilege has been removed from websetting.removeAllCookies. Thus, websetting requires no privilege from 2.4 (no application change required for the applications written before 2.4).</li>
+<li>BT API
+<ul>
+<li>Txpowerlevel attribute type of BT has been changed to long.</li>
+</ul>
+</li>
+<li>Alarm API
+<ul>
+<li>Behavior of AlarmRelative has changed. In order to decrease the power consumption, the operating system decides when it is going to be fired and what is the period between subsequent executions.</li>
+</ul>
+</li>
+<li>Calendar API
+<ul>
+<li>Default Enum values of CalendarItemPriority and CalendarItemStatus have been changed to None.</li>
+</ul>
+</li>
+<li>Notification API
+<ul>
+<li>Behavior of the ONGOING StatusNotificationType has been changed by a new UX policy.</li>
+<li>On-going type notifications can be removed by user action.</li>
+</ul>
+</li>
+<li>SystemInfo API
+<ul>
+<li>getCapability() handles custom features which are additional custom device capability keys specified by OEMs.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Webkit</h3>
+
+<h4>New Features</h4>
+
+<ul>
+<li>GamePad API support
+<ul>
+<li>GamePad API allows Web applications to directly act on gamepad data.</li>
+<li>W3C specification: <a href="http://www.w3.org/TR/2014/WD-gamepad-20140225/" target="_blank">http://www.w3.org/TR/2014/WD-gamepad-20140225/</a></li>
+</ul>
+</li>
+<li>New EWK APIs for reference browser
+<ul>
+<li>26 APIs have been added as public APIs (such as ewk_autofill_profile_* and ewk_context_form_*).</li>
+<li>Full specification and documentation will be added.</li>
+</ul>
+</li>
+<li>GetUserMedia - Facing Mode support
+<ul>
+<li>You can select the front or rear camera using JavaScript.</li>
+<li>W3C specification: <a href="http://www.w3.org/TR/mediacapture-streams/#constraints" target="_blank">http://www.w3.org/TR/mediacapture-streams/#constraints</a></li>
+</ul>
+</li>
+</ul>
+
+<h4>Change Notes</h4>
+
+<ul>
+<li>Layout (WebCore) changes (open source adaptation)
+<ul>
+<li>&quot;-webkit-calc&quot;: <a href="https://bugs.webkit.org/show_bug.cgi?id=91951" target="_blank">https://bugs.webkit.org/show_bug.cgi?id=91951</a></li>
+<li>flexbox: <a href="https://bugs.webkit.org/show_bug.cgi?id=110389" target="_blank">https://bugs.webkit.org/show_bug.cgi?id=110389</a></li>
+<li>flexbox: <a href="https://bugs.webkit.org/show_bug.cgi?id=81809" target="_blank">https://bugs.webkit.org/show_bug.cgi?id=81809</a></li>
+<li>flexbox: <a href="https://bugs.webkit.org/show_bug.cgi?id=7077" target="_blank">https://bugs.webkit.org/show_bug.cgi?id=7077</a></li>
+</ul>
+</li>
+</ul>
+
+<h3>Security</h3>
+
+<h4>New Features</h4>
+<ul>
+<li>Enforce security
+<ul>
+<li>Number of root daemons has been reduced and non-root daemons are mostly running as &quot;system(200)&quot; user.</li>
+<li>-fpie build options have been applied to system services to achieve ASLR (Address Space Layout Randomization).</li>
+<li>Smack labels have been dramatically reduced for vconf keys.</li>
+</ul>
+</li>
+<li>Tizen App DRM
+<ul>
+<li>drm-service-core-tizen package has been introduced to decrypt DRM-protected applications.</li>
+</ul>
+</li>
+</ul>
+
+<h4>Change Notes</h4>
+
+<ul>
+<li>Unified Privilege Check for native and Web applications
+<ul>
+<li>wrt-security checking the privilege of Web applications has been removed.</li>
+<li>privilege-checker is responsible for checking the privileges of native applications as well as Web applications.</li>
+<li>Privilege backward compatibility is supported so that a 2.4 device can install applications which have 2.3, 2.3.1, or 2.2.1 in the required version field.</li>
+</ul>
+</li>
+<li>Smack labeling and rule management module architecture has been changed
+<ul>
+<li>Smack rules and labels management modules are integrated into security-server to centralize the Smack configuration.</li>
+</ul>
+</li>
+<li>User Certificate Management has been changed
+<ul>
+<li>User&#39;s trusted certificates have been categorized into e-mail, VPN, and Wi-Fi.</li>
+<li>User can add, remove, enable, and disable their certificates for each category.</li>
+</ul>
+</li>
+<li>APIs for Key manager
+<ul>
+<li>New APIs to handle PKCS12 files, such as ckmc_save_pkcs12, and ckmc_get_pkcs12 have been added.</li>
+<li>New API for certificate verification with designated trust certificates has been added.</li>
+<li>New API for OCSP (Online Certificate Status Protocol) has been added.</li>
+<li>New API to manage access control rules efficiently (kmc_set_permission function) has been added.</li>
+<li>New API that deletes data in the database using an alias (ckmc_remove_alias) has been added.</li>
+<li>New error code (CKMC_ERROR_AUTHENTICATION_FAILED) for per-row password mismatched error has been added.</li>
+<li>Platform level privilege from key-manager&#39;s control APIs has been deleted.</li>
+<li>Getting a certificate chain with aliases API has been deprecated.</li>
+</ul>
+</li>
+<li>Privileges
+<ul>
+<li>Native privileges for the mobile profile
+<ul>
+<li>New privileges:
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/apphistory.read</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/appmanager.kill.bgapp</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/ime</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/imemanager</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/inputgenerator</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/keygrab</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/mapservice</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/mediacontroller.client</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/mediacontroller.server</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/mediahistory.read</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/minicontrol.provider</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/packagemanager.clearcache</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/systemmonitor</span></li>
+</ul>
+</li>
+<li>Deprecated privileges:
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/keymanager.admin</span></li>
+</ul>
+</li>
+<li>Deprecated privileges:
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/keymanager.admin</span></li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Web privileges for the mobile profile
+<ul>
+<li>New privileges:
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/ime</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/led</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/mediacontroller.client</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/mediacontroller.server</span></li>
+</ul>
+</li>
+<li>Deprecated privileges:
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.admin</span> (Use <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth</span> instead.)</li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.gap</span> (Use <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth</span> instead.)</li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.health</span> (Use <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth</span> instead.)</li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth.spp</span> (Use <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/bluetooth</span> instead.)</li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/websetting</span></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+<h4>Known Issues </h4>
+
+<ul>
+<li>Root processes can override the Smack access control check. Smack-related capabilities on root processes have been limited.</li>
+</ul>
+
+<h3>Kernel</h3>
+
+<h4>New Features</h4>
+
+<ul>
+<li>Support for a new mobile reference board TM1 with HD LCD has been added.</li>
+<li>Support for the 6Lowpan module for Bluetooth Low Energy has been added.</li>
+<li>Support for Samsung Game Pad I-GP20 has been added.</li>
+<li>Support for HID device drivers (BT mouse and keyboard) has been added.</li>
+<li>Built-in SWAP kernel module has been added for supporting the dynamic analyzer.</li>
+</ul>
+
+<h4>Change Notes</h4>
+
+<ul>
+<li>Linux kernel version for the mobile profile has been upgraded to Linux-3.10.65.</li>
+</ul>
+
+<h3>System FW</h3>
+
+<h4>New Features</h4>
+
+<ul>
+<li>New APIs to get system CPU / memory usage info have been added to runtime-info.</li>
+<li>New feedback APIs to play sound or vibration associated with properties have been added.</li>
+<li>Tizen zip file system based on user-level filesystem has been provided.</li>
+<li>Forced reclaim based on a hard limit of swap cgroup has been added.</li>
+<li>System event has been exposed to give notifications through the application event system.</li>
+</ul>
+
+<h4>Change Notes</h4>
+
+<ul>
+<li>Removable storage management has been enhanced.</li>
+<li>Restricting CPU resources for background application processes has been enhanced.</li>
+<li>Support for default process smack-labeling for security enhancement has been added.</li>
+<li>Open source upgrades
+<ul>
+<li>dbus version has been upgraded to v1.8.16.</li>
+<li>systemd version has been upgraded to v216.</li>
+</ul>
+</li>
+</ul>
+
+<h3>Compatibility Issues Between 2.4.0 Beta and 2.4.0</h3>
+
+<h4>DALi</h4>
+
+<ul>
+<li>[Changed] PixmapImage class name has been changed to NativeImageSource:
+<ul>
+<li>Old: PixmapImage</li>
+<li>New: NativeImageSource</li>
+</ul>
+</li>
+</ul>
+
+<h4>Service Adaptor</h4>
+
+<ul>
+<li>[Removed] API has been removed, because it is not designed properly for the Service Adaptor:
+<ul>
+<li>service_adaptor_query_plugin_by_file()</li>
+</ul>
+</li>
+</ul>
+
+<h4>Sync Manager</h4>
+
+<ul>
+<li>For API enhancement, several changes have been applied to Sync Manager. For more detailed information, see the API Reference.</li>
+<li>[Changed] 2 APIs may require a proper privilege to work correctly:
+<ul>
+<li>sync_manager_add_data_change_sync_job()
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/calendar.read</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/contact.read</span></li>
+<li>Or both</li>
+</ul>
+</li>
+<li>sync_manager_add_periodic_sync_job()
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/alarm.set</span></li>
+</ul>
+</li>
+</ul>
+</li>
+<li>[Added] New capabilities have been added for media:
+<ul>
+<li>SYNC_SUPPORTS_CAPABILITY_CALENDAR</li>
+<li>SYNC_SUPPORTS_CAPABILITY_CONTACT</li>
+<li>SYNC_SUPPORTS_CAPABILITY_IMAGE</li>
+<li>SYNC_SUPPORTS_CAPABILITY_VIDEO</li>
+<li>SYNC_SUPPORTS_CAPABILITY_SOUND</li>
+<li>SYNC_SUPPORTS_CAPABILITY_MUSIC</li>
+</ul>
+</li>
+<li>[Removed] Some sync_period_e enumeration items have been removed:
+<ul>
+<li>SYNC_PERIOD_INTERVAL_5MIN</li>
+<li>SYNC_PERIOD_INTERVAL_10MIN</li>
+<li>SYNC_PERIOD_INTERVAL_15MIN</li>
+<li>SYNC_PERIOD_INTERVAL_20MIN</li>
+<li>SYNC_PERIOD_INTERVAL_45MIN</li>
+</ul>
+</li>
+<li>[Changed] Parameters have been changed:
+<ul>
+<li>sync_manager_add_periodic_sync_job()
+<ul>
+<li>Old: (account_h account, const char* capability, bundle *extra, sync_period_e sync_period)</li>
+<li>New: (account_h account, const char *sync_job_name, sync_period_e sync_period, sync_option_e sync_option, bundle *sync_job_user_data, int *sync_job_id)</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>[Removed] Some APIs have been removed:
+<ul>
+<li>sync_adapter_init()</li>
+<li>sync_adapter_destroy()</li>
+<li>sync_manager_connect()</li>
+<li>sync_manager_disconnect()</li>
+<li>sync_manager_add_sync_job()</li>
+<li>sync_manager_remove_sync_job()</li>
+<li>sync_manager_remove_periodic_sync_job()</li>
+</ul>
+</li>
+</ul>
+
+<h4>Feedback</h4>
+
+<ul>
+<li>[Removed] feedback_type_e enumeration item has been removed:
+<ul>
+<li>FEEDBACK_TYPE_LED</li>
+</ul>
+</li>
+</ul>
+
+<h4>Media Controller</h4>
+
+<ul>
+<li>[Changed] Item names of several enumerations have been changed to avoid type name duplication. The prefix MC_ is added to all items of each enumeration:
+<ul>
+<li>mc_meta_e
+<ul>
+<li>Old: MEDIA_TITLE, ...</li>
+<li>New: MC_META_MEDIA_TITLE, ...</li>
+</ul>
+</li>
+<li>mc_playback_states_e
+<ul>
+<li>Old: MEDIA_PLAYBACK_STATE_NONE, ...</li>
+<li>New: MC_PLAYBACK_STATE_NONE, ...</li>
+</ul>
+</li>
+<li>mc_shuffle_mode_e
+<ul>
+<li>Old: SHUFFLE_MODE_ON, ...</li>
+<li>New: MC_SHUFFLE_MODE_ON, ...</li>
+</ul>
+</li>
+<li>mc_repeat_mode_e
+<ul>
+<li>Old: REPEAT_MODE_ON, ...</li>
+<li>New: MC_REPEAT_MODE_ON, ...</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+<h4>Key Manager</h4>
+
+<ul>
+<li>[Removed] API has been removed, because it does not work correctly:
+<ul>
+<li>ckmc_get_cert_chain_with_trustedcert_alias()</li>
+</ul>
+</li>
+<li>[Deprecated] API has been deprecated, because new APIs added since 2.4 are recommended for use:
+<ul>
+<li>ckmc_get_cert_chain_with_alias()</li>
+</ul>
+</li>
+</ul>
+
+<h4>Media Vision</h4>
+
+<ul>
+<li>[Removed] Non-supported definition and enumeration have been removed:
+<ul>
+<li>MV_BARCODE_DETECT_ATTR_MODE</li>
+<li>mv_barcode_detect_attr_mode_e</li>
+</ul>
+</li>
+</ul>
+
+<h4>Tone/Wav Player</h4>
+
+<ul>
+<li>[Removed] Non-supported tone_player_error_e enumeration item has been removed:
+<ul>
+<li>TONE_PLAYER_ERROR_NOT_SUPPORTED</li>
+</ul>
+</li>
+</ul>
+
+<h4>Phonenumber Utils</h4>
+
+<ul>
+<li>[Removed] Non-supported phone_number_error_e enumeration item has been removed:
+<ul>
+<li>PHONE_NUMBER_ERROR_PERMISSION_DENIED</li>
+</ul>
+</li>
+</ul>
+
+<h4>Application Framework</h4>
+
+<ul>
+<li>[Deprecated] 2 APIs that are not supported since 2.4 have been deprecated:
+<ul>
+<li>app_get_external_shared_data_path()</li>
+<li>app_get_external_data_path()</li>
+</ul>
+</li>
+<li>[Deprecated] Non-supported operations of application control have been deprecated:
+<ul>
+<li>APP_CONTROL_OPERATION_SEND</li>
+<li>APP_CONTROL_OPERATION_SEND_TEXT</li>
+</ul>
+</li>
+</ul>
+
+<h4>Context Trigger</h4>
+
+<ul>
+<li>[Changed] API behavior has changed. The launch request of the service application is restricted. The function returns CONTEXT_TRIGGER_ERROR_VALID_RULE, if the launch request is for the service application.
+<ul>
+<li>context_trigger_rule_set_action_app_control()</li>
+</ul>
+</li>
+</ul>
+
+<h4>Maps Service</h4>
+
+<ul>
+<li>[Changed] Some APIs require additional privileges to work properly:
+<ul>
+<li>maps_service_create()</li>
+<li>maps_service_geocode()</li>
+<li>maps_service_geocode_inside_area()</li>
+<li>maps_service_geocode_by_structured_address()</li>
+<li>maps_service_reverse_geocode()</li>
+<li>maps_service_search_place()</li>
+<li>maps_service_search_place_by_area()</li>
+<li>maps_service_search_place_by_address()</li>
+<li>maps_service_search_route()</li>
+<li>maps_service_search_route_waypoints()</li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/network.get</span></li>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/internet</span></li>
+<li>Or both</li>
+</ul>
+</li>
+</ul>
+
+<h4>Event</h4>
+
+<ul>
+<li>[Added] New state definition of the battery charger has been added to clarify &quot;discharging&quot;:
+<ul>
+<li>EVENT_KEY_BATTERY_CHARGER_STATUS</li>
+</ul>
+</li>
+</ul>
+
+<h4>NFC</h4>
+
+<ul>
+<li>[Changed] nfc_record_tnf_e type name has been changed to correct a typo:
+<ul>
+<li>Old: NFC_RECORD_TNF_UNCHAGNED</li>
+<li>New: NFC_RECORD_TNF_UNCHANGED</li>
+</ul>
+</li>
+</ul>
+
+<h4>Device</h4>
+
+<ul>
+<li>[Deprecated] 2 APIs have been deprecated to restrict misuse:
+<ul>
+<li>device_display_change_state()</li>
+<li>device_power_wakeup()</li>
+</ul>
+</li>
+</ul>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/2_4_rev1_release_notes.htm b/org.tizen.devtools/html/download/2_4_rev1_release_notes.htm
new file mode 100644 (file)
index 0000000..e5ae1be
--- /dev/null
@@ -0,0 +1,182 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.4 Rev1 Release Notes </title>
+</head>
+
+<body class="no-toc" onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation"></div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<div id="profile"><p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p></div>
+
+<h1>Tizen 2.4 Rev1 Release Notes</h1>
+
+<ul> 
+   <li>Release Date: December 1, 2015</li> 
+</ul>
+ <h2 id="ide_tools">IDE and Tools</h2>
+ <h3>New Features</h3>
+ <ul> 
+   <li>Common
+   <ul> 
+   <li><strong>Tizen 2.4 Rev1 SDK supports developing an application on multi-platform environments. In the 2.4 Rev1 SDK, you can also develop 2.3.1 based applications.</strong></li> 
+   <li><strong>From Tizen 2.4 Rev1, the SDK image installation is not officially supported. Use the Tizen package server for installation.</strong></li>
+   <li>From Tizen 2.4 Rev1, the Update Manager supports the package server mirroring. Without uninstalling the Tizen SDK, you can enhance the installation speed of the new SDK version by changing the target repository address to an alternative repository that exists in your country or region.</li>
+  </ul>
+  </li> 
+   <li>CLI
+   <ul> 
+   <li>Support has been added for the package/install/run/uninstall features for the 2.3.0 projects.</li>
+  </ul>
+  </li>
+   <li>Native UIB and Enventor<ul> 
+   <li>Supports the following host operating systems:
+ <ul> 
+   <li>Tizen 2.3.1 (Mobile/Wearable): Ubuntu&trade; 12.04/14.04 32-bit/64-bit</li> 
+   <li>Tizen 2.4 (Mobile): Ubuntu&trade; 12.04/14.04 32-bit/64-bit, Windows&reg; 7/8 32-bit/64bit</li> 
+  </ul>
+  </li> 
+  </ul>
+  </li>
+   </ul>
+   
+   <h3>Changed Features</h3>
+   
+   <ul> 
+   <li>Common
+   <ul> 
+   <li>The Project wizard has been enhanced to be opened and closed faster than in the 2.4 official version.</li>
+   <li>To improve the security of a connected Tizen device, the execute permission has been changed from the root/administrator to the developer in some features that control the device, such as the dynamic analyzer and SDBD.</li>
+   <li>The IDE has been changed to hold the settings (<strong>filter</strong>, <strong>log level</strong>, <strong>category</strong>) of the Log view after the device is disconnected.</li>
+   <li>The default value for the <strong>log level</strong> property of the Log view has been changed from <strong>Verbose</strong> to <strong>Error</strong>.</li>
+  </ul>
+  </li> 
+   <li>Installer and Update Manager
+   <ul> 
+   <li>A combo box has been added to the Update Manager to easily change the URL of the target repository.</li>
+  </ul>
+  </li>
+  <li>Web IDE<ul> 
+   <li>The Localize wizard has been replaced with the Localization view.</li> 
+   <li>You can localize your resource files and strings.</li> 
+   <li>You can export or import a localized string as a CSV (comma-separated value) file.</li> 
+  </ul>
+ </li> 
+  <li>Native IDE<ul> 
+   <li>The content/code assist feature has been added for the <strong>i18n_get_text()</strong> function. After you complete the <strong>i18n_get_text()</strong> function on the C/C++ source file editor by pressing <strong>Ctrl + Space</strong>, you can see a candidate parameter list which consists of original untranslated strings you added to the PO file.</li> 
+   <li>When you develop a multi-project packaged application (such as a combination of UI and service projects, or UI and shared library projects), the res.xml files of the projects are automatically merged. If a project has no res.xml file, a res.xml is automatically generated for that project and merged with the other res.xml files. </li>
+   <li>The &quot;Export to CLI&quot; menu has been added, and appears when multiple projects are selected.</li> 
+   <li>The Resource Explorer view has been added. It appears only for Tizen 2.4-based projects, not Tizen 2.3.1.</li> 
+   <li>Multi-project packaging policy has been updated.<ul> 
+   <li>A Web UI project can be packaged with several native-widget type projects.</li> 
+   <li>A native IME project can be packaged with several UI application type projects.</li> 
+  </ul></li>   
+  </ul></li>
+  </ul>
+  
+  <h3>Fixed Bugs</h3>
+  
+  <ul> 
+   <li>Common
+   <ul> 
+   <li>The Apple JDK dependency issue, which appeared when starting the Tizen IDE and dynamic analyzer, has been fixed.</li> 
+   </ul>
+   </li> 
+   <li>Native<ul> 
+   <li>The bug, which caused unnecessary files (such as .EDC file) to be included when native modules were packaged into the .tpk file, has been fixed.</li> 
+   </ul></li>
+   <li>CLI<ul> 
+   <li>The bug, which caused the native CLI to return success codes even though a build failed, has been fixed.</li> 
+   </ul></li>
+  </ul>
+  
+  <h3>Known issues</h3>
+  
+  <ul> 
+   <li>Installer and Update Manager
+ <ul> 
+   <li>If there is a multibyte character in the installation path of the Tizen SDK, some development packages cannot find the installed SDK&#39;s location when they are working.</li> 
+   <li>When you install packages by using the All Packages tab in the Update Manager, the number of the progress indicator is only changed each time a package in dependency is downloaded. While downloading, the number of the progress indicator is not changed.</li>
+   <li>When you run the dynamic analyzer on Mac OS, the SDK Update Notification does not appear though there are available SDK updates.</li>
+   <li>If the SDK Update Notification appears when you start the Tizen IDE or Emulator on Mac OS, a terminal (shell.exec) icon can appear on the dock for a few seconds.</li> 
+  </ul>
+  </li> 
+   <li>Native IDE<ul> 
+   <li>When you import some projects generated from Tizen 2.3 Rev2, the import can take some time.</li> 
+   <li>The <strong>Restore Defaults</strong> feature in the Native project&#39;s <strong>properties > C/C++ Build</strong>, does not work properly.</li> 
+  </ul>
+  </li>
+   <li>Emulator
+   <ul> 
+   <li>Ubuntu&trade; sometimes stops responding for a few seconds after closing the Emulator Manager. This issue is related to a bug of IBus (Intelligent Input Bus). When the issue occurs, restart the ibus-daemon by typing <strong>ibus-daemon –drx</strong> at the command prompt, and use another framework, such as uim and fcitx, for multilingual input.</li> 
+   <li>To use the Tizen Emulator, install an Intel VTx supported by the CPU, and the latest version of the graphic card driver provided by the vendor.
+    <ul> 
+   <li>Check the prerequisites for the Tizen Emulator from: <a href="sdk_prerequisites.htm#emulator">Emulator Requirements</a>.</li> 
+   <li>If the host machine is using the Nvidia Optimus&trade; technology on either Ubuntu&trade; or Windows&reg;, you must set the Tizen Emulator to run with your Nvidia&reg; graphics card. If you use Ubuntu&trade;, check the bumblebee project (<a href="https://wiki.ubuntu.com/Bumblebee" target="_blank">https://wiki.ubuntu.com/Bumblebee</a>). If you use Windows&reg;, select &quot;High Speed NVIDIA Processor&quot; as &quot;Preferred Graphics processor&quot; in the Nvidia&reg; control panel.</li>
+   <li>On Ubuntu&trade;, if the graphics driver is outdated, your Ubuntu&trade; desktop session can be occasionally logged out when launching the Emulator Manager, or the Emulator skin can be drawn improperly. Check the prerequisites and upgrade to the latest graphics driver.</li>   
+  </ul>
+  </li>
+   <li>On Ubuntu&trade; 14.04, the shortcut menu can sometimes appear transparently.</li> 
+   <li>On Windows&reg;, depending on your OS theme (such as Non-Aero themes and Windows XP themes), a display surface can be erased for a while if the Emulator window is covered by another window. If you click the Emulator window, the display surface runs correctly again.</li>
+   <li>On Windows&reg;, if a memory allocation error occurs while executing the Emulator, try  the following:
+   <ul> 
+   <li>Close some other programs and try to launch the Emulator again.</li> 
+   <li>If the RAM size is set as 768 or 1024 MB for the VM in the Emulator Manager, change the RAM size to 512 MB.</li>
+   <li>Increase the user area of the virtual memory in the system to 3 GB by typing <strong>bcdedit /set increaseuserva 3072</strong> on the console with administrator rights (Windows&reg; 7 only) and reboot.</li> 
+  </ul>
+  </li> 
+   <li>If you use a MacBook Pro which has both Intel HD and NVidia GPUs, the Emulator may be unexpectedly terminated when you execute with the OpenGL ES ver. v1.1 &amp; v2.0 option. Use the OpenGL ES ver. v2.0 &amp; v3.0 option.</li>    
+  </ul>
+  </li>
+   <li>SDB
+   <ul> 
+   <li>​To use the SDB bash completion feature, type the <strong>source .sdb-complete.bash</strong> command on the bash shell. The feature runs manually from the Tizen 2.4 official version due to the Installer and Update Manager issue.</li> 
+  </ul>
+  </li>
+   <li>Native UIB<ul> 
+   <li>The Native UIB does not support the storyboard for the Tizen 2.3.1 platforms.</li> 
+  </ul></li>   
+  </ul>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/2_4_rev2_release_notes.htm b/org.tizen.devtools/html/download/2_4_rev2_release_notes.htm
new file mode 100644 (file)
index 0000000..31accbd
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Tizen 2.4 Rev2 Release Notes </title>
+</head>
+
+<body class="no-toc" onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation"></div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<div id="profile"><p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p></div>
+
+<h1>Tizen 2.4 Rev2 Release Notes </h1>
+
+<ul> 
+   <li>Release Date: December 23, 2015</li>
+  </ul>
+  
+  <h2 id="ide_tools">IDE and Tools</h2>
+  
+  <h3>Fixed Bugs</h3>
+  
+  <ul> 
+   <li>Web IDE
+   <ul> 
+   <li>The bug, which caused the TV-Extension-installed SDK to fail to install and launch a TV application on the target, such as the Tizen emulator, has been fixed.</li> 
+   <li>The library conflict between the TV-Extension and the SDK, which occurs when the TV-Extension-installed SDK debugs an application, has been fixed.</li> 
+  </ul>
+  </li> 
+   <li>Web Inspector
+   <ul> 
+   <li>The bug, which caused the socket connection between the Web Inspector and the Tizen emulator to close, has been fixed.</li> 
+   </ul>
+  </li> 
+  </ul>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/advanced_configuration.htm b/org.tizen.devtools/html/download/advanced_configuration.htm
new file mode 100644 (file)
index 0000000..43dff13
--- /dev/null
@@ -0,0 +1,173 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Advanced Configuration</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#since">Advanced Configuration (Since Version 2.4)</a></li>
+            <li><a href="#earlier">Advanced Configuration (Before Version 2.4)</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Advanced Configuration</h1>
+
+<p>This page provides advanced configuration of SDK installation for Tizen 2.4 SDK and earlier versions. Please check your SDK version.</p>
+
+<h2 id="since">Advanced Configuration (Since Version 2.4)</h2>
+
+<p>The Update Manager configuration consists of the <strong>install option</strong>, <strong>network proxy setting</strong>, and <strong>extension extra repository</strong>.</p>
+
+<h3>Setting the Install Option</h3>
+
+<p>You can install or update the Tizen SDK by using one of the following methods. If you change a package repository, installed packages are uninstalled and new packages are installed from the changed repository.</p>
+
+<h4>Configuring the Package Server</h4>
+
+<p>To configure the <strong>Package Server</strong> in the <strong>Install Option</strong> tab:</p>
+
+<ol> 
+   <li>Run the <strong>Update Manager</strong> by clicking the following shortcut:
+   <ul> 
+   <li>On Ubuntu, go to <strong>Dashboard Home &gt; Update Manager</strong>.</li> 
+   <li>On Windows&reg;, go to <strong>Start &gt; All Programs &gt; Tizen SDK &gt; Update Manager</strong>.</li> 
+   <li>On Mac OS&reg; X, go to <strong>Launchpad &gt; Update Manager</strong>.</li> 
+  </ul>
+  </li>
+   <li>Click the <strong>All Packages</strong> tab.</li> 
+   <li>Click <strong>Configuration</strong>. The <strong>Configuration</strong> dialog box appears.</li>
+   <li>Click the <strong>Install Option</strong> tab (selected by default).</li> 
+   <li>In the combo box at the top, select the <strong>Package Server</strong>.</li>
+   <li>In the text box, type an available repository address.</li>
+   <li>Click <strong>Refresh</strong>.</li>
+   <li>In the <strong>Distribution</strong> box, select the distribution you want to download.</li>
+   <li>Click <strong>Confirm</strong>.</li>
+  </ol>
+  
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">If the <strong>Auto update</strong> is selected, the Update Manager automatically updates the latest version of the Tizen SDK.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+  
+  <h4>Configuring the SDK Image</h4>
+  
+  <p>To configure the <strong>SDK Image</strong> in the <strong>Install Option</strong> tab:</p>
+  
+  <ol> 
+   <li>Run the <strong>Update Manager</strong> by clicking the following shortcut:
+   <ul> 
+   <li>On Ubuntu, go to <strong>Dashboard Home &gt; Update Manager</strong>.</li> 
+   <li>On Windows&reg;, go to <strong>Start &gt; All Programs &gt; Tizen SDK &gt; Update Manager</strong>.</li> 
+   <li>On Mac OS&reg; X, go to <strong>Launchpad &gt; Update Manager</strong>.</li> 
+  </ul>
+  </li>
+   <li>Click the <strong>All Packages</strong> tab.</li> 
+   <li>Click <strong>Configuration</strong>. The <strong>Configuration</strong> dialog box appears.</li>
+   <li>Click the <strong>Install Option</strong> tab (selected by default).</li> 
+   <li>In the combo box at the top, select the <strong>SDK Image</strong>.</li>
+   <li>Click the <strong>folder</strong>, browse to the SDK image file, and click <strong>OK</strong>.</li>
+   <li>Click <strong>Confirm</strong>.</li>
+  </ol>
+  
+  <h4>Configuring the Proxy</h4>
+  
+  <p>You can configure a proxy to connect to a repository server:</p>
+  
+  <ol> 
+   <li>Run the <strong>Update Manager</strong> by clicking the following shortcut:
+   <ul> 
+   <li>On Ubuntu, go to <strong>Dashboard Home &gt; Update Manager</strong>.</li> 
+   <li>On Windows&reg;, go to <strong>Start &gt; All Programs &gt; Tizen SDK &gt; Update Manager</strong>.</li> 
+   <li>On Mac OS&reg; X, go to <strong>Launchpad &gt; Update Manager</strong>.</li> 
+  </ul>
+  </li>
+   <li>Click the <strong>All Packages</strong> tab.</li> 
+   <li>Click <strong>Configuration</strong>. The <strong>Configuration</strong> dialog box appears.</li>
+   <li>Click the <strong>Proxy Settings</strong> tab.</li> 
+   <li>Select the configuration you want to use. If you select <strong>Manual Proxy Configuration</strong>, enter <strong>HTTP Proxy</strong> and <strong>Port</strong>.</li>
+   <li>Click <strong>Confirm</strong>.</li>
+  </ol>
+  
+  <h4>Configuring the Extra Repository</h4>
+  
+  <p>The Tizen SDK supports downloading extension packages from extra repositories which are managed by external developers and companies.</p>
+  <p>For more information, see <a href="extension_sdks.htm">Extension SDKs</a>.</p>
+  
+  <h2 id="earlier">Advanced Configuration (Before Version 2.4)</h2>
+  
+  <p>You can choose another version of the Tizen SDK with this functionality. To choose another version:</p>
+  
+  <ol> 
+   <li>Run the SDK install manager. The SDK set-up wizard starts.</li> 
+   <li>Click <strong>Advanced</strong>.</li> 
+   <li>In the <strong>Advanced Configuration</strong> window, select the <strong>Package Server</strong> radio button and uncheck the <strong>Auto update</strong> check button.</li> 
+   <li>Select the SDK version which you want to install and click <strong>OK</strong>.</li> 
+   <li>Click <strong>Next</strong> and follow the normal installation procedure.</li> 
+  </ol>
+  
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">If the <strong>Auto update</strong> button is selected, the Install Manager automatically updates the latest version of the Tizen SDK.</td> 
+    </tr> 
+   </tbody> 
+  </table> 
+  
+  <p>For more information, see <a href="http://download.tizen.org/sdk/packages" target="_blank">Tizen SDK package server</a>.</p>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/download.htm b/org.tizen.devtools/html/download/download.htm
new file mode 100644 (file)
index 0000000..af06bbe
--- /dev/null
@@ -0,0 +1,556 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Download</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#sdk_24">Tizen 2.4 Rev2 SDK</a></li>
+            <li><a href="#sdk_231">Tizen 2.3.1 Rev1 SDK</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Download</h1>
+
+<p>The Tizen SDK is a comprehensive set of tools for developing Tizen Web and Native applications. It consists of IDE, Emulator, toolchain, sample code, and documentation. Tizen SDK runs on Windows*, Ubuntu*, as well as Mac OS X*. Tizen applications may be developed without relying on an official Tizen IDE, as long as the application complies with Tizen packaging rules.</p>
+
+<p>Click the package name to download the SDK. See <a href="installing_sdk.htm">Installing the Tizen SDK</a> for installation instructions. Refer to the <a href="release_notes.htm">Release Notes</a> for more information.</p>
+
+<table class="note">
+    <tbody>
+        <tr>
+            <th class="note">Note</th>
+        </tr>
+        <tr>
+            <td class="note">
+                       <ul><li>Tizen 2.4 Rev2 SDK supports developing an application on multi-platform environments. In Tizen 2.4 Rev2 SDK, you can also develop 2.3.1 based applications.</li>
+                       <li>From Tizen 2.4 Rev1 SDK onwards, SDK image installation is no longer officially supported. Use the Tizen package server for installation.
+                       <ul><li><a href="#sdk_24">Installer for Tizen 2.4 Rev1 SDK and higher</a></li>
+                       <li><a href="#sdk_231">Installer for Tizen 2.3.1 Rev1 SDK</a></li></ul></li>
+                       </ul></td>
+        </tr>
+    </tbody>
+</table>
+
+<table class="note">
+    <tbody>
+        <tr>
+            <th class="note">CDN</th>
+        </tr>
+        <tr>
+            <td class="note">For CDN information, see <a href="https://wiki.tizen.org/wiki/Install_Tizen_SDK_using_CDN" target="_blank">Install Tizen SDK using CDN</a>.</td>
+        </tr>
+    </tbody>
+</table>
+
+<table class="note">
+    <tbody>
+        <tr>
+            <th class="note">Certificate for Device Testing</th>
+        </tr>
+        <tr>
+            <td class="note">After SDK installation, Generating and Registering a Certificate is needed. This would allow for testing on an actual device and application packaging. Follow the steps found <a href="http://developer.samsung.com/gear/guide-certification" target="_blank">here</a> to do so.</td>
+        </tr>
+    </tbody>
+</table>
+
+<h2 id="sdk_24" name="sdk_24">Tizen 2.4 Rev2 SDK</h2>
+
+<h3 id="installers" name="installers">Installer</h3>
+
+<ul>
+<li><p>CLI: Command Line Interface</p></li>
+<li><p>IDE: Integrated Development Environment</p></li>
+</ul>
+
+<table>
+    <caption>Table: Installers</caption>
+    <tbody>
+        <tr>
+            <th>Platform</th>
+            <th>Installer</th>
+            <th>File Size</th>
+            <th>MD5 Checksum</th>
+            <th>Updated Date</th>
+        </tr>
+        <tr>
+            <td>
+                <p>Ubuntu&reg; 32-bit (CLI)</p>
+            </td>
+            <td>
+                <p><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev2/tizen-web-cli_TizenSDK_2.4.0_Rev2_ubuntu-32.bin">tizen-web-cli_TizenSDK_2.4.0_Rev2_ubuntu-32.bin</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_usa_ubuntu-32.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_brazil_ubuntu-32.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_singapore_ubuntu-32.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_singapore_ubuntu-32.bin">India</a></p>
+            </td>
+            <td>
+                <p>108M</p>
+            </td>
+            <td>
+                <p>f3e8e1bfec24a8eea56ec84502bd2690</p>
+            </td>
+            <td>
+                <p>Dec 23, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Ubuntu&reg; 32-bit (IDE)</p>
+            </td>
+            <td>
+                <p><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev2/tizen-web-ide_TizenSDK_2.4.0_Rev2_ubuntu-32.bin">tizen-web-ide_TizenSDK_2.4.0_Rev2_ubuntu-32.bin</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_usa_ubuntu-32.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_brazil_ubuntu-32.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_singapore_ubuntu-32.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_singapore_ubuntu-32.bin">India</a></p>
+            </td>
+            <td>
+                <p>417M</p>
+            </td>
+            <td>
+                <p>8540823f39057db24cf9b73eea1b276a</p>
+            </td>
+            <td>
+                <p>Dec 23, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Ubuntu&reg; 64-bit (CLI)</p>
+            </td>
+            <td>
+                <p><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev2/tizen-web-cli_TizenSDK_2.4.0_Rev2_ubuntu-64.bin">tizen-web-cli_TizenSDK_2.4.0_Rev2_ubuntu-64.bin</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_usa_ubuntu-64.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_brazil_ubuntu-64.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_singapore_ubuntu-64.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_singapore_ubuntu-64.bin">India</a></p>
+            </td>
+            <td>
+                <p>109M</p>
+            </td>
+            <td>
+                <p>fc6b85d43709ebf311ea01b98af73097</p>
+            </td>
+            <td>
+                <p>Dec 23, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Ubuntu&reg; 64-bit (IDE)</p>
+            </td>
+            <td>
+                <p><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev2/tizen-web-ide_TizenSDK_2.4.0_Rev2_ubuntu-64.bin">tizen-web-ide_TizenSDK_2.4.0_Rev2_ubuntu-64.bin</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_usa_ubuntu-64.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_brazil_ubuntu-64.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_singapore_ubuntu-64.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_singapore_ubuntu-64.bin">India</a></p>
+            </td>
+            <td>
+                <p>418M</p>
+            </td>
+            <td>
+                <p>6ae7ffadaee7726232161a4e767d935b</p>
+            </td>
+            <td>
+                <p>Dec 23, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Windows&reg; 32-bit (CLI)</p>
+            </td>
+            <td>
+                <p><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev2/tizen-web-cli_TizenSDK_2.4.0_Rev2_windows-32.exe">tizen-web-cli_TizenSDK_2.4.0_Rev2_windows-32.exe</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_usa_windows-32.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_brazil_windows-32.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_singapore_windows-32.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_singapore_windows-32.exe">India</a></p>
+            </td>
+            <td>
+                <p>112M</p>
+            </td>
+            <td>
+                <p>a2730ee630e5a39feb96d325051ecee3</p>
+            </td>
+            <td>
+                <p>Dec 23, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Windows&reg; 32-bit (IDE)</p>
+            </td>
+            <td>
+                <p><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev2/tizen-web-ide_TizenSDK_2.4.0_Rev2_windows-32.exe">tizen-web-ide_TizenSDK_2.4.0_Rev2_windows-32.exe</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_usa_windows-32.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_brazil_windows-32.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_singapore_windows-32.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_singapore_windows-32.exe">India</a></p>
+            </td>
+            <td>
+                <p>432M</p>
+            </td>
+            <td>
+                <p>c96b4ec76abac95815fadc6c2ac91637</p>
+            </td>
+            <td>
+                <p>Dec 23, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Windows&reg; 64-bit (CLI)</p>
+            </td>
+            <td>
+                <p><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev2/tizen-web-cli_TizenSDK_2.4.0_Rev2_windows-64.exe">tizen-web-cli_TizenSDK_2.4.0_Rev2_windows-64.exe</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_usa_windows-64.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_brazil_windows-64.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_singapore_windows-64.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_singapore_windows-64.exe">India</a></p>
+            </td>
+            <td>
+                <p>112M</p>
+            </td>
+            <td>
+                <p>c9e948d0d85a0aaf4dc05307e495b8c8</p>
+            </td>
+            <td>
+                <p>Dec 23, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Windows&reg; 64-bit (IDE)</p>
+            </td>
+            <td>
+                <p><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev2/tizen-web-ide_TizenSDK_2.4.0_Rev2_windows-64.exe">tizen-web-ide_TizenSDK_2.4.0_Rev2_windows-64.exe</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_usa_windows-64.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_brazil_windows-64.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_singapore_windows-64.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_singapore_windows-64.exe">India</a></p>
+            </td>
+            <td>
+                <p>431M</p>
+            </td>
+            <td>
+                <p>e1378451faf7fd7c4ca79a91c34196f1</p>
+            </td>
+            <td>
+                <p>Dec 23, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Mac OS X&reg; (Intel, CLI)</p>
+            </td>
+            <td>
+                <p><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev2/tizen-web-cli_TizenSDK_2.4.0_Rev2_macos-64.bin">tizen-web-cli_TizenSDK_2.4.0_Rev2_macos-64.bin</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_usa_macos-64.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_brazil_macos-64.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_singapore_macos-64.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-cli_TizenSDK_2.4.0_Rev2_singapore_macos-64.bin">India</a></p>
+            </td>
+            <td>
+                <p>108M</p>
+            </td>
+            <td>
+                <p>82a1bfaba048ae997ce218fa5505a4d2</p>
+            </td>
+            <td>
+                <p>Dec 23, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Mac OS X&reg; (Intel, IDE)</p>
+            </td>
+            <td>
+                <p><a href="http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev2/tizen-web-ide_TizenSDK_2.4.0_Rev2_macos-64.dmg">tizen-web-ide_TizenSDK_2.4.0_Rev2_macos-64.dmg</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_usa_macos-64.dmg">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_brazil_macos-64.dmg">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_singapore_macos-64.dmg">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-web-ide_TizenSDK_2.4.0_Rev2_singapore_macos-64.dmg">India</a></p>
+            </td>
+            <td>
+                <p>426M</p>
+            </td>
+            <td>
+                <p>8581d064ce87f60c1c73483f084a8c21</p>
+            </td>
+            <td>
+                <p>Dec 23, 2015</p>
+            </td>
+        </tr>
+    </tbody>
+</table>
+
+<h2 id="sdk_231" name="sdk_231">Tizen 2.3.1 Rev1 SDK</h2>
+
+<h3 id="install_managers" name="install_managers">Install Manager</h3>
+
+<table>
+    <caption>Table: Install Managers</caption>
+    <tbody>
+        <tr>
+            <th>Platform</th>
+            <th>Install Manager</th>
+            <th>File Size</th>
+            <th>MD5 Checksum</th>
+            <th>Updated Date</th>
+        </tr>
+        <tr>
+            <td>
+                <p>Ubuntu&reg; 32-bit</p>
+            </td>
+            <td>
+                <p><a href="https://download.tizen.org/sdk/InstallManager/tizen-sdk-2.3.1-rev1/tizen-sdk_2.3.1_rev1_ubuntu-32.bin">tizen-sdk_2.3.1_rev1_ubuntu-32.bin</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_ubuntu-32.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_ubuntu-32.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_ubuntu-32.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_ubuntu-32.bin">India</a></p>
+            </td>
+            <td>
+                <p>5.6M</p>
+            </td>
+            <td>
+                <p>4139060559128997d9b8628523a3b646</p>
+            </td>
+            <td>
+                <p>Nov 13, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Ubuntu&reg; 64-bit</p>
+            </td>
+            <td>
+                <p><a href="https://download.tizen.org/sdk/InstallManager/tizen-sdk-2.3.1-rev1/tizen-sdk_2.3.1_rev1_ubuntu-64.bin">tizen-sdk_2.3.1_rev1_ubuntu-64.bin</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_ubuntu-64.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_ubuntu-64.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_ubuntu-64.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_ubuntu-64.bin">India</a></p>
+            </td>
+            <td>
+                <p>5.7M</p>
+            </td>
+            <td>
+                <p>4a861092802b2082711bdcf27d8c3edd</p>
+            </td>
+            <td>
+                <p>Nov 13, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Windows&reg; 32-bit</p>
+            </td>
+            <td>
+                <p><a href="https://download.tizen.org/sdk/InstallManager/tizen-sdk-2.3.1-rev1/tizen-sdk_2.3.1_rev1_windows-32.exe">tizen-sdk_2.3.1_rev1_windows-32.exe</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_windows-32.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_windows-32.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_windows-32.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_windows-32.exe">India</a></p>
+            </td>
+            <td>
+                <p>6.1M</p>
+            </td>
+            <td>
+                <p>2ae44756fc2a62620cadad9628784d21</p>
+            </td>
+            <td>
+                <p>Nov 13, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Windows&reg; 64-bit</p>
+            </td>
+            <td>
+                <p><a href="https://download.tizen.org/sdk/InstallManager/tizen-sdk-2.3.1-rev1/tizen-sdk_2.3.1_rev1_windows-64.exe">tizen-sdk_2.3.1_rev1_windows-64.exe</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_windows-64.exe">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_windows-64.exe">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_windows-64.exe">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_windows-64.exe">India</a></p>
+            </td>
+            <td>
+                <p>6.1M</p>
+            </td>
+            <td>
+                <p>abc6d40a7a16fcca623bd3096b3ffa7f</p>
+            </td>
+            <td>
+                <p>Nov 13, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Mac OS X&reg; (Intel)</p>
+            </td>
+            <td>
+                <p><a href="https://download.tizen.org/sdk/InstallManager/tizen-sdk-2.3.1-rev1/tizen-sdk_2.3.1_rev1_macos-64.dmg">tizen-sdk_2.3.1_rev1_macos-64.dmg</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_macos-64.dmg">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_macos-64.dmg">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_macos-64.dmg">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_macos-64.dmg">India</a></p>
+            </td>
+            <td>
+                <p>5.8M</p>
+            </td>
+            <td>
+                <p>8116e3f2fe7b2ca062cece82e42e758d</p>
+            </td>
+            <td>
+                <p>Nov 13, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Mac OS X&reg; (Intel, CLI)</p>
+            </td>
+            <td>
+                <p><a href="https://download.tizen.org/sdk/InstallManager/tizen-sdk-2.3.1-rev1/tizen-sdk_2.3.1_rev1_macos-64.bin">tizen-sdk_2.3.1_rev1_macos-64.bin</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_macos-64.bin">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_macos-64.bin">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_macos-64.bin">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk_2.3.1_rev1_macos-64.bin">India</a></p>
+            </td>
+            <td>
+                <p>5.6M</p>
+            </td>
+            <td>
+                <p>ad810e3cad2fb0cf0abfabfae2af1543</p>
+            </td>
+            <td>
+                <p>Nov 13, 2015</p>
+            </td>
+        </tr>
+    </tbody>
+</table>
+
+<h3 id="sdk_images" name="sdk_images">SDK Image</h3>
+
+<table>
+    <caption>Table: SDK Images</caption>
+    <tbody>
+        <tr>
+            <th>Platform</th>
+            <th>SDK Image</th>
+            <th>File Size</th>
+            <th>MD5 Checksum</th>
+            <th>Updated Date</th>
+        </tr>
+        <tr>
+            <td>
+                <p>Ubuntu&reg; 32-bit</p>
+            </td>
+            <td>
+                <p><a href="https://download.tizen.org/sdk/sdk-images/2.3.1_Rev1/tizen-sdk-image-TizenSDK_2.3.1_Rev1-ubuntu32.zip">tizen-sdk- image-TizenSDK_2.3.1_Rev1-ubuntu32.zip</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-ubuntu32.zip">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-ubuntu32.zip">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-ubuntu32.zip">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-ubuntu32.zip">India</a></p>
+            </td>
+            <td>
+                <p>2.0G</p>
+            </td>
+            <td>
+                <p>5f971fbb93bf9bdffa53ac3ac1c99acb</p>
+            </td>
+            <td>
+                <p>Nov 13, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Ubuntu&reg; 64-bit</p>
+            </td>
+            <td>
+                <p><a href="https://download.tizen.org/sdk/sdk-images/2.3.1_Rev1/tizen-sdk-image-TizenSDK_2.3.1_Rev1-ubuntu64.zip">tizen-sdk- image-TizenSDK_2.3.1_Rev1-ubuntu64.zip</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-ubuntu64.zip">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-ubuntu64.zip">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-ubuntu64.zip">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-ubuntu64.zip">India</a></p>
+            </td>
+            <td>
+                <p>2.0G</p>
+            </td>
+            <td>
+                <p>3de9c6e70bb1c8f916438ab145733695</p>
+            </td>
+            <td>
+                <p>Nov 13, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Windows&reg; 32-bit</p>
+            </td>
+            <td>
+                <p><a href="https://download.tizen.org/sdk/sdk-images/2.3.1_Rev1/tizen-sdk-image-TizenSDK_2.3.1_Rev1-windows32.zip">tizen-sdk- image-TizenSDK_2.3.1_Rev1-windows32.zip</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-windows32.zip">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-windows32.zip">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-windows32.zip">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-windows32.zip">India</a></p>
+            </td>
+            <td>
+                <p>2.3G</p>
+            </td>
+            <td>
+                <p>fb26bec746b1582626470412f2156b02</p>
+            </td>
+            <td>
+                <p>Nov 13, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Windows&reg; 64-bit</p>
+            </td>
+            <td>
+                <p><a href="https://download.tizen.org/sdk/sdk-images/2.3.1_Rev1/tizen-sdk-image-TizenSDK_2.3.1_Rev1-windows64.zip">tizen-sdk- image-TizenSDK_2.3.1_Rev1-windows64.zip</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-windows64.zip">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-windows64.zip">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-windows64.zip">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-windows64.zip">India</a></p>
+            </td>
+            <td>
+                <p>2.3G</p>
+            </td>
+            <td>
+                <p>ccc4ce2fc5059d7de2bda704432ef4c4</p>
+            </td>
+            <td>
+                <p>Nov 13, 2015</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>Mac OS X&reg; (Intel)</p>
+            </td>
+            <td>
+                <p><a href="https://download.tizen.org/sdk/sdk-images/2.3.1_Rev1/tizen-sdk-image-TizenSDK_2.3.1_Rev1-macos64.zip">tizen-sdk- image-TizenSDK_2.3.1_Rev1-macos64.zip</a></p>
+                <p>Alternative Locations:</p>
+                <p><a href="http://usa.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-macos64.zip">Global</a> | <a href="http://brazil.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-macos64.zip">Brazil</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-macos64.zip">China</a> | <a href="http://singapore.sdk-dl.tizen.org/tizen-sdk-image-TizenSDK_2.3.1_Rev1-macos64.zip">India</a></p>
+            </td>
+            <td>
+                <p>1.7G</p>
+            </td>
+            <td>
+                <p>d0a16b20b58f862668a7ff79c140c5ad</p>
+            </td>
+            <td>
+                <p>Nov 13, 2015</p>
+            </td>
+        </tr>
+    </tbody>
+</table>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/extension_sdks.htm b/org.tizen.devtools/html/download/extension_sdks.htm
new file mode 100644 (file)
index 0000000..5336e24
--- /dev/null
@@ -0,0 +1,213 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Extension SDKs</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#since">Extension SDKs (Since Version 2.4)</a></li>
+            <li><a href="#before">Extension SDKs (Before Version 2.4)</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Extension SDKs</h1>
+
+<p>The Tizen SDK supports extension packages, called extra repositories, contributed by external developers and companies.</p>
+
+<h2 id="since" name="since">Extension SDKs (Since Version 2.4)</h2>
+
+<h3>Adding an Extra Repository</h3>
+
+<ol>
+<li>
+<p>Run the <strong>Update Manager</strong> by clicking the following shortcut:</p>
+<ul>
+<li><p>On Ubuntu, go to <strong>Dashboard Home &gt; Update Manager</strong>.</p></li>
+<li><p>On Windows&reg;, go to <strong>Start &gt; All Programs &gt; Tizen SDK &gt; Update Manager</strong>.</p></li>
+<li><p>On Mac OS&reg; X, go to <strong>Launchpad &gt; Update Manager</strong>.</p></li>
+</ul>
+</li>
+<li><p>Click the <strong>All Packages</strong> tab.</p></li>
+<li><p>Click <strong>Configuration</strong>. The <strong>Configuration</strong> dialog box appears.</p></li>
+<li><p>Click the <strong>Extra Repository</strong> tab.</p></li>
+<li><p>Click <strong>Add</strong>. The <strong>Add repository</strong> dialog box appears.</p></li>
+<li><p>Enter <strong>Name</strong>.</p></li>
+<li><p>Enter <strong>Repository</strong> that indicates the external server address. You can also click the <strong>Folder</strong> icon on <strong>Repository</strong> to select a local image file or local server location.</p></li>
+<li><p>Click <strong>OK</strong>.</p></li>
+<li><p>In the <strong>Configuration</strong> dialog box, check the repository information in the table.</p></li>
+<li><p>Click <strong>Confirm</strong>.</p></li>
+</ol>
+
+<table class="note">
+    <tbody>
+        <tr>
+            <th class="note">Note</th>
+        </tr>
+        <tr>
+            <td class="note">Adding an alternative for the existing repository is not recommended. If you add one anyway, you MUST first deactivate the existing repository and remove all the extra packages from it.</td>
+        </tr>
+    </tbody>
+</table>
+
+<h3>Removing an Extra Repository</h3>
+
+<ol>
+<li>
+<p>Run the <strong>Update Manager</strong> by clicking the following shortcut:</p>
+<ul>
+<li><p>On Ubuntu, go to <strong>Dashboard Home &gt; Update Manager</strong>.</p></li>
+<li><p>On Windows&reg;, go to <strong>Start &gt; All Programs &gt; Tizen SDK &gt; Update Manager</strong>.</p></li>
+<li><p>On Mac OS&reg; X, go to <strong>Launchpad &gt; Update Manager</strong>.</p></li>
+</ul>
+</li>
+<li><p>Click the <strong>All Packages</strong> tab.</p></li>
+<li><p>Click <strong>Configuration</strong>. The <strong>Configuration</strong> dialog box appears.</p></li>
+<li><p>Click the <strong>Extra Repository</strong> tab.</p></li>
+<li><p>In the table, click the <strong>Trash</strong> icon for the repository.</p></li>
+<li><p>Click <strong>Confirm</strong>.</p></li>
+</ol>
+
+<table class="note">
+    <tbody>
+        <tr>
+            <th class="note">Note</th>
+        </tr>
+        <tr>
+            <td class="note">If the external repository is removed, the packages from the external repository are deprecated.</td>
+        </tr>
+    </tbody>
+</table>
+
+<h3>Modifying an Extra Repository</h3>
+
+<ol>
+<li>
+<p>Run the <strong>Update Manager</strong> by clicking the following shortcut:</p>
+<ul>
+<li><p>On Ubuntu, go to <strong>Dashboard Home &gt; Update Manager</strong>.</p></li>
+<li><p>On Windows&reg;, go to <strong>Start &gt; All Programs &gt; Tizen SDK &gt; Update Manager</strong>.</p></li>
+<li><p>On Mac OS&reg; X, go to <strong>Launchpad &gt; Update Manager</strong>.</p></li>
+</ul>
+</li>
+<li><p>Click the <strong>All Packages</strong> tab.</p></li>
+<li><p>Click <strong>Configuration</strong>. The <strong>Configuration</strong> dialog box appears.</p></li>
+<li><p>Click the <strong>Extra Repository</strong> tab.</p></li>
+<li><p>In the table, click the target repository and click <strong>Modify</strong>. The <strong>Modify repository</strong> dialog box appears.</p></li>
+<li>
+<p>Make modifications, as needed:</p>
+<ul>
+<li><p>Modify <strong>Name</strong>.</p></li>
+<li><p>Modify <strong>Repository</strong> that indicates the external server address. You can also click the <strong>Folder</strong> icon on <strong>Repository</strong> to select a local image file or local server location.</p></li>
+</ul>
+</li>
+<li><p>Click <strong>OK</strong>.</p></li>
+<li><p>In the <strong>Configuration</strong> dialog box, select the check box of the modified repository in the table.</p></li>
+<li><p>Click <strong>Confirm</strong>.</p></li>
+</ol>
+
+<h3>Activating or Deactivating an Extra Repository</h3>
+
+<ol>
+<li>
+<p>Run the <strong>Update Manager</strong> by clicking the following shortcut:</p>
+<ul>
+<li><p>On Ubuntu, go to <strong>Dashboard Home &gt; Update Manager</strong>.</p></li>
+<li><p>On Windows&reg;, go to <strong>Start &gt; All Programs &gt; Tizen SDK &gt; Update Manager</strong>.</p></li>
+<li><p>On Mac OS&reg; X, go to <strong>Launchpad &gt; Update Manager</strong>.</p></li>
+</ul>
+</li>
+<li><p>Click the <strong>All Packages</strong> tab.</p></li>
+<li><p>Click <strong>Configuration</strong>. The <strong>Configuration</strong> dialog box appears.</p></li>
+<li><p>Click the <strong>Extra Repository</strong> tab.</p></li>
+<li><p>In the table, select the check box of the repository to be activated, or clear the check box of the repository to be deactivated.</p></li>
+<li><p>Click <strong>Confirm</strong>.</p></li>
+</ol>
+
+<table class="note">
+    <tbody>
+        <tr>
+            <th class="note">Note</th>
+        </tr>
+        <tr>
+            <td class="note">If the external repository is deactivated, the packages from the external repository are not shown on the All Packages tab.</td>
+        </tr>
+    </tbody>
+</table>
+
+<h2 id="before" name="before">Extension SDKs (Before Version 2.4)</h2>
+
+<h3>Adding Repositories</h3>
+
+To add extra repositories, fetch them from an external server:
+
+<ol>
+<li><p>Run the SDK Install Manager.</p></li>
+<li><p>After the SDK is launched, click <strong>Next</strong>.</p></li>
+<li><p>Click <strong>Extra Repository</strong> on the component selection page.</p></li>
+<li><p>Click <strong>Add</strong> on the <strong>Extra Repository</strong> dialog.</p></li>
+<li><p>Enter the external server and repository name and click <strong>OK</strong>.</p></li>
+<li>
+<p>When you see the repository information, click <strong>OK</strong>.</p>
+<p>The extra packages are displayed below the <strong>Extras</strong> component.</p>
+</li>
+<li><p>Select the required packages and click <strong>Install</strong>.</p></li>
+</ol>
+
+<h3>Removing Repositories</h3>
+
+To remove extra repositories:
+
+<ol>
+<li><p>Run the SDK Install Manager.</p></li>
+<li><p>After the SDK is launched, click <strong>Next</strong>.</p></li>
+<li><p>Click <strong>Extra Repository</strong> on the component selection page.</p></li>
+<li><p>In the table, select the repository that you want to remove and click <strong>Remove</strong>. If the installed packages belong to the selected repository, the packages are removed.</p></li>
+</ol>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/installing_sdk.htm b/org.tizen.devtools/html/download/installing_sdk.htm
new file mode 100644 (file)
index 0000000..0c709c9
--- /dev/null
@@ -0,0 +1,452 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Installing the Tizen SDK</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#since">SDK Installation (Since Version 2.4</a></li>
+            <li><a href="#before">SDK Installation (Before Version 2.4)</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Installing the Tizen SDK</h1>
+
+<p>The following instructions consist of 2 parts: the Tizen SDK installation since version 2.4, and the SDK installation of the earlier versions.</p>
+
+<p>Since version 2.4, Tizen GUI Installer is used instead of the Tizen install manager. Check the SDK version before the installation.</p>
+
+<h2 id="since" name="since">SDK Installation (Since Version 2.4)</h2>
+
+<p>You can install the SDK with the Tizen GUI installer or the CLI installer. To update or uninstall the SDK, see <a href="updating_sdk.htm">Updating the Tizen SDK</a> or <a href="uninstalling_sdk.htm">Uninstalling the Tizen SDK</a>. For more information about the configuration, see <a href="advanced_configuration.htm">Advanced Configuration</a>.</p>
+
+<p>Before starting the installation, check the <a href="sdk_prerequisites.htm">prerequisites</a>.</p>
+
+<p>You can install the SDK by using one of the following methods:</p>
+
+<h3>Tizen GUI Installer</h3>
+
+<p>To install the SDK using the Tizen GUI Installer:</p>
+
+<ol>
+<li><p><a href="download.htm#sdk_24">Download the appropriate GUI Installer for your platform.</a></p></li>
+<li>
+<p>Run the GUI Installer:</p>
+<ul>
+<li><p>On Ubuntu, open the terminal, go to the directory where the installer is downloaded, and enter the <span style="font-family: Courier New,Courier,monospace">chmod +x</span> command to apply the execute permission to the installer file. Execute the installer.</p></li>
+<li><p>On Microsoft Windows&reg;, double-click the installer icon.</p></li>
+<li><p>On Mac OS&reg; X, double-click the .dmg file to mount, and double-click the installer icon.</p></li>
+</ul>
+</li>
+<li><p>If you agree to the license terms, select the <strong>Accept</strong> check box. The <strong>Install</strong> button is enabled. (To install, you must agree to the license terms.)</p></li>
+<li><p>Select the SDK installation location.</p></li>
+<li><p>Click <strong>Install</strong>.</p></li>
+<li><p>When the installation is completed, click <strong>Done</strong>.</p></li>
+</ol>
+
+<h3>Tizen CLI Installer</h3>
+
+<p>The CLI (command line interface) provides functional tools for running the CLI Installer without the GUI environment.</p>
+
+<p>To install the SDK using the Tizen CLI Installer:</p>
+
+<ol>
+<li><p><a href="download.htm#sdk_24">Download the appropriate CLI Installer for your platform.</a></p></li>
+<li>
+<p>Run the CLI Installer:</p>
+<ul>
+<li><p>On Microsoft Windows&reg;, the command prompt appears and the installer is automatically executed.</p></li>
+<li>
+<p>On Ubuntu and Mac OS&reg; X, open the terminal, go to the directory where the installer is downloaded, and enter the <span style="font-family: Courier New,Courier,monospace">chmod +x</span> command to apply the execute permission to the installer file.</p>
+<p>To execute the installer, enter the command based on the following syntax:</p>
+<pre class="prettyprint">
+tizen-web-cli-&lt;version&gt; [options] [&lt;directory path&gt;]
+</pre>
+<p>Parameters:</p>
+<table>
+    <tbody>
+        <tr>
+            <th>Option</th>
+            <th>Description</th>
+        </tr>
+        <tr>
+            <td>
+                <p><span style="font-family: Courier New,Courier,monospace">--show-license</span></p>
+            </td>
+            <td>
+                <p>Displays the Tizen SDK software license agreement.</p>
+                <p>Use this option alone. Do not use with other options.</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p><span style="font-family: Courier New,Courier,monospace">--accept-license</span></p>
+            </td>
+            <td>
+                <p>Accepts the license terms.</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p><span style="font-family: Courier New,Courier,monospace">--no-java-check</span></p>
+            </td>
+            <td>
+                <p>Skips the Java version check.</p>
+            </td>
+        </tr>
+    </tbody>
+</table>
+<table>
+    <tbody>
+        <tr>
+            <th>Argument</th>
+            <th>Description</th>
+        </tr>
+        <tr>
+            <td>
+                <p>directory path</p>
+            </td>
+            <td>
+                <p>Specifies the installation directory path.</p>
+                <p>If you do not enter the path, the SDK is installed in the default directory (/home/{user}/tizen-sdk).</p>
+            </td>
+        </tr>
+    </tbody>
+</table>
+</li>
+</ul>
+</li>
+<li><p>If you agree to the software license and the license terms, type <strong>yes</strong> for the conditions.</p></li>
+<li><p>Enter the SDK installation location.</p></li>
+</ol>
+
+<h3>Starting the Tizen IDE</h3>
+
+<p>The Tizen IDE (integrated development environment) is part of the SDK and installed with it. When you start the IDE, you must define the folder for the IDE workspace. If you start with a new version of the IDE, do not use the workspace created for the previous IDE version.</p>
+
+<p>To start the IDE:</p>
+
+<ul>
+<li><p>On Ubuntu&reg;, go to <strong>Dashboard Home &gt; Tizen IDE</strong>.</p></li>
+<li><p>On Microsoft Windows&reg;, go to <strong>Start &gt; All Programs &gt; Tizen SDK &gt; Tizen IDE</strong>.</p></li>
+<li><p>On Mac OS&reg; X, go to <strong>Launchpad &gt; Tizen IDE</strong>.</p></li>
+</ul>
+
+<p>When you start the IDE for the first time, the IDE displays a welcome page with information on Tizen and on developing with the IDE. On the welcome page, click the <strong>Workbench</strong> icon to go to the development view.</p>
+
+<h2 id="before" name="before">SDK Installation (Before Version 2.4)</h2>
+
+<p>When installing the Tizen SDK, you can select the network installation or SDK image installation. You can also install the SDK using the command line interface. To upgrade the SDK, see <a href="updating_sdk.htm#before">Updating the Tizen SDK</a>. For information about SDK extension packages, see <a href="extension_sdks.htm#before">Extension SDKs</a>.</p>
+
+<p>Before starting the installation, check the <a href="sdk_prerequisites.htm">prerequisites</a>.</p>
+
+<p>You can install the Tizen SDK using one of the following methods:</p>
+
+<h3>Network Installation</h3>
+
+<p>To install the Tizen SDK using the Install Manager:</p>
+
+<ol>
+<li><p><a href="download.htm#sdk_231">Download the SDK Install Manager.</a></p></li>
+<li><p>Run the Install Manager. The SDK set-up wizard starts.</p></li>
+<li><p>Click <strong>Install</strong>.</p></li>
+<li><p>Select the components you want to install, and click <strong>Next</strong>.</p></li>
+<li><p>Accept the terms and conditions, and click <strong>Next</strong>.</p></li>
+<li><p>Select the SDK home folder, and click <strong>Install</strong>.</p></li>
+</ol>
+
+<p>During the installation, the SDK set-up wizard may require you to enter local administrative privileges. When the installation is complete, the SDK set-up wizard notifies you. This means that the SDK is fully installed and configured on your computer.</p>
+
+<h3>SDK Image Installation</h3>
+
+<p>To install the SDK using an image file, which is a package containing all the SDK files required for an offline environment:</p>
+
+<ol>
+<li><p><a href="download.htm#sdk_231">Download the SDK Install Manager.</a></p></li>
+<li><p>Run the SDK Install Manager. The SDK set-up wizard starts.</p></li>
+<li><p>Click <strong>Advanced</strong>.</p></li>
+<li><p>In the <strong>Advanced Configuration</strong> window, select the <strong>SDK Image</strong> radio button.</p></li>
+<li><p>Click the folder button, browse to the SDK image file, and click <strong>OK</strong>.</p></li>
+<li><p>Click <strong>Install</strong>.</p></li>
+<li><p>Select the components you want to install, and click <strong>Next</strong>.</p></li>
+<li><p>Accept the terms and conditions, and click <strong>Next</strong>.</p></li>
+<li><p>Select the SDK home folder, and click <strong>Install</strong>.</p></li>
+</ol>
+
+<p>When the installation is complete, the SDK set-up wizard notifies you. That means that the SDK is fully installed and configured on your computer.</p>
+
+<h3>Command Line Interface Installation</h3>
+
+<p>The CLI (command line interface) provides functional tools for running the Install Manager without the GUI environment. It includes the entire Install Manager processes, such as installation, uninstallation, updating, displaying the repository, and the SDK status information.</p>
+
+<p>To use the Tizen CLI:</p>
+
+<ol>
+<li><p><a href="download.htm#sdk_231">Download the SDK Install Manager.</a></p></li>
+<li><p>If you use Microsoft Windows&reg;, open the command prompt. If you use Ubuntu or Mac OS&reg; X, open the terminal.</p></li>
+<li><p>Go to the directory where the installer is downloaded.</p></li>
+<li><p>On Ubuntu and Mac OS&reg; X, enter the <span style="font-family: Courier New,Courier,monospace">chmod +x</span> command to apply the execute permission to the installer file.</p></li>
+<li>
+<p>Use the following commands:</p>
+<ul>
+<li>
+<p>To install the SDK, enter the following command:</p>
+<table>
+    <tbody>
+        <tr>
+            <th>Installation method</th>
+            <th>Description</th>
+        </tr>
+        <tr>
+            <td>
+                <p>Network</p>
+            </td>
+            <td>
+                <p>If the SDK is already installed on your computer, the install manager checks whether the installed SDK is the latest.</p>
+                <ul>
+                    <li><p>In case the installed SDK is the latest, an error message appears.</p></li>
+                    <li><p>Otherwise, the install manager updates the installed SDK to the latest.</p></li>
+                </ul>
+                <p>Commands:</p>
+                <p>Enter <span style="font-family: Courier New,Courier,monospace">–install</span> as an argument for the execution:</p>
+                <ul>
+                    <li>
+                        <p>On Microsoft Windows&reg;, for example:</p>
+                        <pre class="prettyprint">&gt; tizen-sdk_2.3.1_rev1_windows-64.exe –install –r http://download.tizen.org/sdk/packages-2.3.1/ -d official –p all –accept_license</pre>
+                    </li>
+                    <li>
+                        <p>On Ubuntu and Mac OS&reg; X, for example:</p>
+                        <pre class="prettyprint">$ ./tizen-sdk_2.3.1_rev1_ubuntu-64.bin –install –r http://download.tizen.org/sdk/packages-2.3.1/ -d official –p all –accept_license</pre>
+                    </li>
+                </ul>
+                <p>Options:</p>
+                <ul>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-r</span>: Specifies the address of the repository.</p></li>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-d</span>: Specifies the distribution, such as official or develop.</p></li>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-p</span>: Specifies the meta-package type, such as all or typical.</p></li>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-l</span>: Specifies the SDK installation path.</p></li>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-x</span>: Specifies the address of the Proxy server.</p></li>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-accept_license</span>: Required. If you omit this option, the installation process stops.</p></li>
+                </ul>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <p>SDK Image</p>
+            </td>
+            <td>
+                <p>For convenience, place the downloaded SDK image file in the same folder or directory where the install manager is.</p>
+                <p>Commands:</p>
+                <p>Enter <span style="font-family: Courier New,Courier,monospace">–install</span> as an argument for the execution:</p>
+                <ul>
+                    <li>
+                        <p>On Microsoft Windows&reg;, for example:</p>
+                        <pre class="prettyprint">&gt; tizen-sdk_2.3.1_rev1_windows-64.exe  -install –f tizen-sdk –image-TizenSDK_2.3.1_Rev1-windows64.zip –p all –accept_license</pre>
+                    </li>
+                    <li>
+                        <p>On Ubuntu and Mac OS&reg; X, for example:</p>
+                        <pre class="prettyprint">$ ./tizen-sdk_2.3.1_ rev1_ubuntu-64.bin -install –f tizen-sdk –image-TizenSDK_2.3.1_Rev1-ubuntu64.zip –p all –accept_license</pre>
+                    </li>
+                </ul>
+                <p>Options:</p>
+                <ul>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-f</span>: Required. This option specifies the path of the SDK image file.</p></li>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-p</span>: Specifies the meta-package type, such as all or typical.</p></li>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-l</span>: Specifies the SDK installation path.</p></li>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-accept_license</span>: Required. If you omit this option, the installation process stops.</p></li>
+                </ul>
+            </td>
+        </tr>
+    </tbody>
+</table>
+</li>
+<li>
+<p>To uninstall the SDK, enter the following command:</p>
+<table>
+    <tbody>
+        <tr>
+            <th>Description</th>
+        </tr>
+        <tr>
+            <td>
+                <p>Commands:</p>
+                <p>Enter <span style="font-family: Courier New,Courier,monospace">-remove</span> as an argument for the execution:</p>
+                <ul>
+                    <li>
+                        <p>On Microsoft Windows&reg;, for example:</p>
+                        <pre class="prettyprint">&gt; tizen-sdk_2.3.1_rev1_windows-64.exe –remove –p all</pre>
+                    </li>
+                    <li>
+                        <p>On Ubuntu and Mac OS&reg; X, for example:</p>
+                        <pre class="prettyprint">$ ./tizen-sdk_2.3.1_rev1_ubuntu-64.bin –remove –p all</pre>
+                    </li>
+                </ul>
+                <p>Options:</p>
+                <ul>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-p</span>: Specifies the meta-package type, such as all or typical.</p></li>
+                </ul>
+            </td>
+        </tr>
+    </tbody>
+</table>
+</li>
+<li>
+<p>To display the information of the installation, enter the following command:</p>
+<table>
+    <tbody>
+        <tr>
+            <th>Description</th>
+        </tr>
+        <tr>
+            <td>
+                <p>Commands:</p>
+                <p>Enter <span style="font-family: Courier New,Courier,monospace">–status</span> as an argument for the execution:</p>
+                <ul>
+                    <li>
+                        <p>On Microsoft Windows&reg;, for example:</p>
+                        <pre class="prettyprint">&gt; tizen-sdk_2.3.1_rev1_windows-64.exe –status</pre>
+                    </li>
+                    <li>
+                        <p>On Ubuntu and Mac OS&reg; X, for example:</p>
+                        <pre class="prettyprint">$ ./tizen-sdk_2.3.1_rev1_ubuntu-64.bin –status</pre>
+                    </li>
+                </ul>
+            </td>
+        </tr>
+    </tbody>
+</table>
+</li>
+<li>
+<p>To display the information of the repository, enter the following command:</p>
+<table>
+    <tbody>
+        <tr>
+            <th>Description</th>
+        </tr>
+        <tr>
+            <td>
+                <p>Commands:</p>
+                <p>Enter <span style="font-family: Courier New,Courier,monospace">–repoinfo</span> as an argument for the execution:</p>
+                <ul>
+                    <li>
+                        <p>On Microsoft Windows&reg;, for example:</p>
+                        <pre class="prettyprint">&gt; tizen-sdk_2.3.1_rev1_windows-64.exe –repoinfo –r http://download.tizen.org/sdk/packages-2.3.1/</pre>
+                    </li>
+                    <li>
+                        <p>On Ubuntu and Mac OS&reg; X, for example:</p>
+                        <pre class="prettyprint">$ ./tizen-sdk_2.3.1_rev1_ubuntu-64.bin –repoinfo –r http://download.tizen.org/sdk/packages-2.3.1/</pre>
+                    </li>
+                </ul>
+                <p>Options:</p>
+                <ul>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-r</span>: Specifies the address of the repository.</p></li>
+                </ul>
+            </td>
+        </tr>
+    </tbody>
+</table>
+</li>
+<li>
+<p>To display the information of the package, enter the following command:</p>
+<table>
+    <tbody>
+        <tr>
+            <th>Description</th>
+        </tr>
+        <tr>
+            <td>
+                <p>Commands:</p>
+                <p>Enter <span style="font-family: Courier New,Courier,monospace">–packageinfo</span> as an argument for the execution: </p>
+                <ul>
+                    <li>
+                        <p>On Microsoft Windows&reg;, for example:</p>
+                        <pre class="prettyprint">&gt; tizen-sdk_2.3.1_rev1_windows-64.exe –packageinfo –r http://download.tizen.org/sdk/packages-2.3.1/ -d official</pre>
+                    </li>
+                    <li>
+                        <p>On Ubuntu and Mac OS&reg; X, for example:</p>
+                        <pre class="prettyprint">$ ./tizen-sdk_2.3.1_rev1_ubuntu-64.bin –packageinfo –r http://download.tizen.org/sdk/packages-2.3.1/ -d official</pre>
+                    </li>
+                </ul>
+                <p>Options:</p>
+                <ul>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-r</span>: Specifies the address of the repository.</p></li>
+                    <li><p><span style="font-family: Courier New,Courier,monospace">-d</span>: Specifies the distribution, such as official or develop.</p></li>
+                </ul>
+            </td>
+        </tr>
+    </tbody>
+</table>
+</li>
+</ul>
+</li>
+</ol>
+
+<h4>Constraints on the CLI Installation</h4>
+
+<ul>
+<li><p>When you use <span style="font-family: Courier New,Courier,monospace">–p</span> option, enter the meta-package type. You can check the type by using the <span style="font-family: Courier New,Courier,monospace">-packageinfo</span> command.</p></li>
+<li><p>When you install additional SDK packages, configuration arguments, such as the address of the repository, the distribution, and the installation path, must be the same as when installing the SDK.</p></li>
+<li><p>On Ubuntu and Mac OS&reg; X, if the installation path is under the home directory, the directory path must begin with &quot;/&quot; or &quot;/home&quot;, not &quot;home&quot;.</p></li>
+<li><p>If you do not enter a target location, the SDK is installed in the default location, such as /home/{user}/tizen-sdk (on Ubuntu and Mac OS&reg; X) or c:\tizen-sdk (on Microsoft Windows&reg;).</p></li>
+<li><p>If you enter the address of a proxy server, you do not need to begin with &quot;http://&quot;.</p></li>
+</ul>
+
+<h3>Starting the Tizen IDE</h3>
+
+<p>The Tizen IDE (integrated development environment) is part of the SDK and installed with it. When you start the IDE, you must define the folder for the IDE workspace. If you start with a new version of the IDE, do not use the workspace created for the previous IDE version.</p>
+
+<p>To start the IDE:</p>
+
+<ul>
+<li><p>On Ubuntu&reg;, go to <strong>Applications &gt; Tizen SDK &gt; Tizen IDE</strong>.</p></li>
+<li><p>On Microsoft Windows&reg;, go to <strong>Start &gt; Tizen SDK &gt; Tizen IDE</strong>.</p></li>
+<li><p>On Mac OS&reg; X, go to the tizen-sdk/ide directory and run the Tizen IDE application.</p></li>
+</ul>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/release_notes.htm b/org.tizen.devtools/html/download/release_notes.htm
new file mode 100644 (file)
index 0000000..812f22d
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Release Notes</title>
+</head>
+
+<body class="no-toc" onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation"></div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<div id="profile"><p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p></div>
+
+<h1>Release Notes</h1>
+
+<p>The Tizen Software Development Kit (SDK) is a comprehensive set of tools for developing Web applications, native applications, and the platform component for Tizen. The SDK contains an install manager, IDE, tools, documents, samples, and a platform image.</p>
+
+<h2 id="notes">Tizen SDK Release Notes</h2>
+
+<ul> 
+   <li><a href="2_4_rev2_release_notes.htm">Tizen 2.4 Rev2 SDK Release Notes</a></li> 
+   <li><a href="2_3_1_rev1_SDK_release_notes.htm">Tizen 2.3.1 Rev1 SDK Release Notes</a></li> 
+  </ul>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/sdk_hardware_accelerated_execution_manager.htm b/org.tizen.devtools/html/download/sdk_hardware_accelerated_execution_manager.htm
new file mode 100644 (file)
index 0000000..b7b6687
--- /dev/null
@@ -0,0 +1,322 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Intel Hardware Accelerated Execution Manager</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#windows">Install Intel HAXM on Windows</a></li>
+            <li><a href="#mac">Install Intel HAXM on Mac</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Intel Hardware Accelerated Execution Manager</h1>
+
+<p>The Intel Hardware Accelerated Execution Manager (Intel HAXM) is a hardware-assisted virtualization engine (hypervisor) that uses Intel Virtualization Technology (VT) to speed up Tizen application emulation on a Windows or Mac host machine. In combination with Tizen x86 emulator images and the <a href="download.htm">Tizen SDK</a>, Intel HAXM allows for faster Tizen emulation on Intel VT enabled systems.</p>
+<p>This document describes installing HAXM on your <a href="#windows">Windows</a> or <a href="#mac">Mac</a> development system.</p>
+
+<p><strong>Hardware requirements:</strong></p>
+
+<ul> 
+   <li>Intel processor with support for VT-x, EM64T, and Execute Disable Bit</li> 
+   <li>At least 1GB of available memory (2GB or more is preferred)</li> 
+  </ul>
+  
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Important</th> 
+    </tr> 
+    <tr> 
+     <td class="note">Intel HAXM can only be used on systems with an Intel processor with Intel VT support.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+
+<h2 id="windows">Install Intel HAXM on Windows</h2>
+
+<h3>Supported Windows versions:</h3>
+
+<ul> 
+   <li>Windows 7 (32/64-bit)</li> 
+   <li>Windows Vista (32/64-bit)</li> 
+   <li>Windows XP SP2 or later (32-bit only)</li>
+  </ul>
+
+<p><strong>HAXM is installed automatically as part of the Tizen SDK.</strong> The screens below are displayed during installation by the Install manager. If you want to install HAXM separately you can download the Windows installer package using the link below.</p>
+
+<table>
+<tbody>
+<tr>
+ <th>Windows Installer</th>
+ <th>File Description</th>
+ <th>File Size</th>
+ <th>MD5 Checksum</th>
+</tr>
+ <tr>
+ <td><a href="http://download.tizen.org/sdk/haxm/1.0.5/windows/IntelHaxmTizen-1.0.5.exe">IntelHaxmTizen-1.0.5.exe</a></td>
+ <td>System Driver</td>
+ <td>1.90MB</td>
+ <td>8b928a6ca5500f88e601123b6c30b972</td>
+ </tr>
+  </tbody></table>
+
+<ol>
+<li>
+<p>Run the installer (and accept the UAC prompt, if running the stand-alone installer):</p>
+
+<p align="center"><img src="../images/uac.png" alt="UAC prompt" /></p>
+
+</li>
+
+<li>
+<p>The first HAXM install screen is displayed:</p>
+
+<p align="center"><img src="../images/sdk2_0-haxm-win1.png" alt="Install manager" /></p>
+
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">You can access the documentation at any time by pressing the &quot;Intel HAXM Documentation&quot; button.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+</li>
+<li>Read and accept the Intel HAXM End-User License Agreement (EULA):
+
+<p align="center"><img src="../images/sdk2_0-haxm-win2.png" alt="License agreement" /></p>
+
+</li>
+<li>
+<p>You will be prompted to adjust the amount of RAM that will be allocated to Intel HAXM:</p>
+
+<p align="center"><img src="../images/sdk2_0-haxm-win3.png" alt="Memory setup" /></p>
+
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">The installer also functions as a configuration tool for Intel HAXM. To change memory settings, run the installer again.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+</li>
+<li>
+<p>The next screen confirms your Intel HAXM memory allocation settings:</p>
+
+<p align="center"><img src="../images/sdk2_0-haxm-win4.png" alt="Confirm memory settings" /></p>
+
+</li>
+<li>
+<p>When the Intel HAXM installation is finished, press the &quot;Finish&quot; button to exit the installer:</p>
+
+<p align="center"><img src="../images/sdk2_0-haxm-win5.png" alt="Installation completed" /></p>
+
+</li>
+</ol>
+
+<p>Congratulations! Intel HAXM is now installed and ready to use!</p>
+<p>To verify that Intel HAXM is running, open a Command Prompt window and execute the command:</p> 
+<pre class="prettyprint">sc query intelhaxm</pre>
+
+<p>If Intel HAXM is working, the command will show a status message indicating that the state is &quot;4  RUNNING&quot;.</p>
+
+<p align="center"><img src="../images/sdk2_0-haxm-cmd.png" alt="HAXM command" /></p>
+
+<h3>Start / Stop Intel HAXM</h3>
+
+<p>To stop or start Intel HAXM, open a Command Prompt window <strong>with administrator privileges</strong> and execute one of the following commands:</p>
+<p>Stop HAXM:</p> 
+<pre class="prettyprint">sc stop intelhaxm </pre> 
+<p>Start HAXM:</p>
+<pre class="prettyprint">sc start intelhaxm </pre>
+
+<h3>Adjusting Intel HAXM Memory Allocation</h3>
+
+<p>To change the amount of memory allocated to Intel HAXM, run the installer again.</p>
+
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">Changes to Intel HAXM memory settings will take effect when Intel HAXM is restarted. Currently running emulators will continue to use the previous memory setting.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+
+<h3>Removing Intel HAXM</h3>
+
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Warning</th> 
+    </tr> 
+    <tr> 
+     <td class="note">Close all instances of the Tizen emulator before removing Intel HAXM.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+<p>To uninstall Intel HAXM, run the installer again or use the Control Panel.</p>
+
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Important</th> 
+    </tr> 
+    <tr> 
+     <td class="note">Removing Intel HAXM will disable acceleration of all Tizen emulators but the Tizen emulator will still function. Installing Intel HAXM again will re-enable emulator acceleration.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+
+<h3>Troubleshooting</h3>
+
+<h4>BIOS/OS Setting</h4>
+
+<p>Hardware feature required by HAXM may be disabled by BIOS or OS. If meet installation failure because of hardware requirement, please check BIOS/OS as followed suggestion:</p>
+
+<ol>
+<li>Make sure VT is enabled in BIOS.</li>
+<li>Make sure Execute Disable Bit is enabled in BIOS.</li>
+<li>Make sure Data Execution Prevention is enabled in Windows. On the windows platform, click Control Panel &gt; System &gt; Advanced system settings &gt; Advanced tab &gt; Performance section, Options (or Settings) button &gt; Data Execution Prevention. Make sure that DEP is enabled.</li>
+</ol>
+
+<h4>Using Intel HAXM</h4>
+
+<p>Once installed, Tizen emulator images started from the Tizen SDK will perform significantly fast than before. For details on using the emulator for development of Tizen applications, see <a href="../../../org.tizen.devtools/html/common_tools/emulator.htm">Emulator</a>.</p>
+
+<h2 id="mac">Install Intel HAXM on Mac</h2>
+
+<p><strong>HAXM is installed automatically as part of the Tizen SDK.</strong> The screens below are displayed during installation by the Install manager. If you want to install HAXM separately you can download the Mac installer package using the link below.</p>
+
+<table>
+<tbody>
+<tr>
+ <th>Mac Installer</th>
+ <th>File Description</th>
+ <th>File Size</th>
+ <th>MD5 Checksum</th>
+</tr>
+ <tr>
+ <td><a href="http://download.tizen.org/sdk/haxm/1.0.5/mac/IntelHaxmTizen-1.0.5.dmg">IntelHaxmTizen-1.0.5.dmg</a></td>
+ <td>System Driver</td>
+ <td>1.90MB</td>
+ <td>1bad18cd50b700bfb6673cdaebdc7955</td>
+ </tr>
+  </tbody></table>
+  
+
+<ol>
+<li>If running from stand-alone installer, open the DMG file, and run the installer contained inside.</li>
+<li>
+<p>If an older version Intel HAXM is already installed, you will see a notification dialog. Click &quot;OK&quot; to dismiss the dialog. Then you can either exit the installer, to keep your current version of Intel HAXM, or continue with installation and upgrade Intel HAXM.</p>
+
+<p align="center"><img src="../images/sdk2_0-haxm-mac1.png" alt="Install prompt" /></p>
+
+</li>
+<li>
+<p>The first HAXM install screen is displayed. Click &quot;Continue&quot;</p>
+
+<p align="center"><img src="../images/sdk2_0-haxm-mac2.png" alt="Install manager" /></p>
+
+</li>
+<li>
+<p>Read the Intel HAXM End-User License Agreement (EULA) and, if you agree, accept the EULA and continue installing Intel HAXM by clicking &quot;Continue&quot;</p>
+
+<p align="center"><img src="../images/sdk2_0-haxm-mac3.png" alt="License agreement" /></p>
+
+</li>
+<li>
+<p>You will be prompted to adjust the amount of RAM that will be allocated to Intel HAXM or set it as the default value 2048MB</p>
+
+<p align="center"><img src="../images/sdk2_0-haxm-mac4.png" alt="Memory settings" /></p>
+
+
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">The installer also functions as a configuration tool for Intel HAXM. To change memory settings later, run the installer again.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+
+</li>
+<li>
+<p>The next screen confirms your Intel HAXM memory allocation settings:</p>
+
+<p align="center"><img src="../images/sdk2_0-haxm-mac5.png" alt="Confirm memory settings" /></p>
+
+</li>
+<li>
+<p>Select the drive where Intel HAXM will be installed, then click &quot;Continue&quot;.</p>
+
+<p align="center"><img src="../images/sdk2_0-haxm-mac6.png" alt="Confirm install" /></p>
+
+</li>
+<li>
+<p>Once Intel HAXM is installed, click &quot;Close&quot; to exit the installer.</p>
+
+<p align="center"><img src="../images/sdk2_0-haxm-mac7.png" alt="Installation completed" /></p>
+
+</li>
+</ol>
+
+<p>Congratulations! Intel HAXM is now installed and ready to use!</p>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/sdk_prerequisites.htm b/org.tizen.devtools/html/download/sdk_prerequisites.htm
new file mode 100644 (file)
index 0000000..9f06f34
--- /dev/null
@@ -0,0 +1,345 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Prerequisites for the Tizen SDK</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#platform">Platform Requirements</a></li>
+            <li><a href="#hardware">Processor, Memory, and Disk Space Requirements</a></li>
+            <li><a href="#jdk">Java Development Kit (JDK) Requirements</a></li>
+            <li><a href="#emulator">Emulator Requirements</a></li>
+            <li><a href="#additional">Additional Requirements</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Prerequisites for the Tizen SDK</h1>
+
+<h2 id="platform" name="platform">Platform Requirements</h2>
+
+<p>The following table lists the operating systems supported by the Tizen SDK.</p>
+
+<table>
+    <caption>Table: Platform requirements</caption>
+    <tbody>
+        <tr>
+            <th>OS</th>
+            <th>Version</th>
+            <th>Bit</th>
+        </tr>
+        <tr>
+            <td><p>Ubuntu</p></td>
+            <td><p>14.04/12.04</p></td>
+            <td><p>32 and 64</p></td>
+        </tr>
+        <tr>
+            <td><p>Microsoft Windows&reg;</p></td>
+            <td><p>8/7</p></td>
+            <td><p>32 and 64</p></td>
+        </tr>
+        <tr>
+            <td><p>Mac OS&reg; X</p></td>
+            <td><p>10.10 (Yosemite) / 10.9 (Mavericks) / 10.8 (Mountain Lion)</p></td>
+            <td><p>64</p></td>
+        </tr>
+    </tbody>
+</table>
+
+<h2 id="hardware" name="hardware">Processor, Memory, and Disk Space Requirements</h2>
+
+<p>The following table lists the processor and memory requirements for using the Tizen SDK.</p>
+
+<table>
+    <caption>Table: Processor, memory, and disk space requirements</caption>
+    <tbody>
+        <tr>
+            <th>Component</th>
+            <th>Minimum</th>
+            <th>Recommended</th>
+        </tr>
+        <tr>
+            <td><p>Processor speed</p></td>
+            <td><p>2 GHz</p></td>
+            <td><p>3 GHz</p></td>
+        </tr>
+        <tr>
+            <td><p>Processor type</p></td>
+            <td><p>Intel Dual-Core</p></td>
+            <td><p>Intel Core i5</p></td>
+        </tr>
+        <tr>
+            <td><p>Memory</p></td>
+            <td><p>3 GB</p></td>
+            <td><p>4 GB</p></td>
+        </tr>
+        <tr>
+            <td><p>Disk space</p></td>
+            <td><p>6 GB free</p></td>
+            <td><p></p></td>
+        </tr>
+    </tbody>
+</table>
+
+<h2 id="jdk" name="jdk">Java Development Kit (JDK) Requirements</h2>
+
+<p>You must install a Java Development Kit (JDK) 7 or later to develop Tizen applications.</p>
+
+<table class="note">
+    <tbody>
+        <tr>
+            <th class="note">Note</th>
+        </tr>
+        <tr>
+            <td class="note">Do not install OpenJDK.</td>
+        </tr>
+    </tbody>
+</table>
+
+<table>
+    <caption>Table: Java Development Kit (JDK) requirements</caption>
+    <tbody>
+        <tr>
+            <th>OS</th>
+            <th>Installation instructions</th>
+        </tr>
+        <tr>
+            <td><p>Ubuntu</p></td>
+            <td><p>Visit the <a href="https://help.ubuntu.com/community/Java#Oracle_Java_7" target="_blank">Ubuntu website</a>, which provides detailed instructions for the Oracle JDK 7 and later version installation.</p></td>
+        </tr>
+        <tr>
+            <td><p>Microsoft Windows&reg;</p></td>
+            <td><p>Download the JDK from the <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">Oracle website</a> and select the appropriate platform for your hardware and Windows&reg; version.</p>
+                <p>Run the downloaded .exe file and follow the displayed instructions.</p></td>
+        </tr>
+        <tr>
+            <td><p>Mac OS&reg; X</p></td>
+            <td><p>Visit the <a href="http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html" target="_blank">Oracle website</a>, which provides detailed instructions for the JDK 7 installation.</p></td>
+        </tr>
+    </tbody>
+</table>
+
+<h2 id="emulator" name="emulator">Emulator Requirements</h2>
+
+<p>The following table lists the CPU, screen resolution, video card, and driver requirements for using the Tizen Emulator.</p>
+
+<table>
+    <caption>Table: Emulator requirements</caption>
+    <tbody>
+        <tr>
+            <th>Component</th>
+            <th>Requirement</th>
+        </tr>
+        <tr>
+            <td><p>CPU</p></td>
+            <td><p>Recommended: support for Intel VTx (Virtualization Technology)</p></td>
+        </tr>
+        <tr>
+            <td><p>Screen resolution</p></td>
+            <td><p>Recommended: 1280 x 1024</p></td>
+        </tr>
+        <tr>
+            <td><p>Graphic card</p></td>
+            <td>
+                <p>Recommended: The following requirements have passed tests with the Emulator.</p>
+                <table>
+                    <tbody>
+                        <tr>
+                            <th>Brand</th>
+                            <th>Product</th>
+                        </tr>
+                        <tr>
+                            <td><p>NVIDIA</p></td>
+                            <td><p>GeForce 8300 GS, GeForce 8500 GT, GeForce GT 220, GeForce GT 430, GeForce GT 530, GeForce GT 330M, GeForce GTX 550Ti, Quadro NVS 290</p></td>
+                        </tr>
+                        <tr>
+                            <td><p>ATI</p></td>
+                            <td><p>RADEON HD 4850, RADEON HD 5450</p></td>
+                        </tr>
+                        <tr>
+                            <td><p>Intel</p></td>
+                            <td><p>HD Graphics 2000, HD Graphics 2500, HD Graphics 4000</p></td>
+                        </tr>
+                    </tbody>
+                </table>
+                <table>
+                    <tbody>
+                        <tr>
+                            <th>Note</th>
+                        </tr>
+                        <tr>
+                            <td>
+                                <ul>
+                                    <li><p>If the host machine is using the Nvidia Optimus&trade; technology, the Emulator works with the on-board graphics card. To prevent this, either disable the Nvidia Optimus&trade; technology, or set the Emulator to run with the external Nvidia graphics card.</p></li>
+                                    <li><p>Integrated graphic cards inside Intel&#39;s Q33/Q35/Q43/Q45 Motherboards are not supported.</p></li>
+                                    <li><p>1st generation Intel HD Graphics is not supported.</p></li>
+                                </ul>
+                            </td>
+                        </tr>
+                    </tbody>
+                </table>
+            </td>
+        </tr>
+        <tr>
+            <td><p>Driver</p></td>
+            <td>
+                <p>You must update to the latest vendor-provided version of the graphic card driver for OpenGL ES acceleration.</p>
+                <p>Recommended:</p>
+                <ul>
+                    <li>
+                        <p>For Ubuntu 14.04/12.04, visit the <a href="https://help.ubuntu.com/community/BinaryDriverHowto/" target="_blank">Ubuntu website</a>, which provides detailed information for the driver updates. Check and install the necessary drivers in the <strong>System Settings &gt; Software &amp; Updates &gt; Additional Drivers</strong>.</p>
+                        <table class="note">
+                            <tbody>
+                                <tr>
+                                    <th class="note">Note</th>
+                                </tr>
+                                <tr>
+                                    <td class="note">
+                                        <ul>
+                                            <li><p>In 14.04, the Intel driver version must be 8.0.1 or higher.</p></li>
+                                            <li><p>In 12.04, the Intel driver version must be higher than 8.0.1.</p></li>
+                                        </ul>
+                                    </td>
+                                </tr>
+                            </tbody>
+                        </table>
+                    </li>
+                    <li><p>For Microsoft Windows&reg; 8/7, check and install the necessary drivers in the <strong>Control Panel &gt; System and Security &gt; Windows Update</strong>.</p></li>
+                </ul>
+            </td>
+        </tr>
+        <tr>
+            <td><p>Webcam</p></td>
+            <td>
+                <p>If you want to use the Emulator with your computer&#39;s webcam, the webcam must support the USB Video Class (UVC) driver. The following table lists the image format requirements for each OS.</p>
+                <table>
+                    <tbody>
+                        <tr>
+                            <th>OS</th>
+                            <th>Required image format</th>
+                        </tr>
+                        <tr>
+                            <td><p>Ubuntu</p></td>
+                            <td><p>YUYV or MJPEG</p></td>
+                        </tr>
+                        <tr>
+                            <td><p>Microsoft Windows&reg;</p></td>
+                            <td><p>RGB24 or YUY2</p></td>
+                        </tr>
+                        <tr>
+                            <td><p>Mac OS&reg; X</p></td>
+                            <td><p>UYYY, YYU420, YUY420, or YUYY</p></td>
+                        </tr>
+                    </tbody>
+                </table>
+            </td>
+        </tr>
+    </tbody>
+</table>
+
+<h2 id="additional" name="additional">Additional Requirements</h2>
+
+<p>The following table lists the additional requirements to be met before developing Tizen applications.</p>
+
+<table>
+    <caption>Table: Additional requirements</caption>
+    <tbody>
+        <tr>
+            <th>OS</th>
+            <th>Requirement</th>
+            <th>Description</th>
+        </tr>
+        <tr>
+            <td rowspan="2"><p>Ubuntu </p></td>
+            <td><p>Prerequisite packages (webkitgtk) for developing applications</p></td>
+            <td>
+                <p>At the terminal prompt, enter the following command:</p>
+                <pre class="prettyprint">$ sudo apt-get install libwebkitgtk-1.0-0</pre>
+            </td>
+        </tr>
+        <tr>
+            <td><p>Prerequisite packages (glib, curl, sdl, pixel manipulation) for using the Emulator</p></td>
+            <td>
+                <p>At the terminal prompt, enter the following command:</p>
+                <ul>
+                    <li>
+                        <p>For Tizen 2.3.1:</p>
+                        <pre class="prettyprint">$ sudo apt-get install libglib2.0-0 libcurl3-gnutls libsdl1.2debian libglib2.0-0 acl zlib1g libpixman-1-0</pre>
+                    </li>
+                    <li>
+                        <p>For Tizen 2.4:</p>
+                        <pre class="prettyprint">$ sudo apt-get install libglib2.0-0 libcurl3-gnutls libsdl1.2debian libglib2.0-0 acl zlib1g libpixman-1-0 bridge-utils openvpn</pre>
+                    </li>
+                </ul>
+            </td>
+        </tr>
+        <tr>
+            <td><p>Microsoft Windows&reg;</p></td>
+            <td><p>Python for using the T-trace (Tizen profiling tool used to optimize the application performance)</p></td>
+            <td>
+                <p>For using the T-trace in Windows&reg; 8/7, you must install a Python 2.7.X version:</p>
+                <ol>
+                    <li><p>Download the Python from the <a href="https://www.python.org/downloads/" target="_blank">Python website</a>, and select the appropriate platform for your hardware and Windows&reg; version.</p></li>
+                    <li><p>Run the downloaded installer file and follow the displayed instructions.</p></li>
+                </ol>
+                <table class="note">
+                    <tbody>
+                        <tr>
+                            <th class="note">Note</th>
+                        </tr>
+                        <tr>
+                            <td class="note">To use Python conveniently at the command prompt, set the %PATH% environment variable in <strong>My Computer &gt; Properties &gt; Advanced &gt; Environment Variables</strong>.</td>
+                        </tr>
+                    </tbody>
+                </table>
+            </td>
+        </tr>
+    </tbody>
+</table>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/sdk_troubleshooting.htm b/org.tizen.devtools/html/download/sdk_troubleshooting.htm
new file mode 100644 (file)
index 0000000..414c172
--- /dev/null
@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Troubleshooting</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#java">Java Installation on Mac OS&reg; X</a></li>
+            <li><a href="#network">Network Connection Failure</a></li>
+                       <li><a href="#crash_install">Crashing of the Install Manager</a></li>
+            <li><a href="#sdk_image">SDK Image File Dialog Failure on Windows&reg;</a></li>
+                       <li><a href="#crash_java">Crashing of Java During SDK Installation (Windows&reg; 64-bit)</a></li>
+            <li><a href="#install_appear">When Install Manager Does Not Appear in Windows&reg;</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Troubleshooting</h1>
+
+<p>You can troubleshoot your Tizen SDK installation by referring to the installation log file. The log file is located at:</p>
+<ul>
+<li>Windows&reg; 7: %LOCALAPPDATA%\.installmanager\install-log</li>
+<li>Windows&reg; XP: %USERPROFILE%\Local Settings\Application Data\.installmanager\install-log</li>
+<li>Ubuntu&reg;, MacOS&reg;: $HOME/.installmanager/install-log</li>
+</ul>
+
+<h2 id="java">Java Installation on Mac OS&reg; X</h2> 
+
+<p>The Install Manager can have compatibility issues in Mac OS&reg; X, even if you have installed JDK(or JRE) from the Oracle Website. If the notification displayed in the following figure is displayed on the screen, follow the onscreen instructions for Java installation.</p>
+
+<p class="figure">Figure: Java installation</p> 
+<p align="center"><img alt="Java installation" src="../images/java_installation.png" /></p> 
+
+<h2 id="network">Network Connection Failure</h2> 
+
+<p>If the Install Manager fails to connect to the SDK package server:</p>
+<ul>
+<li>Check whether you can access the <a href="http://www.tizen.org/" target="_blank">Tizen Web site</a> using the Web browser on the system where you are installing the SDK. If not, install the SDK using the SDK image.</li>
+<li>Check whether you are using a network proxy. If yes, run the Install Manager. Click the <strong>Settings</strong> button and select the desired option. If the proxy server needs authentication, an ID and password dialog appears.</li>
+<li>The proxy option is not provided anymore.</li>
+</ul>
+
+<h2 id="crash_install">Crashing of the Install Manager</h2> 
+
+<p>The crashing of the Install Manager as a result of the libdbus-1.so is a JVM problem in Ubuntu. Try the following:</p>
+
+<ul>
+<li>Install the libdbus-java package:
+
+<pre class="prettyprint">
+&nbsp;&nbsp;&nbsp;sudo apt-get install libdbus-java
+</pre>
+
+</li>
+
+<li>Run the Install Manager with the–noAutoProxy option:
+
+<pre class="prettyprint">
+&nbsp;&nbsp;&nbsp;./tizen-sdk-ubuntu.bin -noAutoproxy
+</pre>
+
+</li>
+</ul>
+
+<table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">If the Install Manager crashes while downloading packages, restart the installation. The Install Manager continues to download the remaining packages.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+
+<h2 id="sdk_image">SDK Image File Dialog Failure on Windows&reg;</h2> 
+  
+<p>When installing the Tizen SDK using the SDK image, you may see the &quot;Cannot open SDK image file&quot; dialog box. The box is displayed if you are using the <strong>jdk 1.6 updates 26</strong> JDK. To avoid this problem, ensure that you are using the latest version of Java.</p>
+
+<h2 id="crash_java">Crashing of Java During SDK Installation (Windows&reg; 64-bit)</h2> 
+
+<p>During the Tizen SDK installation, the Java application can crash unexpectedly, and the following window is displayed.</p>
+
+<p class="figure">Figure: Java crash during the SDK installation</p> 
+<p align="center"><img alt="Java installation" src="../images/java_crash.png" /></p> 
+
+<p>To avoid this problem:</p>
+<ul>
+<li>Ensure that you are using the latest version of the error DLL file, such as MSVCR100.dll. If the error file version is not the latest, upgrade it.</li>
+<li>Update your system with all the Windows-related updates using <strong>Windows Update</strong>.</li>
+</ul>
+
+<h2 id="install_appear">When Install Manager Does Not Appear in Windows&reg;</h2> 
+
+<p>If the Install Manager does not appear, you should suspect trouble in JDK installation. You can check your problem by following directions</p>
+<p>Run the Install-manager with the -help options.</p>
+
+<pre class="prettyprint">
+&nbsp;&nbsp;&nbsp;./install-manager.exe -help
+</pre>
+
+<p>If you see the following message, Java libraries are not suitable to Java executables. &quot;Registry key &#39;Software\JavaSoft\Java Runtime Environment\CurrentVersion&#39; has value &#39;XXX&#39;, but &#39;XXX&#39; is required.&quot;</p>
+<p>The cause is that Java files in System32 do not match to Java Runtime Environment in registry.</p>
+<p>To avoid this problem:</p>
+<ul>
+<li>Copy java.exe file to System32 directory.</li>
+</ul>
+
+<p>If Tizen Emulator does not appear when you launch it, you may face the same trouble log at &lt;TIZEN-SDK-DATA directory&gt;/emulator/vms/&lt;Emulator name&gt;/logs/emulator.log file.</p>
+
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/uninstalling_sdk.htm b/org.tizen.devtools/html/download/uninstalling_sdk.htm
new file mode 100644 (file)
index 0000000..d1b78b1
--- /dev/null
@@ -0,0 +1,185 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Uninstalling the Tizen SDK</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#since">Uninstalling the Tizen SDK (Since Version 2.4)</a></li>
+            <li><a href="#earlier">Uninstalling the Tizen SDK (Before Version 2.4)</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Uninstalling the Tizen SDK</h1>
+
+<h2 id="since">Uninstalling the Tizen SDK (Since Version 2.4)</h2>
+
+<p>You can uninstall individual packages or all packages.</p>
+
+<h3>Uninstalling Individual Packages</h3>
+
+<h4>GUI Uninstallation</h4>
+
+<ol> 
+   <li>Run the <strong>Update Manager</strong> by clicking the following shortcut: 
+   <ul> 
+   <li>On Ubuntu, go to <strong>Dashboard Home &gt; Update Manager</strong>.</li> 
+   <li>On Windows&reg;, go to <strong>Start &gt; All Programs &gt; Tizen SDK &gt; Update Manager</strong>.</li> 
+   <li>On Mac OS&reg; X, go to <strong>Launchpad &gt; Update Manager</strong>.</li> 
+  </ul>
+  </li>
+   <li>Click the <strong>All Packages</strong> tab.</li> 
+   <li>Click the <strong>uninstall</strong> icon of the package that you want to uninstall.</li>
+   <li>If you select a package that depends on other packages, a confirmation dialog box appears. Click <strong>Yes</strong>.</li> 
+  </ol>
+  
+   <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">On Ubuntu, if an authentication dialog appears while uninstalling, enter your administrator password.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+  
+  <h4>CLI Uninstallation</h4>
+  
+  <ol> 
+   <li>Run the CLI Update Manager update command with the following syntax: <span style="font-family: Courier New,Courier,monospace">update-manager-cli uninstall [-p &lt;password&gt;] [&lt;package name&gt;]</span></li>  
+  </ol>
+  
+  <table>
+<tbody>
+<tr>
+ <th>Parameters</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">-p, --password &lt;password&gt;</span></td>
+ <td>Provide the administrator (sudo) password for authentication (Ubuntu only).</td>
+  </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;package name&gt;</span></td>
+ <td>Set the name of the package that you want to uninstall. You can find the installed package name with the command: <span style="font-family: Courier New,Courier,monospace">update-manager-cli show-pkgs</span>
+</td>
+ </tr>
+ </tbody></table>
+ <h3>Uninstalling All Packages</h3>
+ <h4>GUI Uninstallation</h4>
+ <ol> 
+   <li>Run the <strong>Update Manager</strong> by clicking the following shortcut:
+   <ul> 
+   <li>On Ubuntu, go to <strong>Dashboard Home &gt; Update Manager</strong>.</li> 
+   <li>On Windows&reg;, go to <strong>Start &gt; All Programs &gt; Tizen SDK &gt; Update Manager</strong>.</li> 
+   <li>On Mac OS&reg; X, go to <strong>Launchpad &gt; Update Manager</strong>.</li> 
+  </ul>
+  </li>
+   <li>Click <strong>All Packages</strong> tab.</li> 
+   <li>Click <strong>Uninstall All</strong>.</li>
+   <li>A confirmation dialog that asks if you want to continue the uninstallation appears. Click <strong>Yes</strong>.</li> 
+   <li>A confirmation dialog that asks if you want to remove the Tizen SDK directory appears. Click <strong>Yes</strong>.</li> 
+  </ol>
+  
+   <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">On Ubuntu, if an authentication dialog appears while uninstalling, enter your administrator password.</td> 
+    </tr> 
+   </tbody> 
+  </table>  
+  
+  <h4>CLI Uninstallation</h4>
+  
+  <ol> 
+   <li>Run the CLI Update Manager update command with the following syntax: <span style="font-family: Courier New,Courier,monospace">update-manager-cli uninstall [-p &lt;password&gt;] [-all]</span></li>  
+  </ol>
+  
+  <table>
+<tbody>
+<tr>
+ <th>Parameters</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">-p, --password &lt;password&gt;</span></td>
+ <td>Provide the administrator (sudo) password for authentication (Ubuntu only).</td>
+  </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">-all</span></td>
+ <td>Uninstall all packages and remove the Tizen SDK directory.
+</td>
+ </tr>
+ </tbody></table>
+ <h2 id="earlier">Uninstalling the Tizen SDK (Before Version 2.4)</h2>
+ <p>To remove the Tizen SDK (software development kit) from your computer:</p>
+ <ol> 
+   <li>Run the Install Manager of the Tizen SDK.
+   <ul> 
+   <li>On Ubuntu, go to <strong>Applications &gt; Tizen SDK &gt; Install Manager</strong>.</li> 
+   <li>On Windows&reg;, go to <strong>Start &gt; Tizen SDK &gt; Install Manager</strong>.</li> 
+   <li>On Mac OS&reg; X, go to the tizen-sdk/install-manager directory and run <strong>Install Manager</strong>.</li> 
+  </ul>
+  </li>
+   <li>Check <strong>Uninstall the Tizen SDK</strong> and click <strong>Next</strong>.</li> 
+   <li>Click <strong>Yes</strong>.</li> 
+   <li>After the uninstallation is finished, click <strong>Close</strong>.</li> 
+  </ol>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/download/updating_sdk.htm b/org.tizen.devtools/html/download/updating_sdk.htm
new file mode 100644 (file)
index 0000000..2d5187b
--- /dev/null
@@ -0,0 +1,233 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Updating the Tizen SDK</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#since">Updating the SDK (Since Version 2.4)</a></li>
+            <li><a href="#before">Updating the SDK (Before Version 2.4)</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Updating the Tizen SDK</h1>
+
+<h2 id="since" name="since">Updating the SDK (Since Version 2.4)</h2>
+
+<p>You can update the latest version of the installed packages and install various Tizen SDK packages through the Tizen SDK Update Manager, since Tizen 2.4 official SDK.</p>
+
+<h3>Updating Packages</h3>
+
+<h4>GUI Updating</h4>
+
+<ol>
+<li><p>Close all Tizen SDK programs.</p></li>
+<li>
+<p>Run the <strong>Update Manager</strong> by clicking the following shortcut:</p>
+<ul>
+<li><p>On Ubuntu, go to <strong>Dashboard Home &gt; Update Manager</strong>.</p></li>
+<li><p>On Windows&reg;, go to <strong>Start &gt; All Programs &gt; Tizen SDK &gt; Update Manager</strong>.</p></li>
+<li><p>On Mac OS&reg; X, go to <strong>Launchpad &gt; Update Manager</strong>.</p></li>
+</ul>
+</li>
+<li><p>The <strong>Update Manager</strong> finds the packages to update and the results are displayed on the <strong>Update</strong> tab.</p></li>
+<li><p>Click the <strong>update</strong> icon of the package that you want to update. (To update all packages, click <strong>Update All</strong>.)</p></li>
+<li><p>After the update is finished, click <strong>Close</strong>.</p></li>
+</ol>
+
+<h4>CLI Updating</h4>
+
+<p>CLI Update Manager update command has the following syntax:</p>
+
+<p><span style="font-family: Courier New,Courier,monospace">update-manager-cli update [--accept-license] [--no-java-check] [--proxy &lt;ip:port&gt;] [-f &lt;file full path&gt;] [-p &lt;password&gt;] [&lt;package name&gt;] ... | [-all]</span></p>
+
+<table>
+    <caption>Table: Update command parameters</caption>
+    <tbody>
+        <tr>
+            <th>Parameters</th>
+            <th>Description</th>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">-all</span></p></td>
+            <td><p>Updates all available packages.</p></td>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">--accept-license</span></p></td>
+            <td><p>Accepts the license terms.</p></td>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">--no-java-check</span></p></td>
+            <td><p>Skips java version check.</p></td>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">-f, --file &lt;file path&gt;</span></p></td>
+            <td><p>If you want to update from the local SDK Image, set full path of the SDK Image file.</p></td>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">-p, --password &lt;password&gt;</span></p></td>
+            <td><p>Ubuntu only. The administrator (sudo) password for authentication.</p></td>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">--proxy &lt;value&gt;</span></p></td>
+            <td><p>Set proxy configuration value.</p>
+                <p>Type one of the following values: <span style="font-family: Courier New,Courier,monospace">direct</span>, <span style="font-family: Courier New,Courier,monospace">auto</span>, or <span style="font-family: Courier New,Courier,monospace">ip:port</span>.</p></td>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">&lt;package name&gt;</span></p></td>
+            <td><p>Package name that you want to update.</p>
+                <p>You can find updatable package name using follow syntax:</p>
+                <p><span style="font-family: Courier New,Courier,monospace">update-manager-cli show-pkgs</span></p></td>
+        </tr>
+    </tbody>
+</table>
+
+<h3>Installing Additional Packages</h3>
+
+<h4>GUI Additional Packages Installing</h4>
+
+<ol>
+<li>
+<p>Run the <strong>Update Manager</strong> by clicking the following shortcut:</p>
+<ul>
+<li><p>On Ubuntu, go to <strong>Dashboard Home &gt; Update Manager</strong>.</p></li>
+<li><p>On Windows&reg;, go to <strong>Start &gt; All Programs &gt; Tizen SDK &gt; Update Manager</strong>.</p></li>
+<li><p>On Mac OS&reg; X, go to <strong>Launchpad &gt; Update Manager</strong>.</p></li>
+</ul>
+</li>
+<li><p>Click the <strong>All Packages</strong> tab.</p></li>
+<li><p>Click the <strong>install</strong> icon of the package that you want to install.</p></li>
+<li><p>If you select a package that depends on other packages, then a confirmation dialog box appears. Click <strong>Yes</strong>.</p></li>
+</ol>
+
+<table class="note">
+    <tbody>
+        <tr>
+            <th class="note">Note</th>
+        </tr>
+        <tr>
+            <td class="note">On Ubuntu, If an authentication dialog appears while installing, enter your administrator password.</td>
+        </tr>
+    </tbody>
+</table>
+
+<h4>CLI Additional Packages Installing</h4>
+
+<p>CLI Update Manager update command has the following syntax.</p>
+
+<p><span style="font-family: Courier New,Courier,monospace">update-manager-cli install [--accept-license] [--no-java-check] [--proxy &lt;ip:port&gt;] [-f &lt;file full path&gt;] [-p &lt;password&gt;] [&lt;package name&gt;]</span></p>
+
+<table>
+    <caption>Table: Update command parameters</caption>
+    <tbody>
+        <tr>
+            <th>Parameters</th>
+            <th>Description</th>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">--accept-license</span></p></td>
+            <td><p>Accepts the license terms.</p></td>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">--no-java-check</span></p></td>
+            <td><p>Skips java version check.</p></td>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">-f, --file &lt;file path&gt;</span></p></td>
+            <td><p>If you want to install from the local SDK Image, set full path of the SDK Image file.</p></td>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">-p, --password &lt;password&gt;</span></p></td>
+            <td><p>Ubuntu only. The administrator (sudo) password for authentication.</p></td>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">--proxy &lt;value&gt;</span></p></td>
+            <td><p>Set proxy configuration value.</p>
+                <p>Type one of the following values: <span style="font-family: Courier New,Courier,monospace">direct</span>, <span style="font-family: Courier New,Courier,monospace">auto</span>, or <span style="font-family: Courier New,Courier,monospace">ip:port</span>.</p></td>
+        </tr>
+        <tr>
+            <td><p><span style="font-family: Courier New,Courier,monospace">&lt;package name&gt;</span></p></td>
+            <td><p>Package name that you want to install.</p>
+                <p>You can find installable package name using follow syntax:</p>
+                <p><span style="font-family: Courier New,Courier,monospace">update-manager-cli show-pkgs</span></p></td>
+        </tr>
+    </tbody>
+</table>
+
+<h2 id="before" name="before">Updating the SDK (Before Version 2.4)</h2>
+
+<p>To update the SDK versions before 2.4 official version:</p>
+
+<h3>Updating Over the Network</h3>
+
+<ol>
+<li><p>Close all Tizen SDK processes.</p></li>
+<li>
+<p>Run the SDK Install Manager installed in your Tizen SDK directory. There is no need to download the Install Manager.</p>
+<p>The Install Manager upgrades itself and the welcome page is displayed.</p>
+</li>
+<li><p>Select <strong>Install or Update the Tizen SDK</strong> radio button and click <strong>Next</strong>.</p></li>
+<li><p>On the <strong>Update</strong> page, choose additional packages and click <strong>Install</strong>. The SDK set-up wizard informs you when the installation is complete. That means that the SDK is fully installed and configured on your computer.</p></li>
+</ol>
+
+<h3>Updating with the SDK Image File</h3>
+
+<ol>
+<li><p><a href="download.htm#sdk_images">Download the SDK image file.</a></p></li>
+<li><p>Download a new version of the Install Manager, if the Install Manager cannot access Internet.</p></li>
+<li><p>Run the SDK Install Manager.</p></li>
+<li><p>Click <strong>Advanced</strong> when the SDK set-up wizard starts.</p></li>
+<li><p>In the <strong>Advanced Configuration</strong> window, select the <strong>SDK Image</strong> radio button.</p></li>
+<li><p>Click the folder button, browse to the SDK image file, and click <strong>OK</strong>.</p></li>
+<li><p>Click <strong>Next</strong>.</p></li>
+<li><p>Select <strong>Install or Update the Tizen SDK</strong> radio button and click <strong>Next</strong>.</p></li>
+<li><p>On the <strong>Update</strong> page, choose additional packages and click <strong>Install</strong>. The SDK set-up wizard informs you when the installation is complete. That means that the SDK is fully installed and configured on your computer.</p></li>
+</ol>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/extension_sdk/extension_sdk.htm b/org.tizen.devtools/html/extension_sdk/extension_sdk.htm
new file mode 100644 (file)
index 0000000..8e24ec3
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>Extension SDK</title>
+</head>
+
+<body class="no-toc" onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation"></div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<div id="profile"><p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p></div>
+
+<h1>Extension SDK</h1>
+<h2 id="in-app">In-App Purchase</h2>
+<p>In-app purchase allows you to sell the digital content to customers inside your application such as in-game coins. With in-app purchase service, you can offer your customers a variety of items directly within your paid or free application. In-app purchase could be offered as a consumable, non-consumable or subscription. You can implement in-app purchase in your application by using Tizen AppControl mechanism. In-app purchase service provides the functionality to process payments for items offered in your application through the Tizen Store. In-app purchase uses the same payment service as is used for application purchases, so your customers experience a consistent and secured purchase flow. In-app purchase can be implemented in both Tizen native and Tizen web applications.</p>
+<p>To use in-app purchase, you can use your Tizen Store Seller Office account to register items to <a href="http://seller.tizenstore.com/" target="_blank">Tizen Store Seller Office</a>. To get started, we recommend you to read thoroughly the <a href="in_app_purchase_ programming_guide.htm">in-app purchase programming guide</a>.</p>
+
+ <ul> 
+   <li><a href="in_app_purchase_ programming_guide.htm">IAP Programming Guide</a> - <strong>Updated</strong></li>
+   <li><a href="https://developer.tizen.org/sites/default/files/page/native_sample_application_source_code_20151222.zip">Native Sample Application Source Code</a> (68.88KB) - <strong>Updated</strong></li>
+   <li><a href="https://developer.tizen.org/sites/default/files/page/web_sample_application_source_code_20150113.zip" title="Web Sample Application Source Code">Web Sample Application Source Code</a> (278.49KB)</li> 
+  </ul>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/extension_sdk/in_app_purchase_ programming_guide.htm b/org.tizen.devtools/html/extension_sdk/in_app_purchase_ programming_guide.htm
new file mode 100644 (file)
index 0000000..a4a1f0b
--- /dev/null
@@ -0,0 +1,1911 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+    <script type="text/javascript" src="../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+    <title>In-App Purchase Programming Guide</title>
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Content</p>
+        <ul class="toc">
+                       <li><a href="#mechanism">What is the In-App Purchase AppControl Mechanism?</a></li>
+                       <li><a href="#types">Supported Item Types</a></li>
+                       <li><a href="#terms">Terms and Abbreviations</a></li>
+                       <li><a href="#apply">Applying IAP to Your Application</a></li>
+            <li><a href="#register">1. Registering Your Items to Tizen Store Seller Office</a></li>
+            <li><a href="#set">2. Setting Your Application Project up to Use IAP</a></li>
+                       <li><a href="#program">3. Programming Your Application to Work with IAP</a></li>
+            <li><a href="#verify">4. Verifying with Tizen Store IAP Server</a></li>
+                       <li><a href="#appendixes">Appendixes</a></li>
+               </ul>
+               <p class="toc-title">Related Info</p>
+             <ul class="toc">
+            <li><a href="https://developer.tizen.org/sites/default/files/page/iap_programming_guide_appcontrol_20151214.zip" target="_blank">IAP Sample Native Apps</a></li>
+            <li><a href="https://developer.tizen.org/sites/default/files/page/web_sample_application_source_code_20150113.zip" target="_blank">IAP Sample Web Apps</a></li>
+             </ul>
+
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>In-App Purchase Programming Guide</h1>
+
+
+<p>Selling items from within your application, you can get large revenue. You can implement In-Application Purchases in your application using the AppControl mechanism for Tizen Native and Web applications.</p>
+
+<p>You can use the IAP in any of the following scenarios:</p>
+<ul> 
+   <li>An application that enables additional features</li> 
+   <li>Any application that allows the user to remove adverts</li> 
+   <li>An audio-book application that allows the user to purchase and download new books</li>
+   <li>A game which offers new levels to play</li>
+   <li>A RPG game that allows to buy virtual items</li>
+   <li>And many other features…</li>
+  </ul>
+
+
+
+<h2 id="mechanism">What is the In-App Purchase AppControl Mechanism?</h2>
+
+<p>If you want to sell items inside your applications such as in-game coins, levels and others, you may need to set servers up to communicate with billing server and user authentications server, and many other infra servers. In-App Purchase will simply handle all those things mentioned above and you don&#39;t need to worry about it. In order to using In-App Purchase, you need to prepare your applications for communicate with it. For example, with in-app purchase of items, your applications just find the proper AppControl, starts the purchase method and receive the result of the purchase in the method of the listener method. IAP will show dialogs (in case of errors), communicate with Tizen Stores server and invoke the listener methods to return the result of the request.</p>
+
+<p>This document explains the process of using the IAP from A to Z. Please read this document thoroughly before you use it.</p>
+
+
+<h2 id="types">Supported Item Types</h2>
+
+<p>IAP supports the item types described below.</p>
+
+<table>
+<caption>Table: Supported Item Types</caption>
+<tbody>
+<tr>
+ <th>Table</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td>Consumable</td>
+ <td><p>If you purchase an item of this type and use it, it is consumed. These items can be repurchased.</p>
+ <p>Example: Consumable items such as bullets in games.</p></td>
+ </tr>
+ <tr>
+ <td>Non-Consumable</td>
+ <td><p>Once purchased, you can use an item of this type permanently. These items cannot be repurchased.</p>
+ <p>Example: Non-Consumable items, including books, that do not need to repurchased.</p>
+  </td>
+ </tr><tr>
+ <td>Subscription (Non-renewing)</td>
+ <td><p>Once a certain period has passed after an item purchase, these items can be repurchased.</p>
+ <p>These items are not automatically repurchased after a certain period.</p>
+ <p>Example: Items that can be repurchased after a certain period such as monthly magazines with expiration dates.</p></td>
+  </tr>
+ </tbody></table>
+
+ <h2 id="terms">Terms and Abbreviations</h2>
+<table>
+<caption>Table: Terms and abbreviations</caption>
+<tbody>
+ <tr>
+ <td><strong>IAP</strong></td>
+ <td>In-App Purchase</td>
+ </tr>
+ <tr>
+ <td><strong>MCC</strong></td>
+ <td>This code (3 digits) identifying mobile country code.
+  </td></tr>
+  <tr>
+  <td><strong>MNC</strong></td>
+ <td>This code (chars/digits) identifying carrier in current country.</td>
+ </tr>
+ <tr>
+ <td><strong>AppControl</strong></td>
+ <td>It is a standard mechanism in Tizen for using specific operations exported by other applications. 
+  </td>
+ </tr><tr>
+ <td><strong>Operation ID</strong></td>
+ <td>Defines the behavior of the AppControl.</td>
+ </tr>
+ <tr>
+ <td><strong>Application ID</strong></td>
+ <td>Used to identify each application control suppliers.
+  </td></tr>
+  <tr>
+  <td><strong>Item Group ID</strong></td>
+ <td>Collection of items identified by single ID (Item list).</td>
+ </tr>
+ <tr>
+ <td><strong>Item</strong></td>
+ <td>It is a single piece of content. 
+  </td>
+ </tr>
+ </tbody></table> 
+
+
+<h2 id="apply">Applying IAP to Your Application</h2>
+
+<p>It is not difficult to apply the IAP to your application, because it is very simple and lightweight. How to apply are as follow:</p>
+<ol>
+<li>Register your items to Tizen Store Seller Office. (<a href="http://seller.tizenstore.com/" target="_blank">http://seller.tizenstore.com</a>)</li>
+<li>Program your application to work with IAP.</li>
+<li>Test and upload your application.</li>
+</ol>
+
+
+<h2 id="register">1. Registering Your Items to Tizen Store Seller Office</h2>
+<p>Before you set up and program your application for IAP, you need to register item group and items to Tizen Store Seller Office. The item group is a collection of items and it will be connected to your application in Tizen Store Seller Office. For example, if there are 10 kinds of special items you need for your game, you need to create one item group for your game and 10 individual items. Registering is really simple.</p>
+
+
+<h3>1.1. Connect to Tizen Store Seller Office</h3>
+
+<p>Run a web browser and connect to Tizen Store Seller Office. The address of Tizen Store Seller Office is <a href="http://seller.tizenstore.com/" target="_blank">http://seller.tizenstore.com</a>. Log in to Tizen Store Seller Office. If you don&#39;t have any account for Tizen Store Seller Office, you can make your own. After you have logged in to the Tizen Store, if you want to sell applications under your personal name, you should register as a private seller. And, if you want to sell applications under your company name register as a corporate seller.</p>
+
+
+<h3>1.2. Register a New Item Group</h3>
+
+<p>Follow steps explain how to register a new item group on Seller Office.</p>
+<ol>
+<li>Click <strong>Applications &gt; Item</strong> to navigate to the selected menu option.</li>
+<li>Click <strong>Add Item Group</strong>.</li>
+<li>Fill in the fields for the Item Group Title and Description, and click <strong>OK</strong> to register your item group.</li>
+<li>When the item group is registered, you can click <strong>Edit</strong> to modify its information.</li>
+<li>Select a checkbox and click <strong>Delete</strong> to delete an item group. When you delete an item group, all the items included in that group will also be deleted.</li>
+<li>You can copy registered item groups from the item group list. When you copy an item group, all the items included in that group will also be copied.</li>
+</ol>
+
+<p>An Item group can be modified, deleted, or copied when the application has the following statuses</p>
+
+
+<h3>1.3. Add a New Item (Temporary Status)</h3>
+
+<p>From the item list, select the name of a registered item group to navigate to its information page. After an item group is created, a list of temporary tabs will appear on the information screen when you first access it.</p>
+<ol>
+<li>Click <strong>Add Item</strong> in the temporary tab on the view page to enter basic information, such as Title, Price, and Description, in the Add Item popup window. Then click <strong>OK</strong> to add items. See the <strong>Application Registration Guide</strong> for details on price setting.</li>
+<li>You can batch register items by clicking <strong>Item Bulk Upload</strong> to upload an Excel file.</li>
+<li>When the item has been added, you can click its title in the item list to view the added content.</li>
+</ol>
+
+<h4>1.3.1. Edit an Item (Temporary Status)</h4>
+
+<p>You can add, modify, or delete an item if there is an application listed in the item group, or if registered or revised applications in the item group are listed under Pre-Certification.</p>
+<ol>
+<li>You can click the title of the item on the temporary tab list and check or edit the item title, price, description, and image in the View popup window.</li>
+<li>If all the applications containing the item are listed under Pre-Certification, select the checkbox and click <strong>Delete</strong> to delete the item from all of them. However, if the statuses of items mapped for applications are for sale, it cannot be deleted.</li>
+<li>All changes will be applied when all the mapped applications are validated. The <strong>On Standby</strong> button is displayed until validation is complete.</li>
+<li>Item statuses for different types of application status are as follows:</li>
+</ol>
+
+<h4>1.3.2. Item Sales (Sales Status)</h4>
+<ol>
+<li>Items are registered and modified and you can view them in sales.</li>
+<li>If all the mapped applications that are being registered or revised in the item group are listed under Pre-Certification, click the <strong>Modify Item(s)</strong> button to create a temporary tab that will allow you to modify the applications.</li>
+</ol>
+
+<h2 id="set">2. Setting Your Application Project up to Use IAP</h2>
+
+<p>There is nothing additional to be done in the project to make your application work with IAP. It uses an AppControl mechanism, and as such requires no updates to the application project.</p>
+
+<p>Working with IAP means simply getting the proper AppControl.</p>
+
+<p>You can find the AppControl tutorials in Help section of Tizen IDE. Or directly you can refer to the link to the mobile native API:</p>
+<ul>
+<li><a href="../../../org.tizen.native.mobile.apireference/group__CAPI__APP__CONTROL__MODULE.html">App Control</a></li>
+</ul>
+
+
+<h2 id="program">3. Programming Your Application to Work with IAP</h2>
+
+<p>Programming with IAP is very similar to programming with Native Tizen API and other AppControls supported in the system. Before you implement your code you should edit the &quot;manifest&quot; file first.</p>
+
+<p>Section 3.1. explains more about &quot;manifest&quot; file.</p>
+
+<p>Note that the IAP allows for two modes of operation (key name &quot;_mode&quot;):</p>
+<ul>
+<li>Normal mode or commercial mode: To be used with the finished application, released on the market. Proper data will be obtained and returned from the IAP server.</li>
+<li>Developer mode: This can be used while development of the application for testing purpose. Payment always succeeds.</li>
+</ul>
+
+<p>Following table describes the Interfaces list</p>
+
+<table>
+<caption>Table: Interfaces list</caption>
+<tbody>
+<tr>
+ <th>Application ID</th>
+ <th>Operation ID</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">org.tizen.inapppurchase.iapclient</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/purchase</span></td>
+ <td><p>The operation makes a purchase of Item. It shows a purchase screen for an item.</p>
+ <p>During this step a purchase screen will be displayed. And the user need to provide user’s details (e-mail, password) to make a purchase.</p>
+ <p>The output value indicates the result of purchase(success or not), and it is used to verify the purchase</p></td>
+ </tr>
+ <tr>
+ <td rowspan="3"><span style="font-family: Courier New,Courier,monospace">org.tizen.inapppurchase.iapservice</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_item_list</span></td>
+ <td><p>The operation returns a list of item available for purchase.</p>
+ <p>The output data values are used to send a list of items available for purchase.</p></td>
+ </tr>
+ <tr>
+  <td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_purchased_item_list</span> </td>
+ <td><p>The operation returns a list of already purchased items. </p>
+ </td>
+ </tr>
+ <tr>
+  <td><span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_country_list</span> </td>
+ <td><p>The operation returns a list of countries’ MCC and MNC codes to be used in developer mode during testing in-app purchases. </p>
+ </td>
+ </tr>
+ </tbody></table>
+
+<h3>Purchase Item Flow</h3>
+
+<ol>
+<li>Get Item list: Use the <span style="font-family: Courier New,Courier,monospace">org.tizen.inapppurchase.iapservice</span> Application ID to retrieve a list items from Tizen Store IAP Server for a given groupId:
+<p class="figure">Figure: Item list</p> 
+<p align="center"><img alt="Item list" src="../images/iap_workflow_itemlist.png" /></p> </li>
+<li>Display a list of items in Your In-App Purchase Application
+</li>
+<li>Purchase the item: Use the <span style="font-family: Courier New,Courier,monospace">org.tizen.inapppurchase.iapclient</span> Application ID to make a purchase of particular item.
+<p class="figure">Figure: Purchase item</p> 
+<p align="center"><img alt="Purchase item" src="../images/iap_workflow_purchase.png" /></p></li>
+</ol>
+
+<h3>Get a List of Countries</h3>
+
+<p>In developer mode, you are able to test In-App Purchase with different country servers. To get a list of available servers you can use <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_country_list</span> operation:</p>
+
+<p class="figure">Figure: Country list</p> 
+<p align="center"><img alt="Country list" src="../images/iap_workflow_countrylist.png" /></p>
+
+
+<h3>3.1. Add Permissions to Manifest File</h3>
+
+<p>IAP uses AppControl interface to handle purchases. To add required permissions to your native application project, open tizen-manifest.xml file and add following permission:</p>
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/appmanager.launch</span></li>
+</ul>
+
+<p>Below is the content of the manifest file of native application which contains required permissions.</p>
+
+<pre class="prettyprint">
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;
+&lt;manifest xmlns=&quot;http://tizen.org/ns/packages&quot; package=&quot;org.tizen.iapsample&quot; version=&quot;1.0.0&quot;&gt;
+&nbsp;&nbsp;&nbsp;. . .
+&nbsp;&nbsp;&nbsp;&lt;privileges&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;privilege&gt;http://tizen.org/privilege/appmanager.launch&lt;/privilege&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. . .
+&nbsp;&nbsp;&nbsp;&lt;/privileges&gt;
+&nbsp;&nbsp;&nbsp;. . .
+&lt;/manifest&gt;
+</pre>
+
+<p>On the other hand, to add required permission to your web application project, open config.xml file and add following permission:</p>
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">http://www.tizen.org/privilege/application.launch</span></li>
+</ul>
+
+<p>Below is the content of the config file of web application which contains required permissions.</p>
+<pre class="prettyprint">
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;&nbsp;widget xmlns=&quot;http://www.w3.org/ns/widgets" xmlns:tizen=&quot;http://tizen.org/ns/widgets&quot; id=  . . .&gt;
+&nbsp;&nbsp;&nbsp;. . .
+&nbsp;&nbsp;&nbsp;&lt;tizen:privilege name = &quot;http://tizen.org/privilege/application.launch&quot;/&gt;
+&nbsp;&nbsp;&nbsp;. . .
+&lt;/widget&gt;
+</pre>
+
+<h3>3.2. IAP Service Control (Get Item List, Purchased Item List, Country List)</h3>
+
+<p>The IAP Service instance allows you to get a list of items available for purchase and to get a list of already purchased item. It also allows you to get a list of countries available for testing in developer mode</p>
+<ul>
+<li><strong>Application ID</strong>
+<p>This application control can be accessed using aliased application ID of &quot;<span style="font-family: Courier New,Courier,monospace">org.tizen.inapppurchase.iapservice</span>&quot;.</p>
+</li>
+<li><strong>Operation ID</strong>
+<p>This application supports the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_item_list</span> and <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_purchased_item_list</span> operations. It also supports <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_country_list</span> operation.</p>
+</li>
+<li><strong>Get Item List operation</strong>
+<p>This operation returns a list of items available for purchase.</p>
+</li>
+<li><strong>Input data</strong>
+<p>The following table show the (key, value) pairs required in the input extra data for the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_item_list</span> operation:</p>
+<table>
+<caption>Table: Input data for get item list</caption>
+<tbody>
+<tr>
+ <th>Key</th>
+ <th>Value</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_mode</span></td>
+ <td> <span style="font-family: Courier New,Courier,monospace">0 | 1 </span></td>
+ <td><p>Mode type.</p>
+<p>This information is optional. The default value is 0.</p>
+ <p>0 is normal (commercial) mode.</p>
+ <p>This mode needs to be used in application submitted to Tizen Store.</p>
+ <p>1 is developer mode (always success). This mode can be used while development of the application for testing purpose. Payment always succeeds.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_transactionId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Transaction ID number, such as 1, 2, …</span></td>
+ <td><p>Transaction ID.</p>
+ <p>This information is mandatory.</p>
+ <p>This is used to track a transaction between requests.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_startNumber</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Index of the first item</span></td>
+ <td><p>Index of first item on the list</p>
+ <p>This information is mandatory</p>
+ <p>Start downloading item from this number</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_endNumber</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Index of the last item</span></td>
+ <td><p>Index of last item on the list</p>
+ <p>This information is mandatory.</p>
+ <p>Stop downloading items up to this number.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemGroupId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">ID of Group, such as 100000001455</span></td>
+ <td><p>Group ID</p>
+ <p>This information is mandatory.</p>
+ <p>Group ID is associated with a particular Group of items in the Tizen Store Seller Office site.</p>
+ <p>You need to register your Group Id on the Tizen Store Seller Office website first.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_languageCd</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Language Code, such as eng, rus</span></td>
+ <td><p>Language Code</p>
+ <p>This information is optional.</p>
+ <p>According to ISO 639-2, thus the name three character code.</p>
+ <p>Language Code is associated with display language of item details in the Tizen Store Seller Office site.</p>
+ <p>Output parameters (itemName, itemDescription, reserved1, reserved2) are changed according to this Language code.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemTypeCd</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Item Type, such as  00 | 01 | 02 | 10</span></td>
+ <td><p>Item type code</p>
+ <p>This information is optional.</p>
+ <p>String representation of values:</p>
+ <p>00: Non-consumable</p>
+ <p>01: Consumable</p>
+ <p>02: Subscription (Non-renewing)</p>
+ <p>10: All</p> </td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_mcc</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">MCC Code, such as 250</span></td>
+ <td><p>MCC Code</p>
+ <p>This information is optional. It can be used only in developer mode.</p>
+ <p>You can receive a list of available MCC codes through get country list operation</p> </td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_mnc</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">MNC Code, such as 01</span></td>
+ <td><p>MNC Code</p>
+ <p>This information is optional. It can be used only in developer mode.</p>
+ <p>MNC Code is Mobile Network Code.</p></td>
+ </tr>
+ </tbody></table>
+</li>
+<li><strong>Example code for get item list</strong>
+
+<pre class="prettyprint">
+app_control_h app_control;
+int rt = app_control_create(&amp;app_control);
+
+if (rt == APP_CONTROL_ERROR_NONE)
+{
+&nbsp;&nbsp;&nbsp;app_control_set_app_id(app_control, &quot;&nbsp;org.tizen.inapppurchase.iapservice&quot;);
+&nbsp;&nbsp;&nbsp;app_control_set_operation(app_control, &quot;http://tizen.org/appcontrol/operation/iapv2/get_item_list&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_mode&quot;, &quot;0&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_transactionId&quot;, &quot;123&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_startNumber&quot;, &quot;1&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_endNumber&quot;, &quot;10&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_itemGroupId&quot;, &quot;100000000012&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_languageCd&quot;, &quot;ENG&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_itemTypeCd&quot;, &quot;00&quot;);
+       
+&nbsp;&nbsp;&nbsp;rt = app_control_send_launch_request(app_control, get_item_list_cb, NULL);
+}
+       
+if (app_control != NULL)
+{
+&nbsp;&nbsp;&nbsp;app_control_destroy(app_control);
+}
+</pre>
+</li>
+
+<li><strong>Output Data</strong>
+
+<p>The results of the operation are returned in the app control callback.</p>
+
+<p>The following table shows the output data for the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_item_list</span> operation:</p>
+
+<table>
+<caption>Table: Output data for get item list</caption>
+<tbody>
+<tr>
+ <th>Key</th>
+ <th>Value</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_method</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">OnItemInformationListReceived</span></td>
+ <td><p>Method to be called as a purchase request result.</p>
+ <p>This value will be OnItemInformationListReceived</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_result</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Result code&gt;</span></td>
+ <td><p>Result code number.</p>
+ <p>Result codes are described in the end of this section.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_resultDescription</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Result code/Function ID number&gt;</span></td>
+ <td>&quot;Result code /Function ID&quot; when &quot;_result&quot; value is not &quot;0&quot; (success). Result codes are described in the end of this section </td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_transactionId</span></td>
+ <td> <span style="font-family: Courier New,Courier,monospace">&lt;TransactionID&gt;</span></td>
+ <td><p>Transaction ID number</p>
+ <p>This is the same as the transaction ID that is used to request.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_startNumber</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;start number&gt;</span></td>
+ <td><p>Start Number</p>
+ <p>Index of the first item on the list</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_endNumber</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;end number&gt;</span></td>
+ <td><p>End Number</p>
+ <p>Index of the last item on the list</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_totalCount</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;total count&gt;</span></td>
+ <td>Total items countNumber of items based on the startNumber and endNumber</td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemTotalCount</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;item total count&gt;</span></td>
+ <td>Total counts of registered items in the group ID. </td>
+ </tr>
+ </tbody></table>
+
+<p>We also have _totalCount number of items in an output data, each key is a PREFIX (list item index value) plus a key (i.e. &quot;12_itemId&quot;) as below:</p>
+
+<table>
+<caption>Table: _totalCount number of items in output data</caption>
+<tbody>
+<tr>
+ <th>Key</th>
+ <th>Value</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;ItemID&gt;</span></td>
+ <td><p>Item ID number</p>
+ <p>This is the same as a Item ID that is used to request.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemGroupId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;ItemGroup ID&gt;</span></td>
+ <td><p>Item group ID</p>
+ <p>This is a collection of items and it will be linked to your application in Tizen Store Seller site.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemName</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Item Name&gt;</span></td>
+ <td><p>Item Name</p>
+ <p>This is a name provided during item registration on the Tizen Store Seller Office.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_currencyUnit</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Currency unit, such as:
+ $,Won, Pound</span></td>
+ <td><p>Currency Unit</p>
+ <p>Device user currency unit.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_unitPrecedes</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">0 | 1</span></td>
+ <td><p>Unit Precedes</p>
+ <p>String representation of values:</p>
+ <p>0: Tall (2.99 TL)</p>
+ <p>1: Front ($ 2.99)</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_hasPenny</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">0 | 1</span></td>
+ <td><p><span style="font-family: Courier New,Courier,monospace">Has Penny</span></p>
+ <p>Informations if currency unit has penny: representation</p>
+ <p>0 : no</p>
+ <p>1 : yes</p> </td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemPrice</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Item price&gt;</span></td>
+ <td><p>Item price</p>
+ <p>This is a price of item in local currency.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemDownloadUrl</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;URL&gt;</span></td>
+ <td><p>Item download URL</p>
+ <p>This is a URL provided during item registration on the Tizen Store Seller Office.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemImageUrl</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;URL&gt;</span></td>
+ <td><p>Item image URL</p>
+ <p>This is a URL provided during item registration on the Tizen Store Seller Office.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemDescription</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Item description&gt;</span></td>
+ <td><p>Item description</p>
+ <p>A description provided during item registration.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_reserved1</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Reserved Field 1&gt;</span></td>
+ <td>Reserved Field 1 </td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_reserved2</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Reserved Field 2&gt;</span></td>
+ <td>Reserved Field 2 </td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemTypeCd</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">00 | 01 | 02</span></td>
+ <td><p>Item type code</p>
+ <p>String representation of values:</p>
+ <p>00: Non-consumable</p>
+ <p>01: Consumable</p>
+ <p>02: Subscription (Non-renewing)</p></td>
+ </tr><tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemSubsBillDurationCd</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">00 | 01 | 02 | 03</span></td>
+ <td><p>Item subsbillduration code</p>
+<p>&#39;_itemTypeCd&#39; Value is &#39;03&#39;, the only.</p>
+ <p>If the product type is subscription, the available four units for the validity period of the product are YEAR, MONTH, WEEK, and DAY. The units should be in capital code.</p>
+ <p>String representation of values:</p>
+ <p>00: Year</p>
+ <p>01: Month</p>
+ <p>02: Week</p>
+ <p>03: Day</p> </td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_subscriptionDurationMultiplier</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Subscription duration multiplier</span></td>
+ <td>If the _itemTypeCdis subscription (-02), this is the item duration. Combined with PREFIX_itemSubsBillDurationCd, it is means 1MONTH.</td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_timeStamp</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Time stamp&gt;</span></td>
+ <td><p>Time stamp</p>
+ <p>Based on GMT +0, Server time.</p>
+ <p>(yyyyMMddHHmmss)</p> </td>
+ </tr>
+ </tbody></table>
+</li>
+
+<li><strong>Example code for retrieving a list of items</strong>
+
+<pre class="prettyprint">
+void 
+get_item_list_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;char* rt_method = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_result = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_resultDescription = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_transactionId = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_startNumber = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_endNumber = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_totalCount = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemTotalCount = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemId = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemGroupId = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemName = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_currencyUnit = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_unitPrecedes = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_hasPenny = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemPrice = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemDownloadUrl = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemImageUrl = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemDescription = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_reserved1 = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_reserved2 = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemTypeCd = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemSubsBillDurationCd = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_subscriptionDurationMultiplier = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_timeStamp = NULL;
+       
+&nbsp;&nbsp;&nbsp;if (result == APP_CONTROL_RESULT_SUCCEEDED){
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_method&quot;, &amp;rt_method);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_result&quot;, &amp;rt_result);
+               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// succeed
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!strcmp(&quot;0&quot;, rt_result))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_resultDescription&quot;, &amp;rt_resultDescription);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_transactionId&quot;, &amp;rt_transactionId);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_startNumber&quot;, &amp;rt_startNumber);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_endNumber&quot;, &amp;rt_endNumber);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_totalCount&quot;, &amp;rt_totalCount);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_itemTotalCount&quot;, &amp;rt_itemTotalCount);
+                       
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int start = atoi(rt_startNumber);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int end = atoi(rt_endNumber);
+                       
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char keyId[100] = {0, };
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (; start &lt;= end; start++)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemId&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, key_id, &amp;rt_itemId);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemGroupId);&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, key_id, &amp;rt_itemGroupId);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemName&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemName);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_currencyUnit&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_currencyUnit);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_unitPrecedes&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_unitPrecedes);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_hasPenny&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_hasPenny);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemPrice&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemPrice);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemDownloadUrl&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemDownloadUrl);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemImageUrl&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemImageUrl);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemDescription&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemDescription);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_reserved1&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_reserved1);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_reserved2&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_reserved2);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemTypeCd&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemTypeCd);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemSubsBillDurationCd&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemSubsBillDurationCd);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_subscriptionDurationMultiplier&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_subscriptionDurationMultiplier);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_timeStamp&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_timeStamp);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+</li>
+
+<li><strong>GetPurchasedItemList operation</strong>
+
+<p>This operation returns a list of already purchased items.</p>
+</li>
+<li><strong>Input data</strong>
+
+<p>The following table show the (key, value) pairs required in the input extra data for the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_purchased_item_list</span> operation:</p>
+
+<table>
+<caption>Table: Input data for get purchased item list</caption>
+<tbody>
+<tr>
+ <th>Key</th>
+ <th>Value</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_mode</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">0 | 1</span></td>
+ <td><p>Mode type.</p>
+<p>This information is optional. The default value is 0.</p>
+<p>0 is normal (commercial) mode.</p>
+<p>This mode needs to be used in application submitted to Tizen Store.</p>
+<p>1 is developer mode (always success). This mode can be used while development of the application for testing purpose. Payment always succeeds.</p></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Transaction ID number, such as 1, 2, …</span></td>
+ <td><p>Transaction ID.</p>
+<p>This information is mandatory.</p>
+<p>This is used to track a transaction between requests.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_startNumber</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Index of the first item</span></td>
+ <td><p>Index of first item on the list</p>
+<p>This information is mandatory</p>
+<p>Start downloading item from this number</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_endNumber</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Index of the last item</span></td>
+ <td><p>Index of last item on the list</p>
+<p>This information is mandatory.</p>
+<p>Stop downloading items up to this number.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_startDate</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Start date, such as 20131031</span></td>
+ <td><p>The start date of the requested inbox list.</p>
+<p>This information is optional.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_endDate</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">End date, such as 20131031</span></td>
+ <td><p>The end date of the requested inbox list.</p>
+<p>This information is optional.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemGroupId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">ID of Group, such as 100000002501</span></td>
+ <td><p>Group ID</p>
+<p>This information is mandatory.</p>
+<p>Group ID is associated with the particular Group of items in the Tizen Store Seller Office site.</p>
+<p>You need to register your Group Id on the Tizen Store Seller Office website first.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_languageCd</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Language Code, such as eng, rus</span></td>
+ <td><p>Language code</p>
+<p>This information is optional.</p>
+<p>According to ISO 639-2, thus the name three character code.</p>
+<p>Language Code is associated with display language of item details in the Tizen Store Seller Office site.</p>
+<p>Output parameters(itemName , itemDescription, reserved1, reserved2) are changed according to this Language code.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_mcc</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">MCC Code, such as 250</span></td>
+ <td><p>MCC Code</p>
+<p>This information is optional. It can be used only in developer mode.</p>
+<p>You can receive a list of available MCC codes through get country list operation</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_mnc</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">MNC Code, such as 01</span></td>
+ <td><p>MNC Code</p>
+<p>This information is optional. It can be used only in developer mode.</p>
+<p>MNC Code is Mobile Network Code.</p></td>
+ </tr>
+ </tbody></table>
+</li>
+
+<li><strong>Example code for retrieving a list of purchased items</strong>
+
+<pre class="prettyprint">
+app_control_h app_control;
+int rt = app_control_create(&amp;app_control);
+
+if (rt == APP_CONTROL_ERROR_NONE)
+{
+&nbsp;&nbsp;&nbsp;app_control_set_app_id(app_control, &quot; org.tizen.inapppurchase.iapservice&quot;);
+&nbsp;&nbsp;&nbsp;app_control_set_operation(app_control, &quot;http://tizen.org/appcontrol/operation/iapv2/get_purchased_item_list&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_mode&quot;, &quot;0&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_transactionId&quot;, &quot;123&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_startNumber&quot;, &quot;1&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_endNumber&quot;, &quot;10&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_startDate&quot;, &quot;20140101&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_endDate&quot;, &quot;20141231&quot;); 
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_itemGroupId&quot;, &quot;100000000012&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_languageCd&quot;, &quot;ENG&quot;);
+               
+&nbsp;&nbsp;&nbsp;rt = app_control_send_launch_request(app_control, get_purchased_item_list_cb, NULL);
+}
+       
+if (app_control != NULL)
+{
+&nbsp;&nbsp;&nbsp;app_control_destroy(app_control);
+}
+</pre>
+</li>
+<li><strong>Output Data</strong>
+
+<p>The results of the operation are returned in the app control callback.</p>
+
+<p>The following table shows the output data for the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_purchased_item_list</span> operation:</p>
+
+<table>
+<caption>Table: Output data for get purchased item list</caption>
+<tbody>
+<tr>
+ <th>Key</th>
+ <th>Value</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_method</span></td>
+ <td><p><span style="font-family: Courier New,Courier,monospace">OnPurchasedItem</span></p>
+<p><span style="font-family: Courier New,Courier,monospace">InformationListReceived</span></p></td>
+<td><p>Method to be called as a GetPurchasedItemList request result.</p>
+<p>This value will be</p>
+<p>OnPurchasedItem</p>
+<p>InformationListReceived</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_result</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Result code&gt;</span></td>
+ <td><p>Result code number.</p>
+<p>Result codes are described in the end of this section.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_resultDescription</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Result code/Function ID number&gt;</span></td>
+ <td><p>&quot;Result code /Function ID&quot; when &quot;_result&quot; value is not &quot;0&quot; (success).</p>
+<p>Result codes are described in the end of this section</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_transactionId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;TransactionID&gt;</span></td>
+ <td><p>Transaction ID number</p>
+<p>This is the same as the transaction ID that is used to request.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_startNumber</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;start number&gt;</span></td>
+ <td><p>Start Number</p>
+<p>Index of the first item on the list</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_endNumber</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;end number&gt;</span></td>
+ <td><p>End Number</p>
+<p>Index of the last item on the list</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_totalCount</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;total count&gt;</span></td>
+ <td><p>Total items count</p>
+<p>Number of items based on the startNumber and endNumber</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemTotalCount</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;item total count&gt;</span></td>
+ <td>Total count of purchased items in the group ID.</td>
+ </tr>
+ </tbody></table>
+
+<p>We also have _totalCount number of items in the output data, each key is a PREFIX (list item index value) plus a key (i.e. &quot;12_itemId&quot;) as below:</p>
+
+<table>
+<caption>Table: _totalCount number of items in output data</caption>
+<tbody>
+<tr>
+ <th>Key</th>
+ <th>Value</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;ItemID&gt;</span></td>
+ <td><p>Item ID number</p>
+ <p>This is the same as an Item ID that is used to request.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemGroupId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;ItemGroup ID&gt;</span></td>
+ <td><p>Item group ID</p>
+ <p>This is a collection of items and it will be linked to your application in Tizen Store Seller Office.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemName</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Item Name&gt;</span></td>
+ <td><p>Item Name</p>
+ <p>This is a name provided during item registration on the Tizen Store Seller Office.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_currencyUnit</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Currency unit, such as: $,Won, Pound</span></td>
+ <td><p>Currency Unit</p>
+ <p>Device user currency unit.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_unitPrecedes</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">0 | 1</span></td>
+ <td><p>Unit Precedes</p>
+ <p>String representation of values:</p>
+ <p>0: Tall (2.99 TL)</p>
+ <p>1: Front ($ 2.99)</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_hasPenny</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">0 | 1</span></td>
+ <td><p><span style="font-family: Courier New,Courier,monospace">Has Penny</span></p>
+ <p>Informations if currency unit has penny: representation</p>
+ <p>0 : no</p>
+ <p>1 : yes</p> </td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemPrice</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Item price&gt;</span></td>
+ <td><p>Item price</p>
+ <p>This is a price of item in local currency.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemDownloadUrl</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;URL&gt;</span></td>
+ <td><p>Item download URL</p>
+ <p>This is a URL provided during item registration on the Tizen Store Seller Office.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemImageUrl</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;URL&gt;</span></td>
+ <td><p>Item image URL</p>
+ <p>This is a URL provided during item registration on the Tizen Store Seller Office.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemDescription</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Item description&gt;</span></td>
+ <td><p>Item description</p>
+ <p>A description provided during item registration.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_reserved1</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Reserved Field 1&gt;</span></td>
+ <td>Reserved Field 1 </td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_reserved2</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Reserved Field 2&gt;</span></td>
+ <td>Reserved Field 2 </td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_paymentId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Payment ID&gt;</span></td>
+ <td>ID of payment</td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_purchaseDate</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Date&gt;</span></td>
+ <td>Date of purchase</td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemTypeCd</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">00 | 01 | 02</span></td>
+ <td><p>Item type code</p>
+ <p>String representation of values:</p>
+ <p>00: Non-consumable</p>
+ <p>01: Consumable</p>
+ <p>02: Subscription (Non-renewing)</p></td>
+ </tr><tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_itemSubsBillDurationCd</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">00 | 01 | 02 | 03</span></td>
+ <td><p>Item subs bill duration code</p>
+<p>&#39;_itemTypeCd&#39; Value is &#39;02&#39;, the only.</p>
+ <p>If the product type is subscription, the available four units for the validity period of the product are YEAR, MONTH, WEEK, and DAY. The units should be in capital code.</p>
+ <p>String representation of values:</p>
+ <p>00: Year</p>
+ <p>01: Month</p>
+ <p>02: Week</p>
+ <p>03: Day</p> </td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_subscriptionDurationMultiplier</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Subscription duration multiplier</span></td>
+ <td>If the _itemTypeCdis subscription (-02), this is the item duration. Combined with PREFIX_itemSubsBillDurationCd, it is means 1MONTH.</td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_timeStamp</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Time stamp&gt;</span></td>
+ <td><p>Time stamp</p>
+ <p>Based on GMT +0, Server time.</p>
+ <p>(yyyyMMddHHmmss)</p> </td>
+ </tr>
+ </tbody></table>
+</li>
+<li><strong>Example code for retrieving a list of purchased items</strong>
+&nbsp;&nbsp;&nbsp;
+<pre class="prettyprint">
+void 
+get_purchased_item_list_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;char* rt_method = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_result = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_resultDescription = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_transactionId = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_startNumber = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_endNumber = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_totalCount = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemTotalCount = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemId = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemGroupId = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemName = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_currencyUnit = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_unitPrecedes = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_hasPenny = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemPrice = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemDownloadUrl = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemImageUrl = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemDescription = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_reserved1 = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_reserved2 = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_paymentId = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_purchaseDate = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemTypeCd = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemSubsBillDurationCd = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_subscriptionDurationMultiplier = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_timeStamp = NULL;
+       
+&nbsp;&nbsp;&nbsp;if (result == APP_CONTROL_RESULT_SUCCEEDED)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_method&quot;, &amp;rt_method);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_result&quot;, &amp;rt_result);
+               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// succeed
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!strcmp(&quot;0&quot;, rt_result))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_resultDescription&quot;, &amp;rt_resultDescription);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_transactionId&quot;, &amp;rt_transactionId);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_startNumber&quot;, &amp;rt_startNumber);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_endNumber&quot;, &amp;rt_endNumber);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_totalCount&quot;, &amp;rt_totalCount);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_itemTotalCount&quot;, &amp;rt_itemTotalCount);
+                       
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int start = atoi(rt_startNumber);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int end = atoi(rt_endNumber);
+                       
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char keyId[100] = {0, };
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (; start &lt;= end; start++)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemId&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, key_id, &amp;rt_itemId);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemGroupId);&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, key_id, &amp;rt_itemGroupId);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemName&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemName);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_currencyUnit&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_currencyUnit);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_unitPrecedes&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_unitPrecedes);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_hasPenny&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_hasPenny);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemPrice&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemPrice);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemDownloadUrl&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemDownloadUrl);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemImageUrl&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemImageUrl);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemDescription&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemDescription);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_reserved1&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_reserved1);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_reserved2&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_reserved2);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_paymentId&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_paymentId);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_purchaseDate&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_purchaseDate);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemTypeCd&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemTypeCd);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_itemSubsBillDurationCd&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_itemSubsBillDurationCd);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_subscriptionDurationMultiplier&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_subscriptionDurationMultiplier);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_timeStamp&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, keyId, &amp;rt_timeStamp);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}  
+&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+</li>
+<li><strong>GetCountryList operation</strong>
+
+<p>This operation returns a list of countries available for testing in-application purchase.</p>
+</li>
+<li><strong>Input data</strong>
+
+<p>The following table show the (key, value) pairs required in the input extra data for the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_country_list</span> operation:</p>
+
+<table>
+<caption>Table: Input data for get country list</caption>
+<tbody>
+<tr>
+ <th>Key</th>
+ <th>Value</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_transactionId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Transaction ID number, such as
+
+1, 2, …</span></td>
+ <td><p>Transaction ID.</p>
+<p>This information is mandatory.</p>
+<p>This is used to track a transaction between requests.</p></td>
+ </tr>
+ </tbody></table>
+</li>
+<li><strong>Example code for get country list</strong>
+
+<pre class="prettyprint">
+app_control_h app_control;
+int rt = app_control_create(&amp;app_control);
+
+if (rt == APP_CONTROL_ERROR_NONE)
+{
+&nbsp;&nbsp;&nbsp;app_control_set_app_id(app_control, &quot; org.tizen.inapppurchase.iapservice&quot;);
+&nbsp;&nbsp;&nbsp;app_control_set_operation(app_control, &quot;http://tizen.org/appcontrol/operation/iapv2/get_country_list&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_mode&quot;, &quot;0&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_transactionId&quot;, &quot;123&quot;);
+               
+&nbsp;&nbsp;&nbsp;rt = app_control_send_launch_request(app_control, get_country_list_cb, NULL);
+}
+       
+if (app_control != NULL)
+{
+&nbsp;&nbsp;&nbsp;app_control_destroy(app_control);
+}
+</pre>
+</li>
+
+<li><strong>Output Data</strong>
+
+<p>The results of the operation are returned in the app control callback.</p>
+
+<p>The following table shows the output data for the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/get_country_list</span> operation:</p>
+
+<table>
+<caption>Table: Output data for get country list</caption>
+<tbody>
+<tr>
+ <th>Key</th>
+ <th>Value</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_method</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">OnCountryListReceived</span>
+</td>
+<td><p>Method to be called as a purchase request result.</p>
+<p>This value will be</p>
+<p>OnCountryListReceived</p>
+</td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_result</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Result code&gt;</span></td>
+ <td><p>Result code number.</p>
+<p>Result codes are described in the end of this section.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_resultDescription</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Result code/Function ID number&gt;</span></td>
+ <td><p>&quot;Result code /Function ID&quot; when &quot;_result&quot; value is not &quot;0&quot; (success).</p>
+<p>Result codes are described in the end of this section</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_transactionId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;TransactionID&gt;</span></td>
+ <td><p>Transaction ID number</p>
+<p>This is the same as the transaction ID that is used to request.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_startNumber</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;start number&gt;</span></td>
+ <td><p>Start Number</p>
+<p>Index of the first item on the list</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_endNumber</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;end number&gt;</span></td>
+ <td><p>End Number</p>
+<p>Index of the last item on the list</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_totalCount</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;total count&gt;</span></td>
+ <td><p>Total items count</p>
+<p>Number of items based on the startNumber and endNumber</p></td>
+ </tr>
+ </tbody></table>
+
+<p>We also have _totalCount number of countries in the output data, each key is a PREFIX (list item index value) plus a key (i.e. &quot;1_countryName&quot;) as below:</p>
+
+<table>
+<caption>Table: _totalCount number of countries in output data</caption>
+<tbody>
+<tr>
+ <th>Key</th>
+ <th>Value</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_countryName</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;String&gt;</span></td>
+<td><p>Country Name</p>
+<p>Name of a country.</p>
+</td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">PREFIX_mcc</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;String&gt;</span></td>
+ <td><p>MCC</p>
+ <p>Mobile country code.</p>
+</td>
+ </tr>
+  </tbody></table>
+</li>
+ <li><strong>Example code for retrieving a list of get country list</strong>
+
+ <pre class="prettyprint">
+void 
+get_country_list_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;char* rt_method = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_result = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_resultDescription = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_transactionId = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_startNumber = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_endNumber = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_totalCount = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_countryName = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_mcc = NULL;
+
+       
+&nbsp;&nbsp;&nbsp;if (result == APP_CONTROL_RESULT_SUCCEEDED)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_method&quot;, &amp;rt_method);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_result&quot;, &amp;rt_result);
+               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// succeed
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!strcmp(&quot;0&quot;, rt_result))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_resultDescription&quot;, &amp;rt_resultDescription);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_transactionId&quot;, &amp;rt_transactionId);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_startNumber&quot;, &amp;rt_startNumber);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_endNumber&quot;, &amp;rt_endNumber);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_totalCount&quot;, &amp;rt_totalCount);
+                       
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int start = atoi(rt_startNumber);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int end = atoi(rt_endNumber);
+                       
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char keyId[100] = {0, };
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (; start &lt;= end; start++)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_countryName&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, key_id, &amp;rt_countryName);
+                               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snprintf(key_id, sizeof(keyId), &quot;%d%s&quot;, start, &quot;_mcc&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, key_id, &amp;rt_mcc);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+</li> 
+
+<li><strong>Result code values</strong>
+
+<p>Following is a list of possible values of _result key for the <span style="font-family: Courier New,Courier,monospace">org.tizen.inapppurchase.iapservice</span> Application ID:</p>
+
+<table>
+<caption>Table: Result code values</caption>
+<tbody>
+<tr>
+ <th>Value</th>
+ <th>Description</th>
+ <th>Remarks</th>
+</tr>
+ <tr>
+ <td>0</td>
+ <td><span style="font-family: Courier New,Courier,monospace">Succeed</span></td>
+ <td>The status code for success</td>
+ </tr>
+ <tr>
+ <td>200</td>
+ <td><span style="font-family: Courier New,Courier,monospace">Network Error</span></td>
+ <td>The status code for network errors</td>
+ </tr>
+  <tr>
+ <td>1000</td>
+ <td><span style="font-family: Courier New,Courier,monospace">ProcessError</span></td>
+ <td>The status code for process errors</td>
+ </tr>
+ <tr>
+ <td>2001</td>
+ <td><span style="font-family: Courier New,Courier,monospace">NoApplicationStore</span></td>
+ <td>The status code if application store not present for the country</td>
+ </tr>
+  <tr>
+ <td>9201</td>
+ <td><span style="font-family: Courier New,Courier,monospace">ItemGroupIdNotFound</span></td>
+ <td>The status code if the item group ID is not found</td>
+ </tr>
+ <tr>
+ <td>9207</td>
+ <td><span style="font-family: Courier New,Courier,monospace">ItemIdNotFound</span></td>
+ <td>The status code if the item ID is not found</td>
+ </tr>
+ <tr>
+ <td>9502</td>
+ <td><span style="font-family: Courier New,Courier,monospace">InvalidRequestParameter</span></td>
+ <td>The status code if the wrong request parameter passed</td>
+ </tr>
+  </tbody></table>
+</li> 
+</ul>
+
+<h3>3.3. IAP Client Control (Purchase of Item)</h3>
+
+<p>The IAP Client instance allows you to initialize a purchase of item and to complete the purchase.</p>
+<ul>
+<li><strong>Application ID</strong>
+<p>This application control can be accessed using aliased application ID of <span style="font-family: Courier New,Courier,monospace">org.tizen.inapppurchase.iapclient</span>.</p>
+</li>
+<li><strong>Operation ID</strong>
+
+<p>This application supports the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/purchase</span> operation only.</p>
+</li>
+<li><strong>Purchase operation</strong>
+
+<p>This operation launches the purchase application and allows purchasing of In-App items. The input data passed in this operation are used to display a purchase form for particular item. The device user can choose between available payment methods, register his credit card, and confirm the purchase.</p>
+</li>
+<li><strong>Input data</strong>
+
+<p>The following table show the (key, value) pairs required in the input extra data for the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/purchase</span> operation.</p>
+
+<table>
+<caption>Table: Input data for purchase</caption>
+<tbody>
+<tr>
+ <th>Key</th>
+ <th>Value</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_mode</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">0 | 1</span></td>
+ <td><p>Mode type.</p>
+<p>This information is optional. The default value is 0.</p>
+<p>0 is normal (commercial) mode.</p>
+<p>This mode need to be used in application submitted to Tizen Store.</p>
+<p>1 is developer mode (always success). This mode can be used while development of the application for testing purpose. Payment will always succeed.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_transactionId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Transaction ID number, such as 1, 2, …</span></td>
+ <td><p>Transaction ID.</p>
+<p>This information is mandatory.</p>
+<p>This is used to track a transaction between requests.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">ID of Item, such as 000000003501</span></td>
+ <td><p>Item ID</p>
+<p>This information is mandatory.</p>
+<p>Item ID is associated with the particular Item in the Tizen Store Seller Office.</p>
+<p>You can also retrieve a list of items available for purchase through <span style="font-family: Courier New,Courier,monospace">org.tizen.inapppurchase.iapservice Application ID</span></p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemGroupId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">ID of Group, such as 100000001455</span></td>
+ <td><p>Group ID</p>
+<p>This information is mandatory.</p>
+<p>Group ID is a associated with the particular Group of items in the Tizen Store Seller Office.</p>
+<p>You need to register your Group Id on the Tizen Store Seller Office first.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_languageCd</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Language code such as eng, rus</span></td>
+ <td><p>Language code</p>
+<p>This information is optional.</p>
+<p>According to ISO 639-2, thus the name three character code.</p>
+<p>Language Code is associated with display language of item details in the Tizen Store Seller Office site.</p>
+<p>Or leave it to use default name as in seller site</p>
+<p>_itemName is higher priority than _languageCd.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemName</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Item Name such as &quot;Sword&quot; or &quot;칼&quot;</span></td>
+ <td><p>Item Name</p>
+<p>This information is optional.</p>
+<p>You can set your item name with _item Name.</p>
+<p>Or leave it to use default name as in seller site’s “purchase page” of IAP.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_mcc</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">MCC Code, such as 250</span></td>
+ <td><p>MCC Code</p>
+<p>This information is optional. It can be used only in developer mode.</p>
+<p>You can receive a list of available MCC codes through get country list operation</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_mnc</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">MNC Code, such as 01</span></td>
+ <td><p>MNC Code</p>
+<p>This information is optional. It can be used only in developer mode.</p>
+<p>MNC Code is Mobile Network Code.</p></td>
+ </tr>
+ </tbody></table>
+</li>
+
+<li><strong>Example code for Purchase</strong>
+&nbsp;&nbsp;&nbsp;
+<pre class="prettyprint">
+app_control_h app_control;
+int rt = app_control_create(&amp;app_control);
+
+if (rt == APP_CONTROL_ERROR_NONE)
+{
+&nbsp;&nbsp;&nbsp;app_control_set_app_id(app_control, &quot; org.tizen.inapppurchase.iapclient&quot;);
+&nbsp;&nbsp;&nbsp;app_control_set_operation(app_control, &quot;http://tizen.org/appcontrol/operation/iapv2/purchase&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_mode&quot;, &quot;0&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_itemId&quot;, &quot;000000000001&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_itemGroupId&quot;, &quot;100000000012&quot;);
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_languageCd&quot;, &quot;ENG&quot;); // optional
+&nbsp;&nbsp;&nbsp;app_control_add_extra_data(app_control, &quot;_itemName&quot;, &quot;Item 1&quot;); // optional
+       
+&nbsp;&nbsp;&nbsp;rt = app_control_send_launch_request(app_control, get_purchase_cb, NULL);
+}
+       
+if (app_control != NULL)
+{
+&nbsp;&nbsp;&nbsp;app_control_destroy(app_control);
+}
+</pre>
+</li>
+<li><strong>Output Data</strong>
+<p>The results of the operation are returned in the app control callback.</p>
+
+<p>This data can be used to verify the payment with Tizen Store IAP Server.</p>
+
+<p>The following table shows the output data for the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/purchase</span> operation during process of purchase:</p>
+
+<table>
+<caption>Table: Output data for purchase</caption>
+<tbody>
+<tr>
+ <th>Key</th>
+ <th>Value</th>
+ <th>Description</th>
+</tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_method</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">OnPurchaseItemReceived</span></td>
+ <td><p>Method to be called as a purchase request result</p>
+<p>This value will be OnPurchaseItemReceived.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_result</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Result code&gt;</span></td>
+ <td><p>Result code number.</p>
+<p>Result codes are described in the end of this section.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_resultDescription</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Result code/Function ID number&gt; | &lt;HTML tags&gt;</span></td>
+ <td><p>Display _resultDescription value as a pop-up by using Web-Control when you receive the &quot;_result&quot; value as 5600</p>
+<p>Result codes are described in the end of this section. ex&gt;&quot;(E1000/9100)&quot;</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;ItemID&gt;</span></td>
+ <td><p>Item ID number</p>
+<p>This is the same as an Item ID that is used to request.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemGroupId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;ItemGroup ID&gt;</span></td>
+ <td><p>Item group ID</p>
+<p>Item Group ID is a collection of items and it will be linked to your application in Tizen seller site.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemName</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Item Name&gt;</span></td>
+ <td><p>Item Name</p>
+<p>Item Name is a name provided during item registration on the Tizen Store Seller Office.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_ticketPurchaseId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Purchase Ticked ID&gt;</span></td>
+ <td>&lt;Purchase ticked ID&gt;
+&lt;This ID can be used to verify the purchase with Tizen Store IAP Server.&gt;</td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_currencyUnit</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Currency unit, such as: $,Won, Pound</span></td>
+ <td><p>Currency Unit</p>
+<p>Device user currency unit.</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_unitPrecedes</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">0 | 1</span></td>
+ <td><p>Unit Precedes</p>
+<p>String representation of values:</p>
+<p>0 : Tall (2.99 TL)</p>
+<p>1 : Front ($ 2.99)</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_hasPenny</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">0 | 1</span></td>
+ <td><p>Has Penny</p>
+<p>Informations if currency unit has penny: representation</p>
+<p>0 : no</p>
+<p>1 : yes</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemPrice</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Item price&gt;</span></td>
+ <td><p>Item price</p>
+<p>This is a price of item in local currency.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemDownloadUrl</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;URL&gt;</span></td>
+ <td><p>Item download URL</p>
+<p>This is a URL provided during item registration on the Tizen Store Seller Office.</p></td>
+ </tr>
+   <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemImageUrl</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;URL&gt;</span></td>
+ <td><p>Item image URL</p>
+<p>This is a URL provided during item registration on the Tizen Store Seller Office</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_itemDescription</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Item description&gt;</span></td>
+ <td><p>Item description</p>
+<p>A description provided during item registration.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_reserved1</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Reserved Field 1&gt;</span></td>
+ <td>Reserved Field 1</td>
+ </tr>
+   <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_reserved2</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Reserved Field 2&gt;</span></td>
+ <td>Reserved Field 2</td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_paymentId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Payment ID&gt;</span></td>
+ <td><p>Payment ID</p>
+<p>ID of payment.</p></td>
+ </tr>
+   <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_ticketVerifyUrl</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">URL, such as: http://tizen.org/appcontrol/operation/iap/purchase</span></td>
+ <td><p>Server’s URL</p>
+<p>This URL can be used with combination of other parameters to verify the purchase with Tizen Store IAP Server.</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_ticketPurchaseId</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Purchase TickedID&gt;</span></td>
+ <td><p>Purchase ticked ID</p>
+<p>This ID can be used to verify the purchase with Tizen Store IAP Server.</p></td>
+ </tr>
+   <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_ticketParam1</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Ticket parameter 1&gt;</span></td>
+ <td><p>Parameter 1</p>
+<p>This parameter is to be used with URL</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_ticketParam2</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Ticket parameter 2&gt;</span></td>
+ <td><p>Parameter 2</p>
+<p>This parameter is to be used with URL</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_ticketParam3</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Ticket parameter 3&gt;</span></td>
+ <td><p>Parameter 3</p>
+<p>This parameter is to be used with URL</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_ticketParam4</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Ticket parameter 4&gt;</span></td>
+ <td><p>Parameter 4</p>
+<p>This parameter is to be used with URL</p></td>
+ </tr>
+ <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_ticketParam5</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Ticket parameter 5&gt;</span></td>
+ <td><p>Parameter 5</p>
+<p>This parameter is to be used with URL</p></td>
+ </tr>
+  <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_purchaseDate</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">Date</span></td>
+ <td><p>Purchase date</p>
+<p>Date of purchase.</p></td>
+ </tr>
+   <tr>
+ <td><span style="font-family: Courier New,Courier,monospace">_timeStamp</span></td>
+ <td><span style="font-family: Courier New,Courier,monospace">&lt;Time stamp&gt;</span></td>
+ <td><p>Time stamp</p>
+<p>Based on &quot;GMT +0&quot;, Server time.</p>
+<p>(yyyyMMddHHmmss)</p></td>
+ </tr>
+ </tbody></table>
+</li>
+<li><strong>Example code for Purchase result</strong>
+<pre class="prettyprint">
+void 
+get_purchase_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;char* rt_method = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_result = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_resultDescription = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_transactionId = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemId = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_itemGroupId = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_itemName = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_currencyUnit = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_unitPrecedes = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_hasPenny = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_itemPrice = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_itemDownloadUrl = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_itemImageUrl = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_itemDescription = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_reserved1 = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_reserved2 = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_paymentId = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_ticketVerifyUrl = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_ticketPurchaseId = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_ticketParam1 = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_ticketParam2 = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_ticketParam3 = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_ticketParam4 = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_ticketParam5 = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_purchaseDate = NULL; 
+&nbsp;&nbsp;&nbsp;char* rt_itemTypeCd = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_itemSubsBillDurationCd = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_subscriptionDurationMultiplier = NULL;
+&nbsp;&nbsp;&nbsp;char* rt_timeStamp = NULL;
+       
+&nbsp;&nbsp;&nbsp;if (result == APP_CONTROL_RESULT_SUCCEEDED)
+&nbsp;&nbsp;&nbsp;{
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_method&quot;, &amp;rt_method);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_result&quot;, &amp;rt_result);
+               
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// succeed
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!strcmp(&quot;0&quot;, rt_result))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_resultDescription&quot;, &amp;rt_resultDescription);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_transactionId&quot;, &amp;rt_transactionId);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_itemId&quot;, &amp;rt_itemId);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_itemGroupId&quot;, &amp;rt_itemGroupId);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_itemName&quot;, &amp;rt_itemName);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_currencyUnit&quot;, &amp;rt_currencyUnit);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_unitPrecedes&quot;, &amp;rt_unitPrecedes);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_itemPrice&quot;, &amp;rt_itemPrice);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_itemDownloadUrl&quot;, &amp;rt_itemDownloadUrl);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_itemImageUrl&quot;, &amp;rt_itemImageUrl);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_itemDescription&quot;, &amp;rt_itemDescription);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_reserved1&quot;, &amp;amp;rt_reserved1);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_reserved2&quot;, &amp;rt_reserved2);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_paymentId&quot;, &amp;rt_paymentId);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_ticketVerifyUrl&quot;, &amp;rt_ticketVerifyUrl);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_ticketPurchaseId&quot;, &amp;rt_ticketPurchaseId);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_ticketParam1&quot;, &amp;rt_ticketParam1);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_ticketParam2&quot;, &amp;rt_ticketParam2);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_ticketParam3&quot;, &amp;rt_ticketParam3);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_ticketParam4&quot;, &amp;rt_ticketParam4);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_ticketParam5&quot;, &amp;rt_ticketParam5);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_purchaseDate&quot;, &amp;rt_purchaseDate);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_itemTypeCd&quot;, &amp;rt_itemTypeCd);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_itemSubsBillDurationCd&quot;, &amp;rt_itemSubsBillDurationCd);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_subscriptionDurationMultiplier&quot;, &amp;rt_subscriptionDurationMultiplier);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rt = app_control_get_extra_data(reply, &quot;_timeStamp&quot;, &amp;rt_timeStamp);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+</li>
+<li><strong>Result code values</strong>
+
+<p>Following is a list of possible values of _result key of the <span style="font-family: Courier New,Courier,monospace">org.tizen.inapppurchase.iapclient</span> application ID.</p>
+
+<table>
+<caption>Table: Result code values</caption>
+<tbody>
+<tr>
+ <th>Value</th>
+ <th>Description</th>
+ <th>Remarks</th>
+</tr>
+ <tr>
+ <td>0</td>
+ <td><span style="font-family: Courier New,Courier,monospace">Succeed</span></td>
+ <td>The status code for success</td>
+ </tr>
+ <tr>
+ <td>100</td>
+ <td><span style="font-family: Courier New,Courier,monospace">Cancel</span></td>
+ <td>The status code if the user cancels</td>
+ </tr>
+ <tr>
+ <td>200</td>
+ <td><span style="font-family: Courier New,Courier,monospace">NetworkError</span></td>
+ <td>The status code for network errors</td>
+ </tr>
+ <tr>
+ <td>1000</td>
+ <td><span style="font-family: Courier New,Courier,monospace">ProcessError</span></td>
+ <td>The status code for process errors</td>
+ </tr>
+ <tr>
+ <td>5600</td>
+ <td><span style="font-family: Courier New,Courier,monospace">PGError</span></td>
+ <td>The status code for the payment gateway error. Display the pop-up by using web-control.</td>
+ </tr>
+ <tr>
+ <td>9201</td>
+ <td><span style="font-family: Courier New,Courier,monospace">ItemGroupIdNotFound</span></td>
+ <td>The status code if the item group ID is not found</td>
+ </tr>
+ <tr>
+ <td>9207</td>
+ <td><span style="font-family: Courier New,Courier,monospace">ItemIdNotFound</span></td>
+ <td>The status code if the item ID is not found</td>
+ </tr>
+ <tr>
+ <td>9502</td>
+ <td><span style="font-family: Courier New,Courier,monospace">InvalidRequestParameter</span></td>
+ <td>The status code if the request parameter is invalid</td>
+ </tr>
+ <tr>
+ <td>9291</td>
+ <td><span style="font-family: Courier New,Courier,monospace">RepurchaseError</span></td>
+ <td>The status code for repurchase error. This error occurs only on consumable items.</td>
+ </tr>
+ <tr>
+ <td>9292</td>
+ <td><span style="font-family: Courier New,Courier,monospace">Update is progressing</span></td>
+ <td>The status code if the application is on updating.</td>
+ </tr>
+ <tr>
+ <td>9293</td>
+ <td><span style="font-family: Courier New,Courier,monospace">Account validation is not Completed</span></td>
+ <td>The status code if the Samsung account validation is not completed.</td>
+ </tr>
+  </tbody></table>
+</li>
+</ul> 
+
+<h2 id="verify">4. Verifying with Tizen Store IAP Server</h2>
+<p>After purchase operation, <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/iapv2/purchase</span>, you can use output data’s values to verify a purchase on the Tizen Store IAP Server. It’s simple process. You can send a query to output data’s _ticketVerifyUrl address. The query can be made with combination of output data’s _ticketPurchaseId, _ticketParam1, _ticketParam2, _ticketParam3, _ticketParam4, _ticketParam5.</p>
+
+<p>Template as following,</p>
+
+<p>Value of (_ticketVerifyUrl)?purchaseID=value of (_ticketPurchaseId)&amp;param1=value of (_ticketParam1)&amp;param2=value of (_ticketParam2)&amp;param3=value of (_ticketParam3)&amp;param4=value of (_ticketParam4)&amp;param5=value of (_ticketParam5)</p>
+
+<p>The below is an example of request:</p>
+
+<pre class="prettyprint">
+http://iap.tizenstore.com/appsItemVerifyIAPReceipt.as?purchaseID=2bf8fe4fdef1dae29974e5400c106bfced6a650793efa3ce68a79e026481193d&amp;param1=abe87f635bf41aae0178b5384cbc09c1083026e93e44bd0efd69e66a9cc2ace6&amp;param2=d49e3385783366868999e17bae3410597c0b6bcf69a92cd74cab17454cf9d4d6&amp;param3=af8050beb9c0f63c773fb86f7218bb6cbd6cf78a5cdff281c2e22a229f9a1485&amp;param4=1&amp;param5=I20131115RU00001243
+</pre>
+
+<p>If a request is processed successfully, the JSON response is received as shown. The status value of &quot;true&quot; means a verifying the purchase is successful and &quot;false&quot; when it has failed.</p>
+
+<p>The JSON example of successful result:</p>
+
+<pre class="prettyprint">
+{
+&nbsp;&nbsp;&nbsp;&quot;paymentID&quot;:&quot;TPMTID20131115RU00001243&quot;,
+&nbsp;&nbsp;&nbsp;&quot;paymentAmount&quot;:&quot;105.02&quot;,
+&nbsp;&nbsp;&nbsp;&quot;itemName&quot;:&quot;ttttttt&quot;,&quot;itemID&quot;:&quot;000000000072&quot;,
+&nbsp;&nbsp;&nbsp;&quot;status&quot;:&quot;true&quot;,
+&nbsp;&nbsp;&nbsp;&quot;purchaseDate&quot;:&quot;2013-11-15 10:31:23&quot;,
+&nbsp;&nbsp;&nbsp;&quot;itemDesc&quot;:&quot;dkfldfldkfl&quot;,
+&nbsp;&nbsp;&nbsp;&quot;paymentMethod&quot;:&quot;Tizen RBS Russia CreditCard&quot;,
+&nbsp;&nbsp;&nbsp;&quot;mode&quot;:&quot;1&quot;
+}
+</pre>
+
+<p>The JSON example of failed result</p>
+
+<pre class="prettyprint">
+{&quot;status&quot;:&quot;false&quot;}
+</pre>
+
+<p>If your application uses a server-client model, server-to-server purchase verification explained above is recommended.</p>
+
+<h2 id="appendixes">Appendixes</h2>
+
+
+<h3 id="native"><a href="https://developer.tizen.org/sites/default/files/page/iap_programming_guide_appcontrol_20151214.zip" target="_blank">1 Attached Sample Native Application</a></h3>
+
+<p>The attached sample native application allows a user to show a list of items for purchase, purchase an item, show purchased items, and make a purchase:</p>
+<ul><li>In developer mode, the top of the screen, it is possible to scroll up and down direction.</li></ul>
+
+<h3 id="web"><a href="https://developer.tizen.org/sites/default/files/page/web_sample_application_source_code_20150113.zip" target="_blank">2 Attached Sample Web Application</a></h3>
+
+<p>The attached sample web application allows a user to show a list of items for purchase, purchase an item, show purchased items, and make a purchase.</p>
+
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/images/Thumbs.db b/org.tizen.devtools/html/images/Thumbs.db
deleted file mode 100644 (file)
index 02e945d..0000000
Binary files a/org.tizen.devtools/html/images/Thumbs.db and /dev/null differ
diff --git a/org.tizen.devtools/html/images/iap_workflow_countrylist.png b/org.tizen.devtools/html/images/iap_workflow_countrylist.png
new file mode 100644 (file)
index 0000000..b1872bf
Binary files /dev/null and b/org.tizen.devtools/html/images/iap_workflow_countrylist.png differ
diff --git a/org.tizen.devtools/html/images/iap_workflow_itemlist.png b/org.tizen.devtools/html/images/iap_workflow_itemlist.png
new file mode 100644 (file)
index 0000000..c3648de
Binary files /dev/null and b/org.tizen.devtools/html/images/iap_workflow_itemlist.png differ
diff --git a/org.tizen.devtools/html/images/iap_workflow_purchase.png b/org.tizen.devtools/html/images/iap_workflow_purchase.png
new file mode 100644 (file)
index 0000000..178b8da
Binary files /dev/null and b/org.tizen.devtools/html/images/iap_workflow_purchase.png differ
diff --git a/org.tizen.devtools/html/images/java_crash.png b/org.tizen.devtools/html/images/java_crash.png
new file mode 100644 (file)
index 0000000..bb7102b
Binary files /dev/null and b/org.tizen.devtools/html/images/java_crash.png differ
diff --git a/org.tizen.devtools/html/images/java_installation.png b/org.tizen.devtools/html/images/java_installation.png
new file mode 100644 (file)
index 0000000..6c1322a
Binary files /dev/null and b/org.tizen.devtools/html/images/java_installation.png differ
diff --git a/org.tizen.devtools/html/images/platform_create.png b/org.tizen.devtools/html/images/platform_create.png
new file mode 100644 (file)
index 0000000..f169c26
Binary files /dev/null and b/org.tizen.devtools/html/images/platform_create.png differ
diff --git a/org.tizen.devtools/html/images/platform_gbs.png b/org.tizen.devtools/html/images/platform_gbs.png
new file mode 100644 (file)
index 0000000..f4665c3
Binary files /dev/null and b/org.tizen.devtools/html/images/platform_gbs.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-cmd.png b/org.tizen.devtools/html/images/sdk2_0-haxm-cmd.png
new file mode 100644 (file)
index 0000000..42a3464
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-cmd.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-mac1.png b/org.tizen.devtools/html/images/sdk2_0-haxm-mac1.png
new file mode 100644 (file)
index 0000000..1509168
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-mac1.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-mac2.png b/org.tizen.devtools/html/images/sdk2_0-haxm-mac2.png
new file mode 100644 (file)
index 0000000..5d44e9c
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-mac2.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-mac3.png b/org.tizen.devtools/html/images/sdk2_0-haxm-mac3.png
new file mode 100644 (file)
index 0000000..91e2fc5
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-mac3.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-mac4.png b/org.tizen.devtools/html/images/sdk2_0-haxm-mac4.png
new file mode 100644 (file)
index 0000000..a8a101f
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-mac4.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-mac5.png b/org.tizen.devtools/html/images/sdk2_0-haxm-mac5.png
new file mode 100644 (file)
index 0000000..0a40a02
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-mac5.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-mac6.png b/org.tizen.devtools/html/images/sdk2_0-haxm-mac6.png
new file mode 100644 (file)
index 0000000..d3e036b
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-mac6.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-mac7.png b/org.tizen.devtools/html/images/sdk2_0-haxm-mac7.png
new file mode 100644 (file)
index 0000000..489e478
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-mac7.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-win1.png b/org.tizen.devtools/html/images/sdk2_0-haxm-win1.png
new file mode 100644 (file)
index 0000000..7e7b0e3
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-win1.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-win2.png b/org.tizen.devtools/html/images/sdk2_0-haxm-win2.png
new file mode 100644 (file)
index 0000000..e8a7661
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-win2.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-win3.png b/org.tizen.devtools/html/images/sdk2_0-haxm-win3.png
new file mode 100644 (file)
index 0000000..ee0d890
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-win3.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-win4.png b/org.tizen.devtools/html/images/sdk2_0-haxm-win4.png
new file mode 100644 (file)
index 0000000..aa4d4c1
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-win4.png differ
diff --git a/org.tizen.devtools/html/images/sdk2_0-haxm-win5.png b/org.tizen.devtools/html/images/sdk2_0-haxm-win5.png
new file mode 100644 (file)
index 0000000..3ff978a
Binary files /dev/null and b/org.tizen.devtools/html/images/sdk2_0-haxm-win5.png differ
diff --git a/org.tizen.devtools/html/images/uac.png b/org.tizen.devtools/html/images/uac.png
new file mode 100644 (file)
index 0000000..5b36892
Binary files /dev/null and b/org.tizen.devtools/html/images/uac.png differ
diff --git a/org.tizen.devtools/html/images/unit_test_abnormal.png b/org.tizen.devtools/html/images/unit_test_abnormal.png
new file mode 100644 (file)
index 0000000..d670b0b
Binary files /dev/null and b/org.tizen.devtools/html/images/unit_test_abnormal.png differ
diff --git a/org.tizen.devtools/html/images/unit_test_create.png b/org.tizen.devtools/html/images/unit_test_create.png
new file mode 100644 (file)
index 0000000..cda9719
Binary files /dev/null and b/org.tizen.devtools/html/images/unit_test_create.png differ
diff --git a/org.tizen.devtools/html/images/unit_test_disable.png b/org.tizen.devtools/html/images/unit_test_disable.png
new file mode 100644 (file)
index 0000000..41788db
Binary files /dev/null and b/org.tizen.devtools/html/images/unit_test_disable.png differ
diff --git a/org.tizen.devtools/html/images/unit_test_explorer.png b/org.tizen.devtools/html/images/unit_test_explorer.png
new file mode 100644 (file)
index 0000000..a20816e
Binary files /dev/null and b/org.tizen.devtools/html/images/unit_test_explorer.png differ
diff --git a/org.tizen.devtools/html/images/unit_test_fail.png b/org.tizen.devtools/html/images/unit_test_fail.png
new file mode 100644 (file)
index 0000000..0b00504
Binary files /dev/null and b/org.tizen.devtools/html/images/unit_test_fail.png differ
diff --git a/org.tizen.devtools/html/images/unit_test_result_view.png b/org.tizen.devtools/html/images/unit_test_result_view.png
new file mode 100644 (file)
index 0000000..fb54d6d
Binary files /dev/null and b/org.tizen.devtools/html/images/unit_test_result_view.png differ
diff --git a/org.tizen.devtools/html/images/unit_test_start.png b/org.tizen.devtools/html/images/unit_test_start.png
new file mode 100644 (file)
index 0000000..46d52fd
Binary files /dev/null and b/org.tizen.devtools/html/images/unit_test_start.png differ
diff --git a/org.tizen.devtools/html/images/unit_test_success.png b/org.tizen.devtools/html/images/unit_test_success.png
new file mode 100644 (file)
index 0000000..22f848f
Binary files /dev/null and b/org.tizen.devtools/html/images/unit_test_success.png differ
diff --git a/org.tizen.devtools/html/images/unit_test_terminated.png b/org.tizen.devtools/html/images/unit_test_terminated.png
new file mode 100644 (file)
index 0000000..01e499d
Binary files /dev/null and b/org.tizen.devtools/html/images/unit_test_terminated.png differ
diff --git a/org.tizen.devtools/html/images/unit_test_timeout.png b/org.tizen.devtools/html/images/unit_test_timeout.png
new file mode 100644 (file)
index 0000000..5aa5587
Binary files /dev/null and b/org.tizen.devtools/html/images/unit_test_timeout.png differ
index 77ebf86..cdc96be 100644 (file)
 <h1><a href="cover_page.htm">Tools</a></h1>
 
 <ul>
+       <li><a href="download/download.htm">Download</a>
+               <ul>
+                       <li><a href="download/installing_sdk.htm">Installing the SDK</a>
+                               <ul>
+                                       <li><a href="download/sdk_prerequisites.htm">Prerequisites</a></li>
+                                       <li><a href="download/updating_sdk.htm">Updating the SDK</a></li>
+                                       <li><a href="download/extension_sdks.htm">Extension SDKs</a></li>
+                                       <li><a href="download/sdk_hardware_accelerated_execution_manager.htm">Hardware Accelerated Execution Manager</a></li>
+                                       <li><a href="download/sdk_troubleshooting.htm">Troubleshooting</a></li>
+                               </ul>                   
+                       </li>
+                       <li><a href="download/advanced_configuration.htm">Advanced Configuration</a></li>
+                       <li><a href="download/uninstalling_sdk.htm">Uninstalling the SDK</a></li>
+                       <li><a href="download/release_notes.htm">Release Notes</a>
+                               <ul>
+                                       <li><a href="download/2_4_rev2_release_notes.htm">2.4 Rev2 (Dec 23, 2015)</a></li>
+                                       <li><a href="download/2_4_rev1_release_notes.htm">2.4 Rev1 (Dec 1, 2015)</a></li>
+                                       <li><a href="download/2_4_release_notes.htm">2.4 (Oct 22, 2015)</a></li>
+                                       <li><a href="download/2_3_1_rev1_SDK_release_notes.htm">2.3.1 Rev1 (Nov 13, 2015)</a></li>
+                                       <li><a href="download/2_3_1_release_notes.htm">2.3.1 (Sep 3, 2015)</a></li>
+                                       <li><a href="download/2_3_rev3_SDK_release_notes.htm">2.3 Rev3 (Jul 6, 2015)</a></li>
+                                       <li><a href="download/2_3_rev2_SDK_release_notes.htm">2.3 Rev2 (Feb 13, 2015)</a></li>
+                                       <li><a href="download/2_3_rev1_SDK_release_notes.htm">2.3 Rev1 (Dec 2, 2014)</a></li>
+                                       <li><a href="download/2_3_release_notes.htm">2.3 (Nov 8, 2014)</a></li>
+                                       <li><a href="download/2_2_1_release_notes.htm">2.2.1 (Nov 9, 2013)</a></li>
+                                       <li><a href="download/2_2_release_notes.htm">2.2 (Jul 21, 2013)</a></li>
+                                       <li><a href="download/2_1_release_notes.htm">2.1 (May 18, 2013)</a></li>
+                                       <li><a href="download/2_0_release_notes.htm">2.0 (Feb 18, 2013)</a></li>
+                               </ul>
+                               </li>
+               </ul>
+       </li>
        <li><a href="common_tools/tools_common.htm">Common Tools</a>
                <ul>
            <li><a href="common_tools/project_explorer.htm">Project Explorer View</a></li>
                        </ul>
                </li>
                <li><a href="native_tools/enventor_n.htm">Enventor</a></li>
+               <li><a href="native_tools/unit_test_n.htm">Unit Test</a></li>           
                <li><a href="native_tools/command_line_interface_n.htm">Command Line Interface</a>
                        <ul>
                                <li><a href="native_tools/project_conversion_n.htm">Project Conversion</a></li>
                <li><a href="native_tools/resource_manager_n.htm">Resource Manager</a></li>
                </ul>
        </li>   
+       <li><a href="extension_sdk/extension_sdk.htm">Extension SDK</a>
+               <ul>
+                       <li><a href="extension_sdk/in_app_purchase_ programming_guide.htm">In-App Purchase Programming Guide</a></li>
+               </ul>
+       </li>
+       <li><a href="platform/platform_dev.htm">Platform Development</a>
+               <ul>
+                       <li><a href="platform/platform_ide.htm">Developing with the Platform IDE</a></li>
+               </ul>
+       </li>
 </ul>
 
 <script type="text/javascript" src="scripts/jquery.zclip.min.js"></script>
index f55743d..7cfca15 100644 (file)
@@ -24,7 +24,7 @@
        
   <h1>API and Privilege Checker</h1> 
   <p>The Tizen IDE provides the API and privilege checker tool to identify potential problems in the application code related to API and <a href="../../../org.tizen.gettingstarted/html/native/details/sec_privileges_n.htm">privilege usage</a>.</p> 
-  <p>In <a href="../../../org.tizen.gettingstarted/html/native/process/setting_properties_n.htm">project properties</a>, you can enable the checker during the <a href="../../../org.tizen.gettingstarted/html/native/process/app_dev_process_n.htm#build">building process</a> or code editing stage. You can also perform the checks manually in the <strong>Project Explorer</strong> view by choosing a project, opening the context menu, and selecting <strong>Check API and Privilege Violations With Build</strong>.</p>
+  <p>In <a href="../../../org.tizen.gettingstarted/html/native/process/setting_properties_n.htm">project properties</a>, you can enable the checker during the <a href="../../../org.tizen.gettingstarted/html/native/process/app_dev_process_n.htm#build">building process</a> or code editing stage. You can also perform the checks manually in the <strong>Project Explorer</strong> view by choosing a project, opening the context menu, and selecting <strong>Check API and Privilege Violations With Build</strong>.</p> 
   <p>The results of the check are displayed in the <strong>Problems</strong> view. The following tables define the different alarms that the checks can generate.</p> 
   <table id="API" border="1">
 <caption>
index 9976df8..1624e49 100644 (file)
@@ -208,7 +208,7 @@ Sets the default connection timeout value. The default is 60000 milliseconds.</p
 <li><span style="font-family: Courier New,Courier,monospace;">-C, --configuration</span>:
 <p>Specifies the build configuration.</p></li>
 <li><span style="font-family: Courier New,Courier,monospace;">-j, --jobs</span>:
-<p>Specifies the number of parallel builds for the native app.</p></li>
+<p>Specifies the number of parallel builds for the native application.</p></li>
 <li><span style="font-family: Courier New,Courier,monospace;">--</span>:
 <p>Specifies the project directory.</p></li>
 </ul>
index 4a8b056..5951c53 100644 (file)
@@ -69,7 +69,7 @@
     </tr>
    </tbody>
   </table>
-       
+
 <p>For more information about the EDC format, see <a href="https://build.enlightenment.org/job/nightly_efl_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/edje_main.html" target="_blank">Edje</a> module and <a href="https://www.enlightenment.org/program_guide/edje_pg" target="_blank">EDC</a> format.</p>
 
 <p class="figure">Figure: Enventor basic view</p>
 <tr>
 <th colspan="2">Button</th>
 <th>Function</th>
-<th>Keyboard Shortcut</th>
+<th>Keyboard shortcut</th>
 </tr> 
 <tr>
 <td rowspan="1" colspan="1"><p align="center"><img alt="Save" src="../images/enventor_save.png" /></p> </td>
 <tr>
 <td rowspan="1" colspan="1"><p align="center"><img alt="About" src="../images/enventor_about.png" /></p> </td>
 <td rowspan="1" colspan="1"><p>About</p></td>
-<td rowspan="1" colspan="1"><p>Show <a href="../common_tools/keyboard_shortcuts.htm#enventor"> shortcuts</a>.</p></td>
+<td rowspan="1" colspan="1"><p>Show <a href="../common_tools/keyboard_shortcuts.htm#enventor">shortcuts</a>.</p></td>
 <td rowspan="1" colspan="1"><p>F1</p></td>
 </tr>
 </tbody>
index e30c2ba..af88c16 100644 (file)
                <pre class="prettyprint">&lt;author email=&quot;email@email.com&quot; href=&quot;http://test.com&quot;&gt;author&lt;/author&gt;</pre> 
 
   <h2 name="description" id="description">&lt;description&gt; Element</h2> 
-<p>The <span style="font-family: Courier New,Courier,monospace">&lt;description&gt;</span> element represents the Tizen package description. The element has not child elements.</p>
+<p>The <span style="font-family: Courier New,Courier,monospace">&lt;description&gt;</span> element represents the Tizen package description. The element has no child elements.</p>
 
   <table border="1"><tbody>
 <tr id="description_element" name="description_element">
index 1dbda7b..c3d6d99 100644 (file)
@@ -126,7 +126,7 @@ $ python ttrace.py --help</pre>
 <caption>Table: Viewer keyboard shortcuts</caption>
 <tbody>
 <tr>
- <th>Keyboard Shortcut</th>
+ <th>Keyboard shortcut</th>
  <th>Description</th>
 </tr>
  <tr>
index ae44500..e9ae0bf 100644 (file)
        </ul></li>      
        <li><strong>Application running and testing tools</strong>
     <ul>                       
+               <li><a href="unit_test_n.htm">Unit Test</a>  <p>This tool is used to ensure that the application runs properly as intended in the source code.</p></li>
+       </ul></li>      
+       <li><strong>Command line interface (CLI) tools</strong>
+    <ul>                       
                <li><a href="command_line_interface_n.htm">Command Line Interface</a>  <p>This tool set allows you to develop Tizen native applications without the Tizen IDE.</p>
                <p>You can also <a href="project_conversion_n.htm">convert an IDE-created project into a CLI project</a>.</p></li>
        </ul></li>      
-       
        <li><strong>Analysis and debugging tools</strong>
     <ul>       
                <li><a href="call_stack_view_n.htm">Call Stack View</a>  <p>This tool provides useful information for debugging application under crash situation.</p></li>
diff --git a/org.tizen.devtools/html/native_tools/unit_test_n.htm b/org.tizen.devtools/html/native_tools/unit_test_n.htm
new file mode 100644 (file)
index 0000000..2b81d91
--- /dev/null
@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+       <script type="text/javascript" src="../scripts/snippet.js"></script>    
+       <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+
+       <title>Unit Test</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../images/mobile_s_n.png"/> <img alt="Wearable native" src="../images/wearable_s_n.png"/></p>
+    </div>
+       
+       <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+               <ul class="toc">
+                       <li><a href="#create">Creating a Test Project</a></li>
+                       <li><a href="#edit">Editing a Test Project</a></li>
+                       <li><a href="#run">Running a Test Project</a></li>
+                       <li><a href="#manage">Managing Test Cases</a></li>
+               </ul>
+       </div></div>
+</div>
+
+
+<div id="container"><div id="contents"><div class="content">
+       
+ <h1>Unit Test</h1>
+
+ <p>Unit test tools verify that the unit works exactly as intended in the particular module&#39;s source code. If you encounter any problems due to code changes, they help identify the problem within a short period of time and make it right. The Tizen IDE provides an effective unit test tool for Tizen native applications. The tool offers the Unit Test Wizard for creating a unit test project, with which you can create and run test cases.</p>
+<p>To unit test your application:</p>
+<ol>
+<li><a href="#create">Create a test project</a>.</li>
+<li><a href="#edit">Edit a test project</a>.</li>
+<li><a href="#run">Run the test project</a>.</li>
+</ol>
+
+<h2 id="create">Creating a Test Project</h2>
+
+<p>To create a test project with the Tizen unit test project wizard:</p>
+<ol>
+<li>In the IDE menu, select <strong>File &gt; New &gt; Other &gt; Tizen &gt; Tizen Native Unit Test Project</strong>.</li>
+<li>In the <strong>New Tizen Unit Test Project</strong> window:
+<ol type="a">
+       <li>In the <strong>Select the Tizen project for test</strong> panel, select the application you want to test.</li>
+       <li>Define a name for the test project.</li>
+       <li>Define a destination folder where to save the project.
+       <p>Select the <strong>Use default location</strong> check box to save the test project in the IDE workspace, or browse to the required destination folder.</p>
+       </li>
+       <li>Click <strong>Finish</strong>.</li>
+</ol>
+<p align="center"><img src="../images/unit_test_create.png" alt="Unit test creation" /></p>
+</li>
+</ol>
+
+<p>The generated test project allows you to test your application.</p>
+
+
+<h2 id="edit">Editing a Test Project</h2>
+
+<p>To edit a test project with the Tizen unit test project wizard:</p>
+<ol>
+<li>In the <strong>Project Explorer</strong> view, open the <span style="font-family: Courier New, Courier, monospace">&lt;TEST_PROJECT_HOME&gt;/src/&lt;TEST_PROJECT_NAME&gt;TestCase.cpp</span> file.</li>
+<li>Add a <span style="font-family: Courier New, Courier, monospace">TEST_F()</span> test case.
+<p>Each <span style="font-family: Courier New, Courier, monospace">TEST_F()</span> test case is independent. If the <span style="font-family: Courier New, Courier, monospace">TEST_F()</span> test case is associated with a fixture class name, the test case runs based on that fixture class. </p></li>
+<li>Add assertions.
+<p>The unit test tool supports basic assertions, binary comparison, and string comparison in gtest. For more information, see <a href="https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md" target="_blank">https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md</a>.</p></li>
+</ol>
+
+<h2 id="run">Running a Test Project</h2>
+
+<p>You can run a test project on the Emulator or a target device.</p>
+
+<p>To run the test project:</p>
+<ol>
+       <li>Build the test project:
+       <ol type="a">
+       <li>In the <strong>Project Explorer</strong> view, select the unit test project.</li>
+       <li>In the IDE menu, select <strong>Build Project</strong>.</li>
+       </ol>
+       </li>
+       <li>Run the test project:
+       <ol type="a">
+       <li>In the IDE menu, select <strong>Run as &gt; Tizen Native Unit Test Application</strong>.</li>
+       </ol>
+       </li>
+</ol>
+<p>The test results (a summary of executed tests and information about each test case) are displayed in the <strong>Test Result</strong> view.</p>
+
+<p class="figure">Figure: Test Result view</p>
+<p align="center"><img src="../images/unit_test_result_view.png" alt="Test Result view" /></p>
+
+<p>The upper part of the view displays the number of tests being executed, and the number of failed tests. The progress bar color shows successful (green) and failed (red) tests. In the bottom part of the view, the left panel shows a list of executed tests in the form of the tree, while the right panel shows the selected test case results (and in case of a failed test, the reason for the failure).</p>
+
+<h3 id="launch">Test Project Launch Configuration</h3>
+
+<p>You can create a custom run/debug launch configuration, which can be saved for reuse.</p>
+<p>To create a run/debug configuration:</p>
+<ol>
+<li>In the <strong>Project Explorer</strong> view, select a project.</li>
+<li>Select <strong>Run &gt; Run Configurations</strong> or <strong>Run &gt; Debug Configurations</strong>.</li>
+<li>Select and right-click <strong>Tizen Native Unit Test</strong>, and click <strong>New</strong>.
+<p>The name of the new project is displayed in the <strong>Configurations</strong> dialog box.</p></li>
+</ol>
+
+<p>You can control specific launch options in the <strong>Advanced</strong> tab:</p>
+
+<ul>
+<li><strong>Run Disabled Tests</strong>
+<p>If selected, also the disabled test cases are run.</p>
+</li>
+<li><strong>Shuffle Tests</strong>
+<p>If selected, test cases are run in a random order.</p>
+</li>
+<li><strong>Don&#39;t Print Elapsed Time</strong>
+<p>If selected, the elapsed time is not printed in the test result.</p>
+</li>
+<li><strong>Generate and XML Report</strong>
+<p>If selected, a test result XML file is generated.</p>
+</li>
+</ul>
+
+
+<h2 id="manage">Managing Test Cases</h2>
+
+<p>You can manage and run test cases in the <strong>Test Explorer</strong> view, which displays the test cases in a tree form.</p>
+<p>To open the <strong>Test Explorer</strong> view, right-click on the unit test project and select <strong>Show in Test Explorer</strong>. The menu item is available only for projects generated with the <a href="#create">Tizen unit test project wizard</a>.</p>
+<p>The <strong>Test Explorer</strong> view lists the test cases and suites as nodes, and represents the relationships between them. Each node has an icon, which shows the current status of the test case or suite.</p>
+
+<p class="figure">Figure: Test Explorer view</p>
+<p align="center"><img src="../images/unit_test_explorer.png" alt="Test Explorer View" /></p>
+
+<p>The following table describes the node status icons.</p>
+<table>
+<caption>Table: Node status icons</caption>
+<tbody>
+<tr>
+<th>Icon</th>
+<th>Description</th>
+</tr>
+<tr>
+<td><img src="../images/unit_test_start.png" alt="Start" /> Starting state</td>
+<td>When you open the view for the first time, all nodes have this status except for 
+disabled tests.</td>
+</tr>
+<tr>
+<td><img src="../images/unit_test_disable.png" alt="Disabled" /> Test is disabled</td>
+<td>Disabled nodes are not run.</td>
+</tr>
+<tr>
+<td><img src="../images/unit_test_success.png" alt="Success" /> Test has been successfully run</td>
+<td>Test suites have this status when all their test cases have been successfully run.</td>
+</tr>
+<tr>
+<td><img src="../images/unit_test_fail.png" alt="Fail" /> Test has been run and has failed</td>
+<td>Test suites have this status if at least one of their test cases has failed.</td>
+</tr>
+<tr>
+<td><img src="../images/unit_test_abnormal.png" alt="Abnormal" /> Abnormal test suite status</td>
+<td>
+<ul>
+<li><img src="../images/unit_test_terminated.png" alt="Terminated" /> Test was not fully performed because it was abnormally terminated.</li>
+<li><img src="../images/unit_test_timeout.png" alt="Timeout" /> Test was killed by the system because it exceeded the specified time.</li>
+</ul></td>
+</tr>
+</tbody>
+</table>
+
+<p>You can use the following function buttons in the <strong>Test Explorer</strong> view:</p>
+<ul>
+<li><strong>Refresh Tree</strong>: Refreshes the test case tree to reflect the linked unit test project&#39;s changes.</li>
+<li><strong>Expand All</strong> and <strong>Collapse All</strong>: Expands or collapses the test case tree.</li>
+<li><strong>Check All</strong> and <strong>Clear All</strong>: Checks or unchecks all the check boxes in the tree.</li>
+<li><strong>Check Failed</strong>: Checks failed test cases only.</li>
+<li><strong>Run Checked</strong>: Runs checked test cases.</li>
+<li><strong>Run Disabled Tests</strong>: If selected, runs also the disabled test cases.</li>
+<li><strong>Shuffle Tests</strong>: If selected, runs test cases in a random order.</li>
+<li><strong>Don&#39;t Print Elapsed Time</strong>: If selected, does not print elapsed time in the test result.</li>
+<li><strong>Generate an XML Report</strong>: If selected, generates a test result XML file.</li>
+</ul>
+
+<p>The <strong>Run Disabled Tests</strong>, <strong>Shuffle Tests</strong>, <strong>Don't Print Elapsed Time</strong>, and <strong>Generate an XML Report</strong> options can be altered in the <strong>Advanced</strong> tab of the <a href="#launch">launch configuration</a>.</p>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/platform/platform_dev.htm b/org.tizen.devtools/html/platform/platform_dev.htm
new file mode 100644 (file)
index 0000000..1783077
--- /dev/null
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+       <script type="text/javascript" src="../scripts/snippet.js"></script>    
+       <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+
+       <title>Platform Development</title>  
+</head>
+
+<body class="no-toc" onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+    <div id="profile">
+       <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+       
+ <h1>Platform Development</h1>
+<p>The platform IDE offers a set of tools that helps you develop, for example, preloaded Tizen applications, platform libraries, and device drivers.</p>
+
+<p>Using the Ubuntu Linux version of the Tizen IDE, you can perform, for example, the following tasks:</p>
+
+<ul>
+<li>Compile platform modules directly from the Tizen IDE by selecting the appropriate architecture and rootstrap.</li>
+<li>Browse and clone all existing git repos using the IDE.</li>
+<li>Update the rootstrap automatically from the IDE.</li>
+<li>Minimize the terminal window usage by enabling platform development using the IDE.</li>
+<li>Perform all git operations from the IDE itself (such as add, merge, push, and create branch).</li>
+<li>Perform module debugging inside the IDE after building and updating the rootstrap.</li>
+</ul>
+
+<p>You can download the latest the Tizen version from <a href="https://developer.tizen.org/downloads/tizen-sdk" target="_blank">https://developer.tizen.org/downloads/tizen-sdk</a>.</p>
+
+<h2 id="set" name="set">Setting up the Platform Development Environment</h2>
+
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">The Ubuntu 12.04 or higher (32- or 64-bit) operating system version is supported for installing the Tizen SDK for platform development.
+        </td> 
+    </tr> 
+   </tbody> 
+  </table>  
+
+<p>To set up the platform development environment, you must install the GBS and MIC development tools and set up the Git, Gerrit and proxy configuration. The following instructions explain the procedure in the Ubuntu 12.04 LTS version. The same instructions apply to other supported operating system versions as well.</p>
+
+<p>To set up the platform development environment:</p>
+
+<ol>
+<li>To install development tools, see <a href="https://source.tizen.org/documentation/developer-guide/getting-started-guide/installing-development-tools" target="_blank">Installing Development Tools</a>.
+
+<p>You need:</p>
+<ul><li>Git Build System (GBS): command line tool that supports Tizen package development.</li>
+<li>Image Creator (MIC): command line tool that supports Tizen image creation.</li>
+</ul>
+
+  <table class="note"> 
+   <tbody> 
+    <tr> 
+     <th class="note">Note</th> 
+    </tr> 
+    <tr> 
+     <td class="note">Both tools are mandatory for Tizen platform development.
+        </td> 
+    </tr> 
+   </tbody> 
+  </table> 
+</li>
+
+<li>To install the development environment, see <a href="https://source.tizen.org/documentation/developer-guide/environment-setup" target="_blank">Setting up Development Environment</a>.
+<p>These instructions cover:</p>
+<ul>
+<li>How to register a user account to gain access to tizen.org.</li>
+<li>How to configure Secure Shell (SSH) for Gerrit access.</li>
+<li>How to configure Git.</li>
+</ul>
+</li>
+<li>If your system is using a proxy server, see <a href="http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Freference%2Fref-net-preferences.htm" target="_blank">Network Connections</a> for instructions on how to configure the proxy.</li>
+</ol>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.tizen.devtools/html/platform/platform_ide.htm b/org.tizen.devtools/html/platform/platform_ide.htm
new file mode 100644 (file)
index 0000000..0ef9150
--- /dev/null
@@ -0,0 +1,250 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+       <script type="text/javascript" src="../scripts/snippet.js"></script>    
+       <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+
+       <title>Developing with the Platform IDE</title>  
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+    <div id="profile">
+       <p><img alt="Mobile" src="../images/mobile_s_wn.png"/> <img alt="Wearable" src="../images/wearable_s_wn.png"/></p>
+    </div>
+       
+       <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+               <ul class="toc">
+                       <li><a href="#create">Creating a Platform Project</a></li>
+                       <li><a href="#build">Building the Platform Module</a></li>
+                       <li><a href="#run">Running and Debugging the Platform Module</a></li>
+                       <li><a href="#commit">Committing Changes and Pushing to a Repository</a></li>
+               </ul>
+       </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+       
+ <h1>Developing with the Platform IDE</h1>
+
+<p>You can use the platform IDE to create projects, build, run, and debug platform modules, and commit and push changes to a repository.</p> 
+<h2 id="create" name="create">Creating a Platform Project</h2>
+
+<p>The Tizen IDE provides functionality for creating projects from templates and samples using the Platform Project Wizard.</p>
+
+<p>To create a project with the Platform Project Wizard:</p>
+
+<ol><li>In the Tizen IDE, select <strong>File &gt; New &gt; Project</strong>.</li>
+<li>In the <strong>New Project</strong> window, select <strong>Tizen &gt; Tizen Platform Project</strong> and click <strong>Next</strong>.
+<p>If the project option you want is not visible, make sure that you are using the correct perspective (Tizen Platform). To switch perspectives, go to <strong>Window &gt; Open Perspective &gt; Other</strong> and select the perspective you need.</p></li>
+</ol>
+
+<p class="figure">Figure: Platform Project Wizard</p> 
+<p align="center"><img alt="Platform Project Wizard" src="../images/platform_create.png" /></p> 
+<h3>Creating a New Platform Project Using Git</h3>
+
+<p>The following settings are required before you create a platform project:</p>
+
+<ul><li><a href="https://source.tizen.org/documentation/developer-guide/environment-setup" target="_blank">Set up the platform development environment</a>.</li>
+<li>In Ubuntu, install the following packages: <span style="font-family: Courier New,Courier,monospace">ruby</span> and <span style="font-family: Courier New,Courier,monospace">expect</span>.</li>
+<li>If your system is using a proxy server, ensure that the proxy settings are set in the Tizen IDE.</li>
+</ul>
+<p>To create a project using Git, see <a href="http://wiki.eclipse.org/EGit/User_Guide#Starting_from_existing_Git_Repositories" target="_blank">Starting from existing Git Repositories</a>.</p>
+
+
+<h2 id="build" name="build">Building the Platform Module</h2>
+
+<p>You must build the Tizen platform project before you can run and debug the platform.</p>
+
+<p>To build and package the Tizen platform project:</p>
+<ol>
+<li>Select a project in the <strong>Project Explorer</strong> view and select a <a href="#view">rootstrap</a> in the <strong>Rootstrap View</strong>.</li>
+<li>In the context menu of selected project, select <strong>Build Project</strong>.
+<p>The building and packaging progress dialog box is displayed.</p>
+<p>When the packaging is complete, the package file is listed in a sub-folder within the project folder (<span style="font-family: Courier New,Courier,monospace">Debug</span> or <span style="font-family: Courier New,Courier,monospace">Release</span>).</p></li></ol>
+<p>If an error message is displayed in the <strong>Console</strong> view because of dependency problems, you can install the packages that are needed to build the project using the <a href="#manager">package manager</a>. Once the installation is complete, build the platform again. You can set <a href="#gbs">GBS options</a> in the IDE for the project.</p>
+
+<h3 id="manager">Package Manager</h3>
+
+<p>The package manager is used for managing packages. To run the package manager, right-click the desired rootstrap and click <strong>Manage Packages</strong>.</p>
+
+<p>You can install packages to the rootstrap or the device by selecting the appropriate tab. On both tabs:</p>
+
+<ul><li><strong>Repositories</strong> panel:
+<ul><li><strong>Add</strong>: Add a new package repository to the list.</li>
+<li><strong>Modify</strong>: Modify a selected repository.</li>
+<li><strong>Remove</strong>: Remove a selected repository from the list.</li>
+<li><strong>Move</strong>: Move up and down a selected repository on the list.</li>
+</ul>
+</li>
+<li><strong>Packages</strong> panel:
+<ul><li><strong>Refresh</strong>: Resynchronize the package index files from the package repositories. If repositories are changed, refresh the package index.</li>
+<li><strong>Upgrade</strong>: Perform a distribution upgrade.</li>
+<li><strong>Install</strong>: Install selected packages.</li>
+<li><strong>Install Local</strong>: Install selected package files (<span style="font-family: Courier New,Courier,monospace">.rpm</span>).</li>
+<li><strong>Uninstall</strong>: Uninstall selected packages.</li>
+<li><strong>Filter</strong>: Search a package for categories in All, Installed, and Upgradable.</li>
+</ul>
+<p>To view detailed information about each package, right-click a package name and select <strong>Properties</strong>.</p>
+</li>
+<li><strong>Log</strong> panel:
+<ul><li>Show a log for the packaging command.</li>
+</ul>
+</li>
+</ul>
+
+<h3 id="view">Rootstrap View</h3>
+
+<p>The <strong>Rootstrap View</strong> displays available rootstraps and the currently selected rootstrap. You can use the following features of the <strong>Rootstrap View</strong>:</p>
+
+<ul>
+<li>Select a rootstrap.</li>
+<li>Add or remove a rootstrap.</li>
+<li>Export a rootstrap.</li>
+<li>Manage packages.</li>
+</ul>
+
+<p>To set a rootstrap to the project, right-click the desired rootstrap and click <strong>Select</strong>.</p>
+<p>To export a rootstrap as a compressed TAR file, right-click the desired rootstrap and click <strong>Export</strong>.</p>
+
+
+<h3>Adding a Rootstrap</h3>
+
+<p>You can add a rootstrap based on a remote repository.</p>
+<p>To add a rootstrap based on a remote repository:</p>
+<ol>
+<li>In the <strong>Rootstrap View</strong> toolbar, select <strong>Add Rootstrap</strong>.</li>
+<li>In the <strong>Generate Rootstrap Dialog</strong> window, click <strong>Add</strong> (plus icon).</li>
+<li>Enter a value to the <strong>Repository URL</strong> field and click <strong>OK</strong>.</li>
+<li>Select a value for the <strong>Architecture</strong> field and click <strong>OK</strong>.
+<p>If the <strong>Generate Immediately</strong> check button is selected, the rootstrap is created immediately.</p></li>
+</ol>
+
+<h3>Managing Rootstrap Packages</h3>
+<p>You can manage rootstrap packages with the <a href="#manager">package manager</a>. To run the package manager for a rootstrap, right-click the desired rootstrap and click <strong>Manage Packages</strong>.</p>
+
+<h3 id="gbs">GBS Options</h3>
+
+<p>The Git Build System (GBS) is used to build a platform project internally. The GBS options can be set in the IDE.</p>
+<p class="figure">Figure: GBS options</p> 
+<p align="center"><img alt="GBS options" src="../images/platform_gbs.png" /></p>  
+
+<p>To set the GBS options in the IDE:</p>
+
+<ol>
+<li>Right-click the project in the <strong>Project Explorer</strong> view.</li>
+<li>Select <strong>Properties &gt; C/C++ Build &gt; Tizen Settings &gt; GBS Options</strong>.</li>
+<li>Set the options and click <strong>OK</strong>.</li>
+</ol>
+
+<h2 id="run" name="run">Running and Debugging the Platform Module</h2>
+
+<p>You can run and debug the platform module, and attach a debug process to the project.</p>
+
+<h3>Running the Platform Module</h3>
+
+<p>To run the platform project:</p>
+
+<ol>
+<li>Connect a device to your computer and select the device in the <strong>Connection Explorer</strong> view.</li>
+<li>In the <strong>Project Explorer</strong> view, right-click the project and select <strong>Run As &gt; Tizen Platform Project</strong>.</li>
+<li>Choose the install command, such as <span style="font-family: Courier New,Courier,monospace">RPM</span> or <span style="font-family: Courier New,Courier,monospace">pkgcmd</span>.</li>
+<li>Click <strong>Next</strong> in the <strong>Launch Configuration</strong> dialog.</li>
+<li>Enter the command and arguments, and click <strong>Finish</strong>.</li>
+</ol>
+
+<h3>Debugging the Platform Module</h3>
+
+<p>You can debug platform projects and also attach a debugging process to the project in the Tizen IDE menu.</p>
+<p>To debug the project:</p>
+<ol>
+<li>Connect a device to your computer and select the device in the <strong>Connection Explorer</strong> view.</li>
+<li>Set breakpoints in the source code.</li>
+<li>In the <strong>Project Explorer</strong> view, right-click the project and select <strong>Debug As &gt; Tizen Platform Project</strong>.</li>
+<li>Choose the install command, such as <span style="font-family: Courier New,Courier,monospace">RPM</span> or <span style="font-family: Courier New,Courier,monospace">pkgcmd</span> for the device and rootstrap.</li>
+<li>Click <strong>Next</strong> in the <strong>Launch Configuration</strong> dialog.</li>
+<li>Enter the command and arguments, and click <strong>Finish</strong>.</li>
+</ol>
+
+<h3>Attaching a Debug Process</h3>
+
+<p>To attach a debug process to the project:</p>
+<ol>
+<li>Connect a device to your computer, and select the device in the <strong>Connection Explorer</strong> view and the running process for attaching.</li>
+<li>Set breakpoints in the source code.</li>
+<li>In the <strong>Project Explorer</strong> view, right-click the project and select <strong>Debug As &gt; Tizen Platform Project - Attach</strong>.</li>
+<li>To set the debug launch wizard configuration:
+<ol type="a"><li>Click <strong>Browse</strong>, and select the process for attaching.</li>
+<li>Click <strong>Finish</strong>.</li>
+</ol>
+<p>The debugging starts. For more information on debugging, see <a href="../../../org.tizen.gettingstarted/html/native/process/debugging_app_n.htm">Debugging Applications</a>.</p>
+<p>After setting the launch configuration, you can debug a project again using the debug toolbar menu and modifying the debug configuration.</p>
+</li>
+</ol>
+
+<h2 id="commit" name="commit">Committing Changes and Pushing to a Repository</h2>
+
+<p>You can commit source changes and push the changes into the repository using Egit.</p>
+
+<h3>Committing Changes</h3>
+
+<p>To commit source changes:</p>
+<ol>
+<li>Right-click the project and select <strong>Team &gt; Commit</strong>.</li>
+<li>In the <strong>Commit Changes</strong> dialog, fill in the <strong>Commit message</strong> and <strong>select change files</strong> fields.
+<p>To see the changes in a file, double-click it.</p></li>
+<li>Click <strong>Commit</strong>.</li>
+</ol>
+
+<h3>Pushing to a Repository</h3>
+
+<p>To push the project to the repository after committing the changes:</p>
+
+<ol>
+<li>Right-click the project and select <strong>Team &gt; Push to Upstream</strong>.</li>
+<li>If you use the Gerrit code review system, modify the ref mapping:
+<ol type="a"><li>Click <strong>Configure</strong>.</li>
+<li>Select <strong>Advanced &gt; Edit(Advanced)</strong> in the <strong>Ref mapping</strong> group.</li>
+<li>In the <strong>Push Ref Specifications</strong> window, select <strong>Source ref</strong> and modify the values for the <strong>Destination ref</strong> as <strong>refs/for/[branch]</strong> format fields.</li>
+<li>Click <strong>Add Spec</strong>, and check the <strong>Specifications for push</strong> table.</li>
+<li>Click <strong>Finish</strong>.</li>
+<li>In the <strong>Configure Push</strong> window, click <strong>Save and Push</strong>.</li>
+</ol></li>
+<li>Click <strong>OK</strong>.</li>
+</ol>
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
index e3adfd0..8ebf66c 100644 (file)
@@ -3,7 +3,34 @@
 
 
 <toc label="Tools" topic="html/cover_page.htm">
-    <topic href="html/common_tools/tools_common.htm" label="Common Tools">
+    
+       <topic href="html/download/download.htm" label="Download">
+               <topic href="html/download/installing_sdk.htm" label="Installing the SDK">
+                       <topic href="html/download/sdk_prerequisites.htm" label="Prerequisites"></topic>
+                       <topic href="html/download/updating_sdk.htm" label="Updating the SDK"></topic>
+                       <topic href="html/download/extension_sdks.htm" label="Extension SDKs"></topic>
+                       <topic href="html/download/sdk_hardware_accelerated_execution_manager.htm" label="Hardware Accelerated Execution Manager"></topic>
+                       <topic href="html/download/sdk_troubleshooting.htm" label="Troubleshooting"></topic>
+               </topic>
+               <topic href="html/download/advanced_configuration.htm" label="Advanced Configuration"></topic>
+               <topic href="html/download/uninstalling_sdk.htm" label="Uninstalling the SDK"></topic>
+               <topic href="html/download/release_notes.htm" label="Release Notes">
+                       <topic href="html/download/2_4_rev2_release_notes.htm" label="2.4 Rev2 (Dec 23, 2015)"></topic>
+                       <topic href="html/download/2_4_rev1_release_notes.htm" label="2.4 Rev1 (Dec 1, 2015)"></topic>
+                       <topic href="html/download/2_4_release_notes.htm" label="2.4 (Oct 22, 2015)"></topic>
+                       <topic href="html/download/2_3_1_rev1_SDK_release_notes.htm" label="2.3.1 Rev1 (Nov 13, 2015)"></topic>
+                       <topic href="html/download/2_3_1_release_notes.htm" label="2.3.1 (Sep 3, 2015)"></topic>
+                       <topic href="html/download/2_3_rev3_SDK_release_notes.htm" label="2.3 Rev3 (Jul 6, 2015)"></topic>
+                       <topic href="html/download/2_3_rev2_SDK_release_notes.htm" label="2.3 Rev2 (Feb 13, 2015)"></topic>
+                       <topic href="html/download/2_3_rev1_SDK_release_notes.htm" label="2.3 Rev1 (Dec 2, 2014)"></topic>
+                       <topic href="html/download/2_3_release_notes.htm" label="2.3 (Nov 8, 2014)"></topic>
+                       <topic href="html/download/2_2_1_release_notes.htm" label="2.2.1 (Nov 9, 2013)"></topic>
+                       <topic href="html/download/2_2_release_notes.htm" label="2.2 (Jul 21, 2013)"></topic>
+                       <topic href="html/download/2_1_release_notes.htm" label="2.1 (May 18, 2013)"></topic>
+                       <topic href="html/download/2_0_release_notes.htm" label="2.0 (Feb 18, 2013)"></topic>
+               </topic>
+       </topic>
+       <topic href="html/common_tools/tools_common.htm" label="Common Tools">
                <topic href="html/common_tools/project_explorer.htm" label="Project Explorer View"></topic>
                <topic href="html/common_tools/certificate_registration.htm" label="Certificate Registration"></topic>  
                <topic href="html/common_tools/connection_explorer.htm" label="Connection Explorer View"></topic>
@@ -67,6 +94,7 @@
                        <topic href="html/native_tools/storyboard_n.htm" label="Storyboard"></topic>
                </topic>
                <topic href="html/native_tools/enventor_n.htm" label="Enventor"></topic>
+               <topic href="html/native_tools/unit_test_n.htm" label="Unit Test"></topic>              
                <topic href="html/native_tools/command_line_interface_n.htm" label="Command Line Interface">
                        <topic href="html/native_tools/project_conversion_n.htm" label="Project Conversion"></topic>
                </topic>
                <topic href="html/native_tools/valgrind_n.htm" label="Valgrind"></topic>
                <topic href="html/native_tools/t_trace_n.htm" label="T-trace"></topic>  
                <topic href="html/native_tools/resource_manager_n.htm" label="Resource Manager"></topic>                
-       </topic>    
+       </topic> 
+       <topic href="html/extension_sdk/extension_sdk.htm" label="Extension SDK">
+               <topic href="html/extension_sdk/in_app_purchase_ programming_guide.htm" label="In-App Purchase Programming Guide"></topic>
+       </topic>        
+       <topic href="html/platform/platform_dev.htm" label="Platform Development">
+               <topic href="html/platform/platform_ide.htm" label="Developing with the Platform IDE"></topic>
+       </topic>
 </toc>
 
index 041a95c..aed852d 100644 (file)
Binary files a/org.tizen.gettingstarted/html/images/hello_wearable.png and b/org.tizen.gettingstarted/html/images/hello_wearable.png differ
index a50183b..dc908d0 100644 (file)
Binary files a/org.tizen.gettingstarted/html/images/hello_wearable_emulator.png and b/org.tizen.gettingstarted/html/images/hello_wearable_emulator.png differ
index dd959d5..028d29d 100644 (file)
@@ -80,7 +80,7 @@
         </tr>
                <tr>
          <td><a href="../../../../org.tizen.native.mobile.apireference/group__OPENSRC__LIB__OAUTH__FRAMEK.html">libOAuth</a></td>
-         <td>Provides a library for using an open standard for secure authorization. This library enables users to securely log into an account on an application by using their logon credentials from another secondary account that they may have with another account provider or application. </td>
+         <td>Provides a library for using an open standard for secure authorization. This library enables users to securely log into an account on an application by using their logon credentials from another secondary account that they can have with another account provider or application. </td>
         </tr>
                <tr>
                        <td rowspan="12"><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__APPLICATION__FRAMEWORK.html">Application Framework</a></td>
          <td>Provides functions for synthesizing voice from text and playing synthesized sound data.</td>
         </tr>
                <tr>
-         <td rowspan="2"><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__WEB__FRAMEWORK.html">Web</a></td>
-                <td rowspan="2">The Web API module contains submodule APIs for browsing the Internet, tracking browsing history, downloading Web content, and manipulating JavaScript Object Notation (JSON) documents.
+         <td rowspan="3"><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__WEB__FRAMEWORK.html">Web</a></td>
+                <td rowspan="3">The Web API module contains submodule APIs for browsing the Internet, tracking browsing history, downloading Web content, and manipulating JavaScript Object Notation (JSON) documents.
                 <p>Documentation:</p>
                        <ul>
                        <li>Guides: <a href="../../../../org.tizen.guides/html/native/web/web_guide_n.htm">Web</a></li>
                        <li>Tutorials: <a href="../../../../org.tizen.tutorials/html/native/web/web_tutorials_n.htm">Web</a></li></ul></td>
         <td><a href="../../../../org.tizen.native.wearable.apireference/group__OPENSRC__JSONGLIB__FRAMEWORK.html">Json-Glib</a></td>
          <td>Allows reading and parsing of JavaScript Object Notation (JSON) documents.</td>
-        </tr>
+        </tr>  
                <tr>
          <td><a href="../../../../org.tizen.native.wearable.apireference/group__WEBVIEW.html">WebView</a></td>
          <td>Displays and controls Web pages. This submodule API contains interfaces for browsing, tracking browsing history, and downloading Web content.</td>
                </tr>
+               <tr>
+         <td><a href="../../../../org.tizen.native.wearable.apireference/group__OPENSRC__LIB__OAUTH__FRAMEK.html">libOAuth</a></td>
+         <td>Provides a library for using an open standard for secure authorization. This library enables users to securely log into an account on an application by using their logon credentials from another secondary account that they can have with another account provider or application. </td>
+        </tr>                  
                    </tbody> 
                  </table>                
     
index 5837e88..9fcbe98 100644 (file)
@@ -51,7 +51,7 @@
    <tbody> 
     <tr> 
      <th>Button</th> 
-     <th>Keyboard Shortcut</th> 
+     <th>Keyboard shortcut</th> 
      <th>Description</th> 
     </tr> 
     <tr> 
index 8285861..3b09a76 100644 (file)
@@ -88,7 +88,7 @@
    <li>
 <p>Select the required <a href="../../../../org.tizen.devtools/html/native_tools/api_privilege_checker_n.htm#privilege">privilege problems</a> in the <strong>Privilege Check</strong> panel.</p> </li> 
   </ol>
-<p>To perform privilege checks automatically, select the required option in the <strong>Launching</strong> panel: </p> 
+<p>To perform privilege checks automatically, select the required option in the <strong>Launching</strong> panel:</p>
   <ul>
 <li>During the <a href="app_dev_process_n.htm#build">build process</a>, select the <strong>Run API and privilege checks with build</strong> option.</li>
    <li>During code editing, select the <strong>Run API and privilege checks while editing</strong> option.</li> 
index d0dfdcd..7e03a51 100644 (file)
@@ -303,4 +303,4 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga
 </script> 
   <!--end-->  
  </body>
-</html>
+</html>
\ No newline at end of file
index 25bcd25..5dc8e37 100644 (file)
   <h2 id="import" name="import">Importing a Project</h2> 
   <p>If you have an existing Tizen application project, you can import it into the Tizen IDE:</p> 
   <ol> 
-   <li>Select <strong>File &gt; Import &gt; Tizen &gt; Tizen Project or Package</strong>.</li> 
+   <li>Select <strong>File &gt; Import &gt; Tizen &gt; Web Projects and Web Application file</strong>.</li> 
    <li>Click <strong>Browse</strong> and select the root directory, which contains your existing project, or Web application package file (with the <span style="font-family: Courier New,Courier,monospace">.wgt</span> extension).</li> 
-   <li>Click the selection buttons under <strong>To</strong>, and select both a profile and a version.</li>
-   <li>Enter a project name.</li>
    <li>Click <strong>Finish</strong>.</li> 
   </ol> 
   
diff --git a/org.tizen.guides/html/images/2d_front_back_face.png b/org.tizen.guides/html/images/2d_front_back_face.png
new file mode 100644 (file)
index 0000000..ee5ff93
Binary files /dev/null and b/org.tizen.guides/html/images/2d_front_back_face.png differ
diff --git a/org.tizen.guides/html/images/adv_render_class.png b/org.tizen.guides/html/images/adv_render_class.png
new file mode 100644 (file)
index 0000000..b44d0e6
Binary files /dev/null and b/org.tizen.guides/html/images/adv_render_class.png differ
diff --git a/org.tizen.guides/html/images/adv_render_cube.png b/org.tizen.guides/html/images/adv_render_cube.png
new file mode 100644 (file)
index 0000000..db10268
Binary files /dev/null and b/org.tizen.guides/html/images/adv_render_cube.png differ
diff --git a/org.tizen.guides/html/images/adv_render_cube_composition.png b/org.tizen.guides/html/images/adv_render_cube_composition.png
new file mode 100644 (file)
index 0000000..a5fef31
Binary files /dev/null and b/org.tizen.guides/html/images/adv_render_cube_composition.png differ
diff --git a/org.tizen.guides/html/images/adv_render_framebuffer.png b/org.tizen.guides/html/images/adv_render_framebuffer.png
new file mode 100644 (file)
index 0000000..4c68d95
Binary files /dev/null and b/org.tizen.guides/html/images/adv_render_framebuffer.png differ
diff --git a/org.tizen.guides/html/images/adv_render_normal_map.png b/org.tizen.guides/html/images/adv_render_normal_map.png
new file mode 100644 (file)
index 0000000..6a24fb8
Binary files /dev/null and b/org.tizen.guides/html/images/adv_render_normal_map.png differ
diff --git a/org.tizen.guides/html/images/adv_render_tangent1.png b/org.tizen.guides/html/images/adv_render_tangent1.png
new file mode 100644 (file)
index 0000000..b39df2e
Binary files /dev/null and b/org.tizen.guides/html/images/adv_render_tangent1.png differ
diff --git a/org.tizen.guides/html/images/adv_render_tangent2.png b/org.tizen.guides/html/images/adv_render_tangent2.png
new file mode 100644 (file)
index 0000000..317fa1f
Binary files /dev/null and b/org.tizen.guides/html/images/adv_render_tangent2.png differ
diff --git a/org.tizen.guides/html/images/coord_space.png b/org.tizen.guides/html/images/coord_space.png
new file mode 100644 (file)
index 0000000..c9e6d14
Binary files /dev/null and b/org.tizen.guides/html/images/coord_space.png differ
diff --git a/org.tizen.guides/html/images/determinant.png b/org.tizen.guides/html/images/determinant.png
new file mode 100644 (file)
index 0000000..bfa07ca
Binary files /dev/null and b/org.tizen.guides/html/images/determinant.png differ
diff --git a/org.tizen.guides/html/images/fragment_diffuse.png b/org.tizen.guides/html/images/fragment_diffuse.png
new file mode 100644 (file)
index 0000000..91f7de0
Binary files /dev/null and b/org.tizen.guides/html/images/fragment_diffuse.png differ
diff --git a/org.tizen.guides/html/images/fragment_diffuse_color.png b/org.tizen.guides/html/images/fragment_diffuse_color.png
new file mode 100644 (file)
index 0000000..3ae4dd9
Binary files /dev/null and b/org.tizen.guides/html/images/fragment_diffuse_color.png differ
diff --git a/org.tizen.guides/html/images/fragment_output.png b/org.tizen.guides/html/images/fragment_output.png
new file mode 100644 (file)
index 0000000..83b325e
Binary files /dev/null and b/org.tizen.guides/html/images/fragment_output.png differ
diff --git a/org.tizen.guides/html/images/front_back_face.png b/org.tizen.guides/html/images/front_back_face.png
new file mode 100644 (file)
index 0000000..3457b36
Binary files /dev/null and b/org.tizen.guides/html/images/front_back_face.png differ
diff --git a/org.tizen.guides/html/images/gpu_stages.png b/org.tizen.guides/html/images/gpu_stages.png
new file mode 100644 (file)
index 0000000..49f2911
Binary files /dev/null and b/org.tizen.guides/html/images/gpu_stages.png differ
diff --git a/org.tizen.guides/html/images/input_output_vertex.png b/org.tizen.guides/html/images/input_output_vertex.png
new file mode 100644 (file)
index 0000000..e8c9d8c
Binary files /dev/null and b/org.tizen.guides/html/images/input_output_vertex.png differ
diff --git a/org.tizen.guides/html/images/interpolated_normals.png b/org.tizen.guides/html/images/interpolated_normals.png
new file mode 100644 (file)
index 0000000..7cf6b5b
Binary files /dev/null and b/org.tizen.guides/html/images/interpolated_normals.png differ
diff --git a/org.tizen.guides/html/images/low_res_arrays.png b/org.tizen.guides/html/images/low_res_arrays.png
new file mode 100644 (file)
index 0000000..a7dd77f
Binary files /dev/null and b/org.tizen.guides/html/images/low_res_arrays.png differ
diff --git a/org.tizen.guides/html/images/low_res_sphere.png b/org.tizen.guides/html/images/low_res_sphere.png
new file mode 100644 (file)
index 0000000..6c31723
Binary files /dev/null and b/org.tizen.guides/html/images/low_res_sphere.png differ
diff --git a/org.tizen.guides/html/images/obj_fractions.png b/org.tizen.guides/html/images/obj_fractions.png
new file mode 100644 (file)
index 0000000..b109d02
Binary files /dev/null and b/org.tizen.guides/html/images/obj_fractions.png differ
diff --git a/org.tizen.guides/html/images/opengl_es_efl.png b/org.tizen.guides/html/images/opengl_es_efl.png
new file mode 100644 (file)
index 0000000..88af676
Binary files /dev/null and b/org.tizen.guides/html/images/opengl_es_efl.png differ
diff --git a/org.tizen.guides/html/images/output_depth_buffer1.png b/org.tizen.guides/html/images/output_depth_buffer1.png
new file mode 100644 (file)
index 0000000..ca71f3e
Binary files /dev/null and b/org.tizen.guides/html/images/output_depth_buffer1.png differ
diff --git a/org.tizen.guides/html/images/output_depth_buffer2.png b/org.tizen.guides/html/images/output_depth_buffer2.png
new file mode 100644 (file)
index 0000000..0a47513
Binary files /dev/null and b/org.tizen.guides/html/images/output_depth_buffer2.png differ
diff --git a/org.tizen.guides/html/images/projection_matrix.png b/org.tizen.guides/html/images/projection_matrix.png
new file mode 100644 (file)
index 0000000..09fa2bf
Binary files /dev/null and b/org.tizen.guides/html/images/projection_matrix.png differ
diff --git a/org.tizen.guides/html/images/projection_transform.png b/org.tizen.guides/html/images/projection_transform.png
new file mode 100644 (file)
index 0000000..e372d71
Binary files /dev/null and b/org.tizen.guides/html/images/projection_transform.png differ
diff --git a/org.tizen.guides/html/images/sphere_surface.png b/org.tizen.guides/html/images/sphere_surface.png
new file mode 100644 (file)
index 0000000..a4c039a
Binary files /dev/null and b/org.tizen.guides/html/images/sphere_surface.png differ
diff --git a/org.tizen.guides/html/images/teapot_transformation.png b/org.tizen.guides/html/images/teapot_transformation.png
new file mode 100644 (file)
index 0000000..176cc44
Binary files /dev/null and b/org.tizen.guides/html/images/teapot_transformation.png differ
diff --git a/org.tizen.guides/html/images/texturing_bilinear.png b/org.tizen.guides/html/images/texturing_bilinear.png
new file mode 100644 (file)
index 0000000..77e9f07
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_bilinear.png differ
diff --git a/org.tizen.guides/html/images/texturing_magnification.png b/org.tizen.guides/html/images/texturing_magnification.png
new file mode 100644 (file)
index 0000000..93c7db3
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_magnification.png differ
diff --git a/org.tizen.guides/html/images/texturing_minification.png b/org.tizen.guides/html/images/texturing_minification.png
new file mode 100644 (file)
index 0000000..4f1a266
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_minification.png differ
diff --git a/org.tizen.guides/html/images/texturing_mipmap1.png b/org.tizen.guides/html/images/texturing_mipmap1.png
new file mode 100644 (file)
index 0000000..9502735
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_mipmap1.png differ
diff --git a/org.tizen.guides/html/images/texturing_mipmap2.png b/org.tizen.guides/html/images/texturing_mipmap2.png
new file mode 100644 (file)
index 0000000..2745f62
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_mipmap2.png differ
diff --git a/org.tizen.guides/html/images/texturing_mipmap_levels.png b/org.tizen.guides/html/images/texturing_mipmap_levels.png
new file mode 100644 (file)
index 0000000..8a7c580
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_mipmap_levels.png differ
diff --git a/org.tizen.guides/html/images/texturing_nearest.png b/org.tizen.guides/html/images/texturing_nearest.png
new file mode 100644 (file)
index 0000000..b94f785
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_nearest.png differ
diff --git a/org.tizen.guides/html/images/texturing_normalise.png b/org.tizen.guides/html/images/texturing_normalise.png
new file mode 100644 (file)
index 0000000..d001135
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_normalise.png differ
diff --git a/org.tizen.guides/html/images/texturing_position1.png b/org.tizen.guides/html/images/texturing_position1.png
new file mode 100644 (file)
index 0000000..f7abb52
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_position1.png differ
diff --git a/org.tizen.guides/html/images/texturing_position2.png b/org.tizen.guides/html/images/texturing_position2.png
new file mode 100644 (file)
index 0000000..23f8e61
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_position2.png differ
diff --git a/org.tizen.guides/html/images/texturing_position3.png b/org.tizen.guides/html/images/texturing_position3.png
new file mode 100644 (file)
index 0000000..cc79c25
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_position3.png differ
diff --git a/org.tizen.guides/html/images/texturing_problem.png b/org.tizen.guides/html/images/texturing_problem.png
new file mode 100644 (file)
index 0000000..ce43901
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_problem.png differ
diff --git a/org.tizen.guides/html/images/texturing_texel.png b/org.tizen.guides/html/images/texturing_texel.png
new file mode 100644 (file)
index 0000000..8458060
Binary files /dev/null and b/org.tizen.guides/html/images/texturing_texel.png differ
diff --git a/org.tizen.guides/html/images/triangle_color.png b/org.tizen.guides/html/images/triangle_color.png
new file mode 100644 (file)
index 0000000..fc766d6
Binary files /dev/null and b/org.tizen.guides/html/images/triangle_color.png differ
diff --git a/org.tizen.guides/html/images/triangle_fragments.png b/org.tizen.guides/html/images/triangle_fragments.png
new file mode 100644 (file)
index 0000000..8082467
Binary files /dev/null and b/org.tizen.guides/html/images/triangle_fragments.png differ
diff --git a/org.tizen.guides/html/images/vertex_array.png b/org.tizen.guides/html/images/vertex_array.png
new file mode 100644 (file)
index 0000000..984d0f6
Binary files /dev/null and b/org.tizen.guides/html/images/vertex_array.png differ
diff --git a/org.tizen.guides/html/images/vertex_index_array.png b/org.tizen.guides/html/images/vertex_index_array.png
new file mode 100644 (file)
index 0000000..7d12ae8
Binary files /dev/null and b/org.tizen.guides/html/images/vertex_index_array.png differ
diff --git a/org.tizen.guides/html/images/vertex_normals.png b/org.tizen.guides/html/images/vertex_normals.png
new file mode 100644 (file)
index 0000000..757ff29
Binary files /dev/null and b/org.tizen.guides/html/images/vertex_normals.png differ
diff --git a/org.tizen.guides/html/images/vertex_shader_spaces.png b/org.tizen.guides/html/images/vertex_shader_spaces.png
new file mode 100644 (file)
index 0000000..0ef5fb3
Binary files /dev/null and b/org.tizen.guides/html/images/vertex_shader_spaces.png differ
diff --git a/org.tizen.guides/html/images/vertex_structure_array.png b/org.tizen.guides/html/images/vertex_structure_array.png
new file mode 100644 (file)
index 0000000..08824a7
Binary files /dev/null and b/org.tizen.guides/html/images/vertex_structure_array.png differ
diff --git a/org.tizen.guides/html/images/view_frustum.png b/org.tizen.guides/html/images/view_frustum.png
new file mode 100644 (file)
index 0000000..199c670
Binary files /dev/null and b/org.tizen.guides/html/images/view_frustum.png differ
diff --git a/org.tizen.guides/html/images/view_matrix.png b/org.tizen.guides/html/images/view_matrix.png
new file mode 100644 (file)
index 0000000..3c8b729
Binary files /dev/null and b/org.tizen.guides/html/images/view_matrix.png differ
diff --git a/org.tizen.guides/html/images/view_space.png b/org.tizen.guides/html/images/view_space.png
new file mode 100644 (file)
index 0000000..211800a
Binary files /dev/null and b/org.tizen.guides/html/images/view_space.png differ
diff --git a/org.tizen.guides/html/images/viewport.png b/org.tizen.guides/html/images/viewport.png
new file mode 100644 (file)
index 0000000..f2e7248
Binary files /dev/null and b/org.tizen.guides/html/images/viewport.png differ
index 2209838..7e34ebe 100755 (executable)
Binary files a/org.tizen.guides/html/images/widget_homescreen.png and b/org.tizen.guides/html/images/widget_homescreen.png differ
index d62e815..53f1af5 100644 (file)
@@ -66,9 +66,9 @@
                                </li>
                                <li><a href="web/tizen/multimedia/multimedia_guide_w.htm">Multimedia</a>
                                        <ul>
-                                               <li><a href="web/tizen/multimedia/media_controller_w.htm">Media Controller</a></li>
                                                <li><a href="web/tizen/multimedia/media_key_w.htm">Media Key</a></li>
                                                <li><a href="web/tizen/multimedia/sound_w.htm">Sound</a></li>
+                                               <li><a href="web/tizen/multimedia/media_controller_w.htm">Media Controller</a></li>
                                        </ul>
                                </li>   
                                <li><a href="web/tizen/system/system_guide_w.htm">System</a>
                </li>
                <li><a href="native/graphics/graphics_guide_n.htm">Graphics</a>
                        <ul>
-                               <li><a href="native/graphics/opengles_n.htm">OpenGL ES</a></li>
+                               <li><a href="native/graphics/opengles_n.htm">OpenGL ES</a>
+                                       <ul>
+                                               <li><a href="native/graphics/creating_opengles_n.htm">Creating OpenGL ES Applications</a></li>
+                                               <li><a href="native/graphics/polygon_mesh_n.htm">Polygon Mesh in OpenGL ES</a></li>
+                                               <li><a href="native/graphics/vertex_shader_n.htm">Vertex Shader</a></li>
+                                               <li><a href="native/graphics/assembly_n.htm">Primitive Assembly and Rasterization</a></li>
+                                               <li><a href="native/graphics/texturing_n.htm">Texturing</a></li>
+                                               <li><a href="native/graphics/fragment_shader_n.htm">Fragment Shader</a></li>
+                                               <li><a href="native/graphics/output_merging_n.htm">Output Merging</a></li>
+                                               <li><a href="native/graphics/interactive_ui_n.htm">Interactive UI</a></li>
+                                               <li><a href="native/graphics/adv_rendering_n.htm">Advanced Rendering</a></li>
+                                               <li><a href="native/graphics/adv_performance_n.htm">Advanced Performance</a></li>
+                                       </ul>
+                               </li>
                                <li><a href="native/graphics/tbm_n.htm">TBM Surface</a></li>
                                <li><a href="native/graphics/cairo_n.htm">Cairo</a></li>
                                <li><a href="native/graphics/hw_acceleration_n.htm">Hardware Acceleration</a></li>
                <li><a href="native/location/location_guide_n.htm">Location</a>
                        <ul>
                                <li><a href="native/location/location_n.htm">Location Manager</a></li>
-                               <li><a href="native/location/geofence_n.htm">Geofence Manager</a></li>
+                               <li><a href="native/location/geofence_n.htm">Geofence</a></li>  
                                <li><a href="native/location/maps_n.htm">Maps Service</a></li>                                  
                        </ul>
                <li><a href="native/messaging/messaging_guide_n.htm">Messaging</a>
                                <li><a href="native/multimedia/camera_n.htm">Camera</a></li>
                                <li><a href="native/multimedia/image_util_n.htm">Image Util</a></li>
                                <li><a href="native/multimedia/media_codecs_n.htm">Media Codec</a></li>
+                               <li><a href="native/multimedia/media_keys_n.htm">Media key</a></li>                             
                                <li><a href="native/multimedia/media_tools_n.htm">Media Tool</a></li>
                                <li><a href="native/multimedia/metadata_extractor_n.htm">Metadata Extractor</a></li>
                                <li><a href="native/multimedia/openal_n.htm">OpenAL</a></li>
                        <ul>
                                <li><a href="native/system/device_n.htm">Device</a></li>
                                <li><a href="native/system/dlog_n.htm">dlog</a></li>
-                               <li><a href="native/system/media_keys_n.htm">Media key</a></li>
                                <li><a href="native/system/runtime_info_n.htm">Runtime information</a></li>
                                <li><a href="native/system/sensors_n.htm">Sensor</a></li>
                                <li><a href="native/system/sysinfo_n.htm">System Information</a></li>
                                <li><a href="native/system/settings_n.htm">System Settings</a></li>
                                <li><a href="native/system/storage_n.htm">Storage</a></li>
+                               <li><a href="native/system/feedback_n.htm">Feedback</a></li>
                                <li><a href="native/system/t-trace_n.htm">T-trace</a></li>
                        </ul>
                </li>
index 2b56c28..b06051d 100644 (file)
     <tr>
      <td>Data changes on the device</td>
      <td>A subscribed callback function is invoked whenever a database change occurs for a registered capability. The data change listener notices the changes by using the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SOCIAL__CALENDAR__SVC__MODULE.html">Calendar</a>, <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SOCIAL__CONTACTS__SVC__MODULE.html">Contacts</a>, and <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__CONTENT__MODULE.html">Media Content</a> APIs. If there are any changes in the corresponding data, the sync manager notices the changes and schedules a sync job.
-        <p>Changing data in the Calendar database includes adding, updating, and deleting books, events, and todos. Changing data in the Contacts database includes adding, removing, and modifying contacts. The Media Content provides notifications for changes in media types, such as image, music, sound, and video.</p></td>
+        <p>Changing data in the Calendar database includes adding, updating, and deleting books, events, and todos. Changing data in the Contacts database includes adding, removing, and modifying contacts. The Media Content API provides notifications for changes in media types, such as image, music, sound, and video.</p></td>
     </tr>
     <tr>
      <td>Network availability</td>
-     <td>When a status change in the Wi-Fi or data network is detected, behavior of sync operation is changed.</td>
+     <td>When a status change in the Wi-Fi or data network is detected, the behavior of the sync operation changes.</td>
     </tr>
     <tr>
      <td>On demand sync</td>
@@ -84,7 +84,7 @@
 <table border="1">
        <caption>Table: Sync manager variables</caption>
        <tbody>
-          <tr>
+               <tr>
                <th>Variable</th>
                <th>Data type</th>
                <th>Mandatory</th>
                <td>Sync period</td>
                <td><span style="font-family: Courier New,Courier,monospace">sync_period_e</span></td>
                <td>Yes</td>
-       <td>Interval for adding periodic sync jobs.
+       <td>Interval for adding a periodic sync job.
           <p>If the interval is provided, the sync job is performed periodically. If you set the periodic interval to 30 minutes, a time interval is set as a power of 2 less than 30. This means that a time interval set to 16 minutes operates the sync job every 16 minutes while skipping the first notification (so the first is in 32 minutes). The same logic applies to other cases.</p>
           <p>This variable provides a periodic sync job with an inexact time. Coupling various periodic sync jobs with an interval as a power of 2  prevents the device from waking up the service application too many times.</p>
           <p>The <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYNC__MANAGER__MODULE.html#gad6f301bc84c4e758aee1636b0122dd7e">sync_period_e</a> enumerator defines the available period intervals.</p></td>
                <td>Sync option</td>
                <td><span style="font-family: Courier New,Courier,monospace">sync_option_e</span></td>
                <td>Yes</td>
-               <td>Option for deciding sync job behavior.
+               <td>Option for deciding the sync job behavior.
                           <p>The behavior options can be used as an OR value. For example, the <span style="font-family: Courier New,Courier,monospace">(SYNC_OPTION_EXPEDITED | SYNC_OPTION_NO_RETRY)</span> expression is available, and means that the &quot;Sync job is operated just once with priority&quot;.</p>
                           <p>The following options are available:</p>
                           <ul><li><span style="font-family: Courier New,Courier,monospace">SYNC_OPTION_NONE</span>: Sync job is operated normally</li>
        </tr>
        </tbody>
 </table>
-
-
+  
 <h2>Sync Adapter</h2>
 
  <table class="note">
  </li>
 
 </ul>
-
-
+  
+  
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
 </div></div></div>
index f60ad83..8304b3a 100644 (file)
@@ -125,7 +125,7 @@ int main(int argc, char *argv[])
 }
 </pre>
 <h2 id="controls" name="controls">Managing Application Controls</h2>
-<p>The App Control API provides functions for launching other applications with a specific operation, URI, and MIME type. The requesting application can get a result back from the launched application.</p>
+<p>The App Control API provides functions for <a href="../../../../org.tizen.tutorials/html/native/app_framework/appcontrol_tutorial_n.htm#use">launching other applications with a specific operation, URI, MIME type, and extra data</a>. The requesting application can get a result back from the launched application.</p>
 <p>To launch an application with the App Control API, create an <span style="font-family: Courier New,Courier,monospace">app_control</span> handle and add information to that handle. You can set the following information:</p>
 <ul>
    <li>Operation: Action to be performed by the app control.
@@ -751,7 +751,7 @@ static void app_control(app_control_h app_control, void *user_data)
 
 
 <h2 id="group" name="group">Managing Application Groups</h2>
-<p>You can define the application launch mode and group your applications into entities that can be managed together.</p>
+<p>You can <a href="../../../../org.tizen.tutorials/html/native/app_framework/appcontrol_tutorial_n.htm#mode">define the application launch mode</a> and group your applications into entities that can be managed together.</p>
 
   <p>The main application group features include:</p>
   <ul>
index 088af14..dbce0af 100644 (file)
@@ -54,7 +54,8 @@
   <li><a href="alarm_n.htm">Handle alarms with the Alarm API</a></li>\r
   <li><a href="appcontrol_n.htm">Launch applications with the App Control API</a></li>  \r
   <li><a href="internationalization_n.htm">Localize application strings with the Internationalization API</a></li> \r
-  <li><a href="event_n.htm">Broadcast and subscribe to events with the Event API</a> (in <strong>mobile applications only</strong>)</li>  \r
+  <li><a href="event_n.htm">Broadcast and subscribe to events with the Event API</a> (in <strong>mobile applications only</strong>)</li>\r
+  <li><a href="../../../../org.tizen.tutorials/html/native/app_framework/preference_tutorial_n.htm#manage_pref">Manage application preferences</a></li>\r
 </ul>\r
   \r
   <h2 id="loop" name="loop">Managing the Event Loop</h2>\r
    </tbody> \r
   </table>   \r
   \r
-  <p>The Application API defines 5 states with corresponding transition handlers. The state transition is notified through a state transition callback function, whether the application is created, running, paused, resumed, or terminated. The application must react to each state change appropriately.</p>\r
+  <p>The Application API defines 5 states with corresponding transition handlers. The state transition is notified through a state transition callback function, whether the application is created, running, paused, resumed, or terminated. The application must <a href="../../../../org.tizen.tutorials/html/native/app_framework/application_tutorial_n.htm#fundamentals">react to each state change appropriately</a>.</p>\r
   \r
   <p class="figure">Figure: Application state transitions</p> \r
   <p align="center"><img alt="Application state transitions" src="../../images/app_state_transitions.png" /></p>\r
index ef4916e..d565aff 100644 (file)
 <div id="container"><div id="contents"><div class="content">\r
 \r
 <h1>Badge</h1>\r
-<p>A badge is an image displayed on the application icon, which informs the user about notifications and events.</p>\r
+<p>You can <a href="../../../../org.tizen.tutorials/html/native/app_framework/badge_tutorial_n.htm#init">use badges</a> in your application to inform the user about notifications and events. A badge is an image displayed on the application icon.</p>\r
 \r
 \r
-<p>To create a badge, use the <span style="font-family: Courier New,Courier,monospace">badge_add()</span> method. The application that creates the badge can also update and remove it. When applications are signed with the same certificate, they can control each other&#39;s badges.</p>\r
-<p>If an application not signed with the same certificate must be allowed manage a badge, use the <span style="font-family: Courier New,Courier,monospace">badge_add()</span> method with a writable application ID. The writable application ID enables another application to control your application to manage the badge. You can also configure your application to handle the badge itself.</p>\r
+<p>To <a href="../../../../org.tizen.tutorials/html/native/app_framework/badge_tutorial_n.htm#create">create a badge</a>, use the <span style="font-family: Courier New,Courier,monospace">badge_add()</span> method. The application that creates the badge can also update and remove it. When applications are signed with the same certificate, they can control each other&#39;s badges.</p>\r
+<p>If an application not signed with the same certificate must be allowed <a href="../../../../org.tizen.tutorials/html/native/app_framework/badge_tutorial_n.htm#manage">manage a badge</a>, use the <span style="font-family: Courier New,Courier,monospace">badge_add()</span> method with a writable application ID. The writable application ID enables another application to control your application to manage the badge. You can also configure your application to handle the badge itself.</p>\r
 \r
    <p class="figure">Figure: Badge</p> \r
    <p align="center"><img alt="Badge" src="../../images/badge.png" /></p> \r
index 59db5c8..da36afe 100644 (file)
 <p>A dictionary is an ordered or unordered list of key-value pairs, where keys are used to locate elements in the list. The key is always a string.</p>\r
 \r
 <p>The main features of the Bundle API include:</p>\r
-<ul><li>Creating a bundle using the <span style="font-family: Courier New,Courier,monospace">bundle_create() </span> function.</li>\r
-<li>Adding content to a bundle using the <span style="font-family: Courier New,Courier,monospace">bundle_add_str()</span>, <span style="font-family: Courier New,Courier,monospace">bundle_add_str_array()</span>, or <span style="font-family: Courier New,Courier,monospace">bundle_add_byte() </span> function.</li>\r
-<li>Managing the bundle content using the following functions:\r
+<ul><li><a href="../../../../org.tizen.tutorials/html/native/app_framework/bundle_tutorial_n.htm#init">Creating a bundle</a> using the <span style="font-family: Courier New,Courier,monospace">bundle_create() </span> function.</li>\r
+<li><a href="../../../../org.tizen.tutorials/html/native/app_framework/bundle_tutorial_n.htm#add">Adding content to a bundle</a> using the <span style="font-family: Courier New,Courier,monospace">bundle_add_str()</span>, <span style="font-family: Courier New,Courier,monospace">bundle_add_str_array()</span>, or <span style="font-family: Courier New,Courier,monospace">bundle_add_byte() </span> function.</li>\r
+<li><a href="../../../../org.tizen.tutorials/html/native/app_framework/bundle_tutorial_n.htm#manage">Managing the bundle content</a> using the following functions:\r
 <ul><li>Deleting: <span style="font-family: Courier New,Courier,monospace">bundle_del() </span> </li>\r
 <li>Retrieving content: <span style="font-family: Courier New,Courier,monospace">bundle_get_str()</span>, <span style="font-family: Courier New,Courier,monospace">bundle_get_str_array()</span>, and <span style="font-family: Courier New,Courier,monospace">bundle_get_byte()</span></li>\r
 <li>Retrieving details: <span style="font-family: Courier New,Courier,monospace">bundle_get_type()</span> and <span style="font-family: Courier New,Courier,monospace">bundle_get_count() </span></li></ul></li>\r
-<li>Iterating a bundle using the <span style="font-family: Courier New,Courier,monospace">bundle_foreach()</span> function.</li>\r
-<li>Encoding and decoding a bundle using the <span style="font-family: Courier New,Courier,monospace">bundle_encode()</span> and <span style="font-family: Courier New,Courier,monospace">bundle_decode() </span> functions.</li>\r
+<li><a href="../../../../org.tizen.tutorials/html/native/app_framework/bundle_tutorial_n.htm#iterate">Iterating a bundle</a> using the <span style="font-family: Courier New,Courier,monospace">bundle_foreach()</span> function.</li>\r
+<li><a href="../../../../org.tizen.tutorials/html/native/app_framework/bundle_tutorial_n.htm#encode">Encoding and decoding a bundle</a> using the <span style="font-family: Courier New,Courier,monospace">bundle_encode()</span> and <span style="font-family: Courier New,Courier,monospace">bundle_decode() </span> functions.</li>\r
 </ul>\r
 \r
 <p>When no longer needed, release the bundle by calling the <span style="font-family: Courier New,Courier,monospace">bundle_free()</span> function.</p> \r
index b93d87e..b9c701e 100644 (file)
 <h1 id="data_controls" name="data_controls">Data Control</h1>\r
 <p>Data control is a standard mechanism for exchanging specific data between applications.</p>\r
  \r
-<p>All applications can request data shared by other applications using a data control. However, only service applications can provide their own data.</p>\r
+<p>All applications can request data shared by other applications <a href="../../../../org.tizen.tutorials/html/native/app_framework/data_control_tutorial_n.htm#init">using a data control</a>. However, only service applications can provide their own data.</p>\r
 <p>There are 2 types of data controls:</p>\r
 <ul><li>DATA_CONTROL_SQL\r
-<p>Allows you to use a SQL-type data control to access specific data exported by other service applications. You can also define a SQL-type data control provider to export specific data from your service application.</p></li>\r
+<p>Allows you to <a href="../../../../org.tizen.tutorials/html/native/app_framework/data_control_tutorial_n.htm#map2">use a SQL-type data control</a> to access specific data exported by other service applications. You can also define a SQL-type data control provider to export specific data from your service application.</p></li>\r
 <li>DATA_CONTROL_MAP\r
-<p>Allows you to use a key-value-type data control to access data exported by other service applications. You can also define a key-value-type data control provider to export specific data from your service application.</p></li></ul>\r
+<p>Allows you to <a href="../../../../org.tizen.tutorials/html/native/app_framework/data_control_tutorial_n.htm#map1">use a key-value-type data control</a> to access data exported by other service applications. You can also define a key-value-type data control provider to export specific data from your service application.</p></li></ul>\r
 <p>Data controls can supply operations to access shared data and get back results.</p>\r
 <p>The data control requires the following provider information:</p>\r
 <ul><li>Provider ID\r
index 234ccdc..6131c84 100644 (file)
@@ -32,7 +32,7 @@
 
 <h1>Event</h1>
 
-<p>The application can broadcast its own events to all listeners, and subscribe to events. The events can be either predefined system events from the platform (only platform modules can broadcast system events) or user-defined events (broadcast by UI and service applications).</p>
+<p>The application can <a href="../../../../org.tizen.tutorials/html/native/app_framework/event_tutorial_n.htm#broadcast">broadcast its own events</a> to all listeners, and <a href="../../../../org.tizen.tutorials/html/native/app_framework/event_tutorial_n.htm#manage">subscribe to events</a>. The events can be either predefined system events from the platform (only platform modules can broadcast system events) or user-defined events (broadcast by UI and service applications).</p>
 <p>This feature is supported in mobile applications only.</p>
 
 <p>The main features of the Event API are:</p>
@@ -46,7 +46,7 @@
 </li>
 
 <li>Launch-On-Events
-<p>Service applications can be launched when a desired target event occurs.</p>
+<p>Service applications can be <a href="../../../../org.tizen.tutorials/html/native/app_framework/event_tutorial_n.htm#launch">launched when a desired target event occurs</a>.</p>
 <p>To register an interest in a Launch-On-Event, define the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/appcontrol/operation/launch_on_event</span> operation in the <span style="font-family: Courier New,Courier,monospace">tizen-manifest.xml</span> file.</p>
 
 <p>The following table shows the system events that support Launch-On-Event.</p>
index 5ae8669..38d7bb5 100644 (file)
 <div id="container"><div id="contents"><div class="content">\r
 \r
 <h1 id="message_port" name="message_port">Message Port</h1>\r
-<p>Tizen applications can communicate with each other using message ports. Applications can send and receive messages through message port communication. The message data type for communication is a map data which consists of a bundle (key and value pair).</p>\r
+<p>Tizen applications can communicate with each other <a href="../../../../org.tizen.tutorials/html/native/app_framework/message_port_tutorial_n.htm#init">using message ports</a>. Applications can send and receive messages through message port communication. The message data type for communication is a map data which consists of a bundle (key and value pair).</p>\r
 <p>You can communicate between applications using 2 types of message port:</p>\r
 <ul><li>Local port is used to register your message port and prepare to receive messages from another application.\r
 <p>To receive messages from the another application, set the callback from the local message port.</p></li>\r
 <li>Remote port is used to send messages to other applications. The local message port information can be sent to the other application for bi-directional communication.</li></ul>\r
 <p>A message port supports 2 communication methods:</p>\r
-<ul><li>Uni-directional communication \r
+<ul><li><a href="../../../../org.tizen.tutorials/html/native/app_framework/message_port_tutorial_n.htm#uni">Uni-directional communication</a> \r
 <ul><li>Check whether the message port of a remote application is registered with the <span style="font-family: Courier New,Courier,monospace">message_port_check_remote_port()</span> function.</li>\r
 <li>A Tizen application can send messages to another application using the <span style="font-family: Courier New,Courier,monospace">message_port_send_message()</span> function.</li> \r
 <li>Another application can receive the messages using the <span style="font-family: Courier New,Courier,monospace">message_port_register_local_port()</span> function.</li></ul>\r
   <p class="figure">Figure: Uni-directional communication</p> \r
   <p align="center"><img alt="Uni-directional communication" src="../../images/unidirection.png" /></p> </li>\r
-<li>Bi-directional communication \r
+<li><a href="../../../../org.tizen.tutorials/html/native/app_framework/message_port_tutorial_n.htm#bi">Bi-directional communication</a> \r
 <ul><li>Check whether the trusted message port of a remote application is registered with the <span style="font-family: Courier New,Courier,monospace">message_port_check_remote_port()</span> function.</li>\r
 <li>A Tizen application can send messages and local message port information to another application using the <span style="font-family: Courier New,Courier,monospace">message_port_send_message_with_local_port()</span> function. This local message port information can be used to send the response messages from the other application which receives these messages.</li> \r
 <li>Another application can receive the messages using the <span style="font-family: Courier New,Courier,monospace">message_port_register_local_port()</span> function. The remote message port information can be used to send response messages to the application which sends the messages.</li></ul>\r
@@ -53,7 +53,7 @@
   <p align="center"><img alt="Bi-directional communication" src="../../images/bidirection.png" /></p> </li></ul>\r
 \r
 <h2 id="trusted" name="trusted">Trusted Communication</h2>\r
-<p>You can send and receive trusted messages through message port APIs. The trusted message port instance can be retrieved using the <span style="font-family: Courier New,Courier,monospace">message_port_register_trusted_local_port()</span> function. Communication over the trusted message port is allowed only if both applications are signed with a certificate that is uniquely assigned to its developer. </p>\r
+<p>You can <a href="../../../../org.tizen.tutorials/html/native/app_framework/message_port_tutorial_n.htm#trusted">send and receive trusted messages</a> through message port APIs. The trusted message port instance can be retrieved using the <span style="font-family: Courier New,Courier,monospace">message_port_register_trusted_local_port()</span> function. Communication over the trusted message port is allowed only if both applications are signed with a certificate that is uniquely assigned to its developer. </p>\r
   <p class="figure">Figure: Trusted message port communication</p> \r
   <p align="center"><img alt="Trusted message port communication" src="../../images/trusted_communication.png" /></p>\r
 \r
index 1090913..972193c 100644 (file)
 <div id="container"><div id="contents"><div class="content">
 
 <h1>Notification</h1>
-  <p>An application can create notifications for the user.</p>
+  <p>An application can <a href="../../../../org.tizen.tutorials/html/native/app_framework/notification_tutorial_n.htm#init">use notifications</a> to keep the user informed of important information.</p>
   
   <p>This feature is supported in mobile applications only.</p>
 <p>The Tizen Notification API requires the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/notification</span> privilege.</p>
 
 <p>To use the notification feature:</p>
-<ul><li>To post a simple notification, use the <span style="font-family: Courier New,Courier,monospace">notification_post(</span>) function, which accepts a notification handle as a parameter.
+<ul><li>To <a href="../../../../org.tizen.tutorials/html/native/app_framework/notification_tutorial_n.htm#post">post a simple notification</a>, use the <span style="font-family: Courier New,Courier,monospace">notification_post(</span>) function, which accepts a notification handle as a parameter.
 <p>The posted notification has a default notification icon and the application name as the title.</p></li>
-<li>To control the detailed behavior of the notification or to show the progress bar in the on-going activity area, use the <span style="font-family: Courier New,Courier,monospace">notification_create()</span> function to get a notification handle and set the details.</li></ul>
+<li>To control the detailed behavior of the notification or to <a href="../../../../org.tizen.tutorials/html/native/app_framework/notification_tutorial_n.htm#bar">show the progress bar in the on-going activity area</a>, use the <span style="font-family: Courier New,Courier,monospace">notification_create()</span> function to <a href="../../../../org.tizen.tutorials/html/native/app_framework/notification_tutorial_n.htm#create">get a notification handle</a> and <a href="../../../../org.tizen.tutorials/html/native/app_framework/notification_tutorial_n.htm#set">set the details</a>.</li>
+<li>To <a href="../../../../org.tizen.tutorials/html/native/app_framework/notification_tutorial_n.htm#update">update the content of a notification</a>, use the <span style="font-family: Courier New,Courier,monospace">notification_update(</span>) function. You can also <a href="../../../../org.tizen.tutorials/html/native/app_framework/notification_tutorial_n.htm#delete">delete notifications</a> when no longer needed.</li></ul>
 
 <h2 id="type" name="type">Notification Types</h2>
 <p>Tizen provides notifications by using a combination of any of the following notification types:</p>
index 2671335..1104ce2 100644 (file)
 <div id="container"><div id="contents"><div class="content">\r
 <h1>Package Manager</h1>\r
 \r
-<p>The package manager is used to retrieve detailed information of the installed packages on the device. This information includes the package name, label, path to the icon image, version, type, and installed storage.</p>\r
-<p>To retrieve package information, get the <span style="font-family: Courier New,Courier,monospace">package_info_h</span> object using the <span style="font-family: Courier New,Courier,monospace">package_info_create()</span> or <span style="font-family: Courier New,Courier,monospace">package_manager_get_package_info()</span> function.</p>\r
-<p>Use the <span style="font-family: Courier New,Courier,monospace">package_manager_foreach_package_info()</span> function to retrieve the package information of all installed packages. As a result, the <span style="font-family: Courier New,Courier,monospace">package_manager_package_info_cb()</span> callback is invoked and you can get package information.</p>\r
+<p>The <a href="../../../../org.tizen.tutorials/html/native/app_framework/package_tutorial_n.htm#init">package manager is used to retrieve detailed information of the installed packages</a> on the device. This information includes the package name, label, path to the icon image, version, type, and installed storage.</p>\r
+\r
+<p>The main features of the Package Manager API include:</p>\r
+<ul>\r
+<li>Retrieving individual package information\r
+<p>To <a href="../../../../org.tizen.tutorials/html/native/app_framework/package_tutorial_n.htm#info">retrieve package information</a>, get the <span style="font-family: Courier New,Courier,monospace">package_info_h</span> object using the <span style="font-family: Courier New,Courier,monospace">package_info_create()</span> or <span style="font-family: Courier New,Courier,monospace">package_manager_get_package_info()</span> function.</p></li>\r
+<li>Retrieving information from all installed packages\r
+<p>Use the <span style="font-family: Courier New,Courier,monospace">package_manager_foreach_package_info()</span> function to <a href="../../../../org.tizen.tutorials/html/native/app_framework/package_tutorial_n.htm#retrieve">retrieve the package information of all installed packages</a>. As a result, the <span style="font-family: Courier New,Courier,monospace">package_manager_package_info_cb()</span> callback is invoked and you can get package information.</p></li>\r
+<li>Monitoring changes\r
+<p>You can <a href="../../../../org.tizen.tutorials/html/native/app_framework/package_tutorial_n.htm#listen">monitor package events</a>, such as installation, uninstallation, and updates.</p></li>\r
+</ul>\r
+\r
+\r
 \r
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
 <script type="text/javascript" src="../../scripts/showhide.js"></script>\r
index d7f2e7b..5ae329d 100644 (file)
      <td><span style="font-family: Courier New,Courier,monospace">READY</span></td>\r
      <td>Application is launched.</td>\r
     </tr>\r
-    <tr>\r
-     <td><span style="font-family: Courier New,Courier,monospace">CREATED</span></td>\r
-     <td>Application starts the main loop.</td>\r
-    </tr>\r
+       <tr>\r
+        <td><span style="font-family: Courier New,Courier,monospace">CREATED</span></td>\r
+        <td>Application starts the main loop.</td>\r
+       </tr>\r
     <tr>\r
      <td><span style="font-family: Courier New,Courier,monospace">RUNNING</span></td>\r
      <td>Application runs in the background.</td>\r
@@ -77,6 +77,9 @@
   </table>\r
 \r
 <h2 id="register" name="register">Registering Callbacks for Service Application Events</h2>\r
+\r
+<p>You can control the service application execution by <a href="../../../../org.tizen.tutorials/html/native/app_framework/service_app_tutorial_n.htm#callback">monitoring and reacting to application state change and system events</a>.</p>\r
+\r
 <p>The following table lists the application state change events.</p>\r
 \r
     <table>\r
    </tbody>\r
   </table>\r
 \r
-<p>The following table lists the system event events.</p>\r
+<p>The following table lists the system events.</p>\r
 \r
     <table>\r
    <caption>\r
-     Table: Application states\r
+     Table: System events\r
    </caption>\r
    <tbody>\r
     <tr>\r
@@ -250,4 +253,4 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga
 </script>\r
 \r
 </body>\r
-</html>        \r
+</html>        
\ No newline at end of file
index 1f6de16..9839308 100644 (file)
@@ -34,7 +34,7 @@
 <p>You can add your shortcut for the Home application. The Tizen Shortcut API requires the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/shortcut</span> privilege.</p>
 <p>This feature is supported in mobile applications only.</p>
 
-<p>To add a shortcut, use the <span style="font-family: Courier New,Courier,monospace">shortcut_add_to_home()</span> function, which requests the Home application to add a new shortcut.</p>
+<p>To <a href="../../../../org.tizen.tutorials/html/native/app_framework/shortcut_tutorial_n.htm#add">add a shortcut</a>, use the <span style="font-family: Courier New,Courier,monospace">shortcut_add_to_home()</span> function, which requests the Home application to add a new shortcut. You can also <a href="../../../../org.tizen.tutorials/html/native/app_framework/shortcut_tutorial_n.htm#add_widget">add a widget</a>.</p>
 <p class="figure">Figure: Shortcuts</p> 
 <p align="center"><img alt="Shortcuts" src="../../images/shortcut.png" /></p>
 <p>There are 2 types of shortcuts:</p>
index b443d73..bbad863 100644 (file)
 <div id="container"><div id="contents"><div class="content">\r
 \r
 <h1>Watch Application</h1>\r
-<p>Tizen allows you to create a watch application and manage its life-cycle to display the current date and time accurately on the screen.</p>\r
+<p>Tizen allows you to create a watch application and manage its life-cycle to <a href="../../../../org.tizen.tutorials/html/native/app_framework/watch_tutorial_n.htm#current">retrieve the current date and time</a> and display it accurately on the screen.</p>\r
 \r
 <p>This feature is supported in wearable applications only.</p>\r
           \r
 <p>The main features of the Watch Application API include:</p>\r
 <ul>\r
 <li>Managing the application life-cycle\r
-<p>You can create and initialize a watch application with the <span style="font-family: Courier New,Courier,monospace">main()</span> function.</p>\r
+<p>You can create and <a href="../../../../org.tizen.tutorials/html/native/app_framework/watch_tutorial_n.htm#init">initialize a watch application</a> with the <span style="font-family: Courier New,Courier,monospace">main()</span> function.</p>\r
 <p>To start an event loop, use the <span style="font-family: Courier New,Courier,monospace">watch_app_main()</span> function. Before calling this function, set up the <span style="font-family: Courier New,Courier,monospace">watch_app_lifecycle_callback_s</span> structure variable, which contains the required event callbacks.</p>\r
+<p>You can control the application execution by <a href="../../../../org.tizen.tutorials/html/native/app_framework/watch_tutorial_n.htm#lifecycle">defining actions in the life-cycle event callbacks</a>. You can also <a href="../../../../org.tizen.tutorials/html/native/app_framework/watch_tutorial_n.htm#systemrelated">react to system events with callbacks</a>.</p>\r
 <p>When initializing the application, <a href="../../../../org.tizen.devtools/html/native_tools/manifest_text_editor_n.htm#watch_app">edit the manifest file</a> to define the watch application settings.</p>\r
 </li>\r
 <li>Managing the time handle and displaying the time\r
-<p>To draw an accurate clock in various formats on the screen, use the Watch Application getter APIs with the <span style="font-family: Courier New,Courier,monospace">watch_time_h</span> time handle. You can get the handle with the <span style="font-family: Courier New,Courier,monospace">watch_time_get_current_time()</span> function.</p></li>\r
+<p>To draw an accurate clock in various formats on the screen, use the Watch Application getter APIs with the <span style="font-family: Courier New,Courier,monospace">watch_time_h</span> time handle. You can get the handle with the <span style="font-family: Courier New,Courier,monospace">watch_time_get_current_time()</span> function.</p>\r
+<p>With the time handle, you can <a href="../../../../org.tizen.tutorials/html/native/app_framework/watch_tutorial_n.htm#timehandle">draw the UI</a> for your watch application.</p></li>\r
 <li>Managing the ambient mode\r
 <p>In a low-powered wearable device, an ambient mode is available. In this mode, the watch application shows a limited UI and receives only the ambient tick event every minute to reduce power consumption.</p>\r
 <p>The details of the limited UI drawn in the ambient mode depend on the device. Usually, when designing the ambient mode UI, draw a black and white UI only, and use less than 20% of the pixels on the screen. If you do not want to draw your own ambient mode UI, set the <span style="font-family: Courier New,Courier,monospace">ambient-support</span> attribute to <span style="font-family: Courier New,Courier,monospace">false</span> in the watch application <a href="../../../../org.tizen.devtools/html/native_tools/manifest_text_editor_n.htm#watch_app">manifest file</a> to allow the platform to show a default ambient mode UI.</p>\r
 \r
-<p>To use the ambient mode, the user must enable it in the device settings.</p>\r
+<p>To use the ambient mode, the user must enable it in the device settings. You can <a href="../../../../org.tizen.tutorials/html/native/app_framework/watch_tutorial_n.htm#ambient">define callbacks to monitor when the application enters and exits the ambient mode</a>.</p>\r
 \r
 </li>\r
 </ul>\r
index 9ef2968..6e48416 100644 (file)
@@ -22,6 +22,7 @@
        <div id="toc_border"><div id="toc">\r
                <p class="toc-title">Content</p>\r
                        <ul class="toc">\r
+                               <li><a href="#app_instance">Widget Application and Widget Instance</a></li>\r
                                <li><a href="#app">Widget Application States and Events</a></li>\r
                                <li><a href="#instance">Widget Instance States and Events</a></li>\r
                                <li><a href="#share">Data Sharing Between the Widget Application and Other Applications</a></li>\r
 <div id="container"><div id="contents"><div class="content">\r
 \r
 <h1>Widget Application</h1>\r
-<p>Widget applications are Tizen native applications shown on the home screen. They are launched by the home screen when the user selects them in the <strong>Add Widget</strong> menu.</p>\r
+<p>You can <a href="../../../../org.tizen.tutorials/html/native/app_framework/widget_tutorial_n.htm#init">create widget applications</a>, which are Tizen native applications shown on the home screen. They are launched by the home screen when the user selects them in the <strong>Add Widget</strong> menu.</p>\r
 \r
   <p>The main features of the Widget Application API include:</p>\r
   <ul>\r
        <li>Managing multiple widget instances\r
-       <p>Each widget application usually has 1 process for maintaining the main loop. Within that process, the application can create multiple widget instances that can share the same resources.</p></li>\r
+       <p>Each widget application usually has 1 process for maintaining the main loop. Within that process, the application can <a href="../../../../org.tizen.tutorials/html/native/app_framework/widget_tutorial_n.htm#get_instance">create multiple widget instances</a> that can share the same resources.</p></li>\r
        <li>Managing the life-cycle\r
        <p>You can manage the widget application and widget instance life-cycles through callbacks that are triggered as the application or instance state changes.</p>\r
-       <p>The widget application starts with the <span style="font-family: Courier New,Courier,monospace">main()</span> function, which initializes the application. The <span style="font-family: Courier New,Courier,monospace">widget_app_main()</span> function is used to start the application event loop. Before calling this function, set up the <span style="font-family: Courier New,Courier,monospace">widget_app_lifecycle_callback_s</span> structure variable, which is passed to the function.</p>\r
+       <p>The widget application starts with the <span style="font-family: Courier New,Courier,monospace">main()</span> function, which <a href="../../../../org.tizen.tutorials/html/native/app_framework/widget_tutorial_n.htm#create">creates and initializes the application</a>. The <span style="font-family: Courier New,Courier,monospace">widget_app_main()</span> function is used to start the application event loop. Before calling this function, set up the <span style="font-family: Courier New,Courier,monospace">widget_app_lifecycle_callback_s</span> structure variable, which is passed to the function.</p>\r
        <p>To ensure that the application runs smoothly, you must <a href="../../../../org.tizen.devtools/html/native_tools/manifest_text_editor_n.htm#widget_app">edit the application manifest file</a> to define the widget settings.</p>\r
        </li>\r
        <li>Creating the widget UI\r
-       <p>The widget application can draw a UI on the home screen. To do this, you must get the window object of the home screen and attach UI components to it. You can use the <span style="font-family: Courier New,Courier,monospace">widget_app_get_elm_win()</span> function to <a href="../../../../org.tizen.tutorials/html/native/app_framework/widget_tutorial_n.htm#get_window">create an EFL object for widget window</a>.</p>\r
+       <p>The widget application can <a href="../../../../org.tizen.tutorials/html/native/app_framework/widget_tutorial_n.htm#get_window">draw a UI on the home screen</a>. To do this, you must get the window object of the home screen and attach UI components to it. You can use the <span style="font-family: Courier New,Courier,monospace">widget_app_get_elm_win()</span> function to create an EFL object for widget window.</p>\r
          <table class="note"> \r
    <tbody> \r
     <tr> \r
        </ul>\r
 \r
 <h2 id="app_instance" name="app_instance">Widget Application and Widget Instance</h2>\r
-<p>Widget Application provides process life-cycle and methods for making a class of the widget and managing it. It consist of one process and has responsibility to make a class in widget_app_create() callback function. With this class, framework can make instances whenever Applications for Widget Viewers such as Home-screen and Lock-screen request making an instance for the widget. As for Widget Instance, it has own life-cycle which is similar with Application's one. However, Widget Instance is just object which will be shown by Applications for Widget Viewers. Many Widget Instances may be running on the same Widget Application process.\r
-</p>\r
-<p class="figure">Figure: Each widget application has one or more widget instances</p><p align="center"><img alt="Widget application instance" src="../../images/widget_homescreen.png"></p>\r
+\r
+<p>The widget application provides a life-cycle and methods for making and managing a widget class. It consists of 1 process and make the widget class in the <span style="font-family: Courier New,Courier,monospace">widget_app_create()</span> callback function. With this class, the framework can make instances whenever applications for widget viewers, such as home screen and lock screen, request for a widget instance.</p>\r
+<p>The widget instance has its own life-cycle similar to the widget application. However, the widget instance is only an object shown by the applications for widget viewers. Many widget instances can be running on the same widget application process.</p>\r
+<p class="figure">Figure: Each widget application has 1 or more widget instances</p>\r
+<p align="center"><img alt="Each widget application has 1 or more widget instances" src="../../images/widget_homescreen.png"/></p>\r
+\r
 \r
 <h2 id="app" name="app">Widget Application States and Events</h2>\r
 \r
        <p align="center"><img alt="Widget instance life-cycle" src="../../images/widget_instance_lifecycle.png" /></p>\r
 \r
 \r
-<p>The following table lists the callbacks you can use as the instance state changes.</p>\r
+<p>The following table lists the <a href="../../../../org.tizen.tutorials/html/native/app_framework/widget_tutorial_n.htm#life-cycle">callbacks you can use as the instance state changes</a>.</p>\r
 \r
 <table>\r
           <caption>\r
@@ -180,8 +184,10 @@ widget_app_create(void *user_data)
 }\r
 </pre>\r
 \r
-<p class="figure">Figure: Once after first instance launch succeed, additional launch requests calls instance create directly</p>\r
-<p align="center"><img alt="Widget application instance" src="../../images/widget_app_instance_flow.png"></p>\r
+<p>When the widget launch is requested for the first time, the widget application is initialized and the widget instance is created only after the initialization. If there are additional launch requests for the same widget, a new widget instance for those is created directly, since the widget application has already been initialized.</p>\r
+\r
+<p class="figure">Figure: Launching widget instances</p>\r
+<p align="center"><img alt="Launching widget instances" src="../../images/widget_app_instance_flow.png"/></p>\r
 \r
 <h2 id="share" name="share">Data Sharing Between the Widget Application and Other Applications</h2>\r
 \r
@@ -214,16 +220,19 @@ widget_app_create(void *user_data)
 \r
 <p class="figure">Figure: Sharing through data control</p> \r
 <p align="center"><img alt="Sharing through data control" src="../../images/widget_data_control_share.png" /></p>\r
-<table class="note"> \r
-  <tbody> \r
-    <tr> \r
-     <th class="note">Note</th> \r
-    </tr> \r
-    <tr> \r
-     <td class="note">For user convenience, package of STANDALONE widget application is not allowed in the Tizen Store. But you can make a STANDALONE widget application in the IDE for test purpose. You need to combine with at least one UI application in the package to publish. For more details, see <a href="../../../../org.tizen.gettingstarted/html/native/process/app_dev_process_n.htm#develop">Native Application Development Process</a> and <a href="../../../../org.tizen.gettingstarted/html/web/process/app_dev_process_w.htm#multi">Web Application Development Process.</a></td> \r
-    </tr> \r
-  </tbody> \r
-</table> \r
+\r
+<table class="note">\r
+  <tbody>\r
+    <tr>\r
+     <th class="note">Note</th>\r
+    </tr>\r
+    <tr>\r
+     <td class="note">For user convenience, a STANDALONE widget application package is not allowed in the Tizen Store.\r
+        <p>You can make a STANDALONE widget application in the IDE for test purposes. However, to publish it, you must combine it with at least 1 UI application in the package. For more details, see <a href="../../../../org.tizen.gettingstarted/html/native/process/app_dev_process_n.htm#develop">Developing Multiple Projects as a Combined Package</a>.</p></td>\r
+    </tr>\r
+  </tbody>\r
+</table>\r
+\r
 \r
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
 <script type="text/javascript" src="../../scripts/showhide.js"></script>\r
@@ -247,4 +256,4 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga
 </script>\r
 \r
 </body>\r
-</html>\r
+</html>        
\ No newline at end of file
index 30ae373..251fbdc 100644 (file)
 \r
 <h1>i18n</h1>\r
 \r
-<p>You can generate flexible number or date format patterns and format and parse dates and numbers for any locale. The i18n API is implemented by using the ICU library.</p>\r
+<p>You can generate flexible number or date format patterns, format and parse dates and numbers for any locale, and <a href="../../../../org.tizen.tutorials/html/native/base/i18n_tutorial_n.htm#tmz">manage time zones</a>. The i18n API is implemented by using the ICU library.</p>\r
 \r
 <h2 id="ubrk" name="ubrk">Ubrk</h2>\r
-<p>The Ubrk API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__UBRK__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__UBRK__MODULE.html">wearable</a> applications) is used to find the location of boundaries in text. The <span style="font-family: Courier New,Courier,monospace">i18n_ubreak_iterator_h</span> handle maintains a current position and scans over the text returning the index of characters where the boundaries occur.</p>\r
+<p>The Ubrk API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__UBRK__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__UBRK__MODULE.html">wearable</a> applications) is used to <a href="../../../../org.tizen.tutorials/html/native/base/i18n_tutorial_n.htm#ubrk">find the location of boundaries in text</a>. The <span style="font-family: Courier New,Courier,monospace">i18n_ubreak_iterator_h</span> handle maintains a current position and scans over the text returning the index of characters where the boundaries occur.</p>\r
 <p>The following boundary analyzing methods are available:</p>\r
 <ul>\r
        <li>Line boundary analysis determines where a text string can be broken when line-wrapping. The mechanism correctly handles punctuation and hyphenated words.</li>\r
        <li>Word boundary analysis is used by search and replace functions, as well as within text editing applications that allow the user to select words with a double-click. Word selection provides correct interpretation of punctuation marks within and following words. Characters that are not part of a word, such as symbols or punctuation marks, have word-breaks on both sides.</li>\r
        <li>Character boundary analysis identifies the boundaries of Extended Grapheme Clusters, which are groupings of codepoints that must be treated as character-like units for many text operations. For additional information on grapheme clusters and guidelines on their use, see <a href="http://www.unicode.org/reports/tr29/tr29-21.html" target="_blank">Unicode Standard Annex #29, Unicode Text Segmentation</a>.</li>\r
        <li>Title boundary analysis locates all positions, typically starts of words, that must be set to Title Case when title casing the text.</li>\r
-       <li>The text boundary positions are found according to the rules described in <a href="http://www.unicode.org/reports/tr29/tr29-21.html" target="_blank">Unicode Standard Annex #29, Unicode Text Segmentation</a>, and <a href="http://www.unicode.org/reports/tr14/tr14-30.html" target="_blank">Unicode Standard Annex #14, UNICODE LINE BREAKING ALGORITHM</a>.</li>\r
+       <li>The text boundary positions are found according to the rules described in <a href="http://www.unicode.org/reports/tr29/tr29-21.html" target="_blank">Unicode Standard Annex #29, Unicode Text Segmentation</a>, and <a href="http://www.unicode.org/reports/tr14/tr14-30.html" target="_blank">Unicode Standard Annex #14, Unicode Line Breaking Algorithm</a>.</li>\r
 </ul>\r
 \r
 \r
 <h2 id="ucalendar" name="ucalendar">Ucalendar</h2>\r
 \r
-<p>The Ucalendar API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__UCALENDAR__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__UCALENDAR__MODULE.html">wearable</a> applications) is used for converting between a Udate object and a set of integer fields such as <span style="font-family: Courier New,Courier,monospace;">I18N_UCALENDAR_YEAR</span>, <span style="font-family: Courier New,Courier,monospace;">I18N_UCALENDAR_MONTH</span>, <span style="font-family: Courier New,Courier,monospace;">I18N_UCALENDAR_DAY</span>, and <span style="font-family: Courier New,Courier,monospace;">I18N_UCALENDAR_HOUR</span>. A <a href="#udate">Udate</a> object represents a specific instant in time with one millisecond precision.</p>\r
+<p>The Ucalendar API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__UCALENDAR__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__UCALENDAR__MODULE.html">wearable</a> applications) is used for <a href="../../../../org.tizen.tutorials/html/native/base/i18n_tutorial_n.htm#dates">converting between a Udate object and a set of integer fields</a>, such as <span style="font-family: Courier New,Courier,monospace;">I18N_UCALENDAR_YEAR</span>, <span style="font-family: Courier New,Courier,monospace;">I18N_UCALENDAR_MONTH</span>, <span style="font-family: Courier New,Courier,monospace;">I18N_UCALENDAR_DAY</span>, and <span style="font-family: Courier New,Courier,monospace;">I18N_UCALENDAR_HOUR</span>. A <a href="#udate">Udate</a> object represents a specific instant in time with one millisecond precision.</p>\r
 <p>The types of Ucalendar interpret a Udate according to the rules of a specific calendar system, such as the gregorian or traditional system.</p>\r
 <p>A Ucalendar object can produce all the time field values needed to implement the date-time formatting for a particular language and calendar style (for example, Japanese-Gregorian, Japanese-Traditional).</p>\r
 \r
 \r
 <h2 id="uenumeration" name="uenumeration">Uenumeration</h2>\r
 \r
-<p>The Uenumeration API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__UENUMERATION__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__UENUMERATION__MODULE.html">wearable</a> applications) enables you to create an enumeration object out of a given set of strings. The object can be created out of an array of <span style="font-family: Courier New,Courier,monospace">const char*</span> strings or an array of <span style="font-family: Courier New,Courier,monospace">i18n_uchar*</span> strings.</p>\r
+<p>The Uenumeration API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__UENUMERATION__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__UENUMERATION__MODULE.html">wearable</a> applications) enables you to <a href="../../../../org.tizen.tutorials/html/native/base/i18n_tutorial_n.htm#uenum">create an enumeration object</a> out of a given set of strings. The object can be created out of an array of <span style="font-family: Courier New,Courier,monospace">const char*</span> strings or an array of <span style="font-family: Courier New,Courier,monospace">i18n_uchar*</span> strings.</p>\r
 <p>The enumeration object enables navigation through the enumeration values, with the use of the <span style="font-family: Courier New,Courier,monospace">i18n_uenumeration_next()</span> or <span style="font-family: Courier New,Courier,monospace">i18n_uenumeration_unext()</span> function (depending on the type used for creating the enumeration object), and with the <span style="font-family: Courier New,Courier,monospace">i18n_uenumeration_reset()</span> function.</p>\r
 <p>You can get the number of values stored in the enumeration object with the <span style="font-family: Courier New,Courier,monospace">i18n_uenumeration_count()</span> function.</p>\r
 \r
 \r
 <h2 id="ulocale" name="ulocale">Ulocale</h2>\r
-<p>The Ulocale API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__ULOCALE__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__ULOCALE__MODULE.html">wearable</a> applications) represents a specific geographical, political, or cultural region. Locale-sensitive operations use the Ulocale functions to tailor information for the user. For example, displaying a number is a locale-sensitive operation. The number must be formatted according to the customs and conventions of the user&#39;s native country, region, or culture.\r
+<p>The Ulocale API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__ULOCALE__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__ULOCALE__MODULE.html">wearable</a> applications) represents a specific geographical, political, or cultural region. Locale-sensitive operations <a href="../../../../org.tizen.tutorials/html/native/base/i18n_tutorial_n.htm#locales">use the Ulocale functions to tailor information</a> for the user. For example, displaying a number is a locale-sensitive operation. The number must be formatted according to the customs and conventions of the user&#39;s native country, region, or culture.\r
 </p>\r
 <p>You create a locale with one of the options listed below. Each component is separated by an underscore in the locale string:</p>\r
 \r
 \r
 \r
 <h2 id="unumber" name="unumber">Unumber</h2>\r
-<p>The Unumber API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__UNUMBER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__UNUMBER__MODULE.html">wearable</a> applications) helps you to format and parse numbers for any locale. Your code can be completely independent of the locale conventions for decimal points, thousands-separators, or even the particular decimal digits used, or whether the number format is even decimal. There are different number format styles like decimal, currency, percent and spellout.</p>\r
+<p>The Unumber API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__UNUMBER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__UNUMBER__MODULE.html">wearable</a> applications) helps you to <a href="../../../../org.tizen.tutorials/html/native/base/i18n_tutorial_n.htm#numbers">format and parse numbers for any locale</a>. Your code can be completely independent of the locale conventions for decimal points, thousands-separators, or even the particular decimal digits used, or whether the number format is even decimal. There are different number format styles like decimal, currency, percent and spellout.</p>\r
 \r
 <h2 id="usearch" name="usearch">Usearch</h2>\r
 <p>The Usearch API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__USEARCH__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__USEARCH__MODULE.html">wearable</a> applications) provides language-sensitive text searching based on the comparison rules defined in a Ucollator data struct. This ensures that language eccentricity can be handled. For example, for the German collator, characters ß and SS are matched if case is chosen to be ignored. That is why it can be important to pass a locale when creating the usearch with the <span style="font-family: Courier New,Courier,monospace">i18n_usearch_create_new()</span> function.</p>\r
 \r
 <h2 id="uset" name="uset">Uset</h2>\r
-<p>Uset is a mutable set of Unicode characters and multicharacter strings. The sets represent character classes used in regular expressions. A character specifies a subset of the Unicode code points. The legal code points are U+0000 to U+10FFFF, inclusive.</p>\r
+<p>Uset is a mutable <a href="../../../../org.tizen.tutorials/html/native/base/i18n_tutorial_n.htm#uset">set of Unicode characters and multicharacter strings that you can manage</a>. The sets represent character classes used in regular expressions. A character specifies a subset of the Unicode code points. The legal code points are U+0000 to U+10FFFF, inclusive.</p>\r
 <p>The set supports 2 functions:</p>\r
 <ul><li>The operand function allows the caller to modify the value of the set. The operand function works similarly to the boolean logic: a boolean OR is implemented by add, a boolean AND is implemented by retain, a boolean XOR is implemented by a complement taking an argument, and a boolean NOT is implemented by a complement with no argument. In terms of traditional set theory function names, add is a union, retain is an intersection, remove is an asymmetric difference, and complement with no argument is a set complement with respect to the superset range <span style="font-family: Courier New,Courier,monospace">MIN_VALUE-MAX_VALUE</span>.</li>\r
 <li>The <span style="font-family: Courier New,Courier,monospace">i18n_uset_apply_pattern()</span> or <span style="font-family: Courier New,Courier,monospace">i18n_uset_to_pattern()</span> function. Unlike the functions that add characters or categories, and control the logic of the set, the <span style="font-family: Courier New,Courier,monospace">i18n_uset_apply_pattern()</span> function sets all attributes of a set at once, based on a string pattern.</li></ul>\r
 \r
 \r
 <h2 id="ustring" name="ustring">Ustring</h2>\r
-<p>The Ustring API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__USTRING__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__USTRING__MODULE.html">wearable</a> applications) provides general unicode string handling. Some functions are similar in name, signature, and behavior to the ANSI C <span style="font-family: Courier New,Courier,monospace">&lt;string.h&gt;</span> functions, and other functions provide more Unicode-specific functionality.</p>\r
+<p>The Ustring API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__USTRING__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__USTRING__MODULE.html">wearable</a> applications) allows you to <a href="../../../../org.tizen.tutorials/html/native/base/i18n_tutorial_n.htm#characters">handle general unicode strings</a>. Some functions are similar in name, signature, and behavior to the ANSI C <span style="font-family: Courier New,Courier,monospace">&lt;string.h&gt;</span> functions, and other functions provide more Unicode-specific functionality.</p>\r
 <p>The i18n uses 16-bit Unicode (UTF-16) in the form of arrays of <span style="font-family: Courier New,Courier,monospace">i18n_uchar</span> code units. UTF-16 encodes each Unicode code point with either 1 or 2 <span style="font-family: Courier New,Courier,monospace">i18n_uchar</span> code units. This is the default form of Unicode, and a forward-compatible extension of the original, fixed-width form that was known as UCS-2. UTF-16 superseded UCS-2 with Unicode 2.0 in 1996.</p>\r
 <p>The i18n also handles 16-bit Unicode text with unpaired surrogates. Such text is not well-formed UTF-16. Code-point-related functions treat unpaired surrogates as surrogate code points, such as separate units.</p>\r
 <p>Although UTF-16 is a variable-width encoding form, such as some legacy multi-byte encodings, it is much more efficient even for random access because the code unit values for single-unit characters versus lead units versus trail units are completely disjoint. This means that it is easy to determine character (code point) boundaries from random offsets in the string.</p>\r
index 0f62f66..b69c04b 100644 (file)
   \r
 <p>The main features of the MIME Type API include:</p>\r
  \r
-<ul><li>Getting the MIME type \r
-<p>To get a MIME type for a file extension, use the <span style="font-family: Courier New,Courier,monospace">mime_type_get_mime_type()</span> function. The MIME type is &#39;application/octet-stream&#39;, if the given file extension is not associated with any specific file format.</p></li>\r
+<ul><li>Getting the MIME type\r
+<p>To <a href="../../../../org.tizen.tutorials/html/native/content/mime_type_tutorial_n.htm#get_file_ext">get a MIME type</a> for a file extension, use the <span style="font-family: Courier New,Courier,monospace">mime_type_get_mime_type()</span> function. The MIME type is &#39;application/octet-stream&#39;, if the given file extension is not associated with any specific file format.</p></li>\r
 \r
 <li>Getting associated extensions\r
-<p>To get a list of extensions associated, for example, with an image or a JPEG MIME type, use the <span style="font-family: Courier New,Courier,monospace">mime_type_get_file_extension()</span> function.</p></li></ul>\r
+<p>To <a href="../../../../org.tizen.tutorials/html/native/content/mime_type_tutorial_n.htm#get_mime">get a list of extensions</a> associated, for example, with an image or a JPEG MIME type, use the <span style="font-family: Courier New,Courier,monospace">mime_type_get_file_extension()</span> function.</p></li></ul>\r
 \r
    \r
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
diff --git a/org.tizen.guides/html/native/graphics/adv_performance_n.htm b/org.tizen.guides/html/native/graphics/adv_performance_n.htm
new file mode 100644 (file)
index 0000000..26a193e
--- /dev/null
@@ -0,0 +1,76 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+  <title>Advanced Performance</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm">OpenGL ES Tutorial</a></li>
+            </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Advanced Performance</h1>
+<p>The following general principles can help you to resolve performance problems on Tizen devices. (Some principles are valid for general embedded systems.)</p>
+
+<p>The first 2 principles are very basic, but still quite important, since the CPU-GPU bandwidth and memory capacity of embedded systems are limited in general.</p>
+
+<ol>
+<li>As presented in <a href="polygon_mesh_n.htm">Polygon Mesh in OpenGL ES</a>, although the vertex array is intuitive, it is inefficient to use only the vertex array. It is almost always recommended to use an <strong>index array</strong> and the <span style="font-family: Courier New,Courier,monospace">glDrawElements()</span> function. This reduces the amount of data transferring from CPU to GPU. The bigger the model is, the more efficient the index array approach is.</li>
+<li>If the polygon mesh is not frequently changed, you can use <strong>vertex buffer objects</strong> (VBO) in order to cache the data into the GPU memory, as illustrated in <a href="vertex_shader_n.htm#uniforms_attributes">Uniforms and Attributes in OpenGL ES</a>.</li>
+<li>In general, you do not need to call the <span style="font-family: Courier New,Courier,monospace">glFinish()</span> function. As drawing commands are requested by the <span style="font-family: Courier New,Courier,monospace">draw_glview()</span> callback and are executed in the background, it is enough to call the <span style="font-family: Courier New,Courier,monospace">glFlush()</span> function at the end of the <span style="font-family: Courier New,Courier,monospace">draw_glview()</span> callback.</li>
+<li>You are not required to clear every buffer, or to clear them at the same time. Instead, you can obtain the best performance by calling the <span style="font-family: Courier New,Courier,monospace">glClear()</span> function once per frame with all the buffers to be simultaneously cleared.</li>
+<li>Do not create and destroy the graphic resources (such as textures and FBO) per frame. You can create and store them in the app_data structure in the <span style="font-family: Courier New,Courier,monospace">init_glview()</span> callback and re-use them later.</li>
+<li>Try to avoid using the <span style="font-family: Courier New,Courier,monospace">if</span> statement in the shader code. Since the vertex and fragment shaders are executed in parallel (in batches) on most GPU architectures, <span style="font-family: Courier New,Courier,monospace">if-then-else</span> statement can block some other batches to determine which one can be run next. It means that parallel processing cannot be fully implemented.</li>
+<li>Try to avoid writing a heavy fragment shader. If the same data apply to all fragments, do not compute the data in the fragment shader but compute them at the CPU side and provide them as uniforms. On the other hand, whenever the data can be computed at the vertex shader, use it.</li>  
+<li>In general, the <span style="font-family: Courier New,Courier,monospace">glReadPixels()</span> function is quite slow, because it reinforces CPU-GPU synchronization, drastically decreasing the overall performance. In most cases, it is possible to obtain the desired result with the framebuffer object (FBO), avoiding the use of <span style="font-family: Courier New,Courier,monospace">glReadPixels()</span>. With FBO, you can access the pixels of the framebuffer (the output of GPU processing) through a texture object (render-to-texture). Since it uses texture data from a GPU stage to another GPU stage, CPU does not have to be synchronized. If the application must use the <span style="font-family: Courier New,Courier,monospace">glReadPixels()</span>function, use another thread to avoid blocking the main thread.</li>
+<li>With FBO, various effects can be made. Consider an application requiring a number of rendering chains for making a complex effect: A framebuffer is mapped to a texture, the texture is used to render another framebuffer, the framebuffer is mapped to another texture, and so on. This enables you to create a very complex scene, but unfortunately the rendering chain cannot be parallelized. Make the rendering chains as small as possible.</li>
+<li>According to the <a href="../app/application_n.htm#state_trans">application life-cycle</a>, the application gets the <span style="font-family: Courier New,Courier,monospace">app_pause()</span> callback when the application runs at the background. Then, you must stop calling drawcalls during the pause state. 
+<p>As presented in <a href="interactive_ui_n.htm">Interactive UI</a>, the application can control the rendering loop by using an animator internally and then stop the animator in the <span style="font-family: Courier New,Courier,monospace">app_pause()</span> callback.</p></li>
+</ol>
+
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.tizen.guides/html/native/graphics/adv_rendering_n.htm b/org.tizen.guides/html/native/graphics/adv_rendering_n.htm
new file mode 100644 (file)
index 0000000..1ac16fd
--- /dev/null
@@ -0,0 +1,321 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+  <title>Advanced Rendering</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#renderer">Sample Applications Using the Renderer Architecture</a></li>
+                       <li><a href="#framebuffer">Framebuffer Object and Render-to-texture</a></li>
+                       <li><a href="#cube">Cube Mapping</a></li>
+                       <li><a href="#normal_map">Normal Mapping with Multi-texturing</a></li>
+            </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm">OpenGL ES Tutorial</a></li>
+            </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+
+<h1>Advanced Rendering</h1>
+
+<p>This topic introduces various advanced methods for rendering.</p>
+
+<h2 id="renderer" name="renderer">Sample Applications Using the Renderer Architecture</h2>
+
+<p>In order to increase reusability, this section presents a simple OpenGL ES (GL)-based renderer and a sample view architecture based on the renderer. Its class diagram is shown in the following figure. SampleLauncher creates a sample view instance, such as TexturingView. Each sample view inherits from the SampleView class, which creates the GLView and BasicRenderer instances.</p>
+
+<p class="figure">Figure: Class diagram for sample views and renderer</p> 
+<p align="center"><img alt="Class diagram for sample views and renderer" src="../../images/adv_render_class.png" /></p> 
+
+<p>The callback functions for GLView are registered as presented in <a href="creating_opengles_n.htm">Creating OpenGL ES Applications</a>. At the initialization stage, the sample view uses the FileLoader class to read the resource files, such as shaders, 3D objects, and texture images, from the Tizen application resource file path. These data are passed to BasicRenderer. At the initialization stage when the <span style="font-family: Courier New,Courier,monospace">init_glview()</span> callback is invoked, BasicRenderer uses the shader code and BasicShader to create, compile, and link the program object. </p>
+<p>In addition to BasicShader, BasicRenderer uses, for example, BasicCamera, vertex array, and texture object ID, for rendering a scene. When rendering is requested by the sample view, BasicRenderer initializes color and depth buffers through the <span style="font-family: Courier New,Courier,monospace">glClear()</span> function, and then computes many data needed for rendering, such as world, view, and projection matrices. These are transferred to BasicShader, which invokes the <span style="font-family: Courier New,Courier,monospace">glUniformXXX()</span> function to pass them to the current program object. Finally, the <span style="font-family: Courier New,Courier,monospace">glDrawElements()</span> function is invoked.</p> 
+<p>For handling texture images, the sample uses the TexData class. The sample application creates a TexData instance and passes it to FileLoader together with the file name of the texture image. Then, FileLoader stores the decoded pixel data into the TexData instance. When the TexData instance is given to BasicRender, GL functions, such as <span style="font-family: Courier New,Courier,monospace">glGenTexture()</span> and <span style="font-family: Courier New,Courier,monospace">glTexImage2D()</span>, are invoked. After the texture object is created and sampler uniforms, such as <span style="font-family: Courier New,Courier,monospace">sampler2D</span> and <span style="font-family: Courier New,Courier,monospace">samplerCube</span>, are passed to the fragment shader, texturing can be done.</p>
+<p>For convenience, use the OpenGL mathematics library, GLM. GLM is a header only C++ mathematics library for graphics software based on the OpenGL shading language (GLSL) specification. GLM provides classes and functions designed and implemented with the same naming conventions and functionalities as in GLSL.</p>
+
+<h2 id="framebuffer" name="framebuffer">Framebuffer Object and Render-to-texture</h2>
+
+<p>In Tizen, the drawing surface is created by GLView. To render a scene, GL receives this surface, which is called &#39;on-screen buffer&#39;. For simple applications, the on-screen-buffer alone is sufficient. However, if the application needs to render to a texture, for example, an &#39;off-screen-buffer&#39; is helpful as it can be used as a texture. In GL, the Framebuffer Object (FBO) can be an &#39;off-screen-buffer&#39; and also supports &#39;render to texture.&#39;</p>
+<p>GL provides functions to generate, bind, and configure an FBO. As shown in the following figure, the FBO consists of color, depth, and stencil attachments. It can be used as a texture by binding a texture object to its color or depth attachment point. On the other hand, GL supports a renderbuffer object, which is a 2D image buffer and can be bound to color, depth or stencil attachment point. FBO is useful for environment mapping, shadow mapping, post-processing and effects, including, for example, motion blur.</p>
+
+<p class="figure">Figure: Framebuffer, renderbuffer, and texture objects</p> 
+<p align="center"><img alt="Framebuffer, renderbuffer, and texture objects" src="../../images/adv_render_framebuffer.png" /></p> 
+
+<p>FBO is defined as follows:</p> 
+
+<ol>
+<li>A texture or renderbuffer object is generated using the <span style="font-family: Courier New,Courier,monospace">glGenTextures()</span> or <span style="font-family: Courier New,Courier,monospace">glGenRenderbuffers()</span> function.</li> 
+<li>Binding is made using the <span style="font-family: Courier New,Courier,monospace">glBindTexture()</span> or <span style="font-family: Courier New,Courier,monospace">glBindRenderbuffer()</span> function before being attached to the FBO.</li> 
+<li>The <span style="font-family: Courier New,Courier,monospace">glTexParameteri()</span> or <span style="font-family: Courier New,Courier,monospace">glRenderbufferStorage()</span> function is called to specify the properties of the object.</li> 
+<li>The <span style="font-family: Courier New,Courier,monospace">glFramebufferRenderbuffer()</span> or <span style="font-family: Courier New,Courier,monospace">glFramebufferTexture2D()</span> function is invoked to attach the object to the FBO.</li>
+</ol>
+
+<p>The following code creates an FBO as an &#39;off-screen-buffer&#39; that enables render-to-texture:</p>
+
+<pre class="prettyprint">
+// This function shows how to create new framebuffer object
+// with texture color buffer and depth render buffer 
+// To render a texture, bind framebuffer to &#39;newFbo&#39; using
+// glBindeFramebuffer() and make a drawcall. Then, just 
+// use &#39;colorTex&#39; as a general texture
+// This function does not make a stencil buffer
+// To use stencil buffer for off-screen-buffer, make another
+// renderbuffer object and attach to framebuffer using
+// glFramebufferRenderbuffer()
+void 
+createFbo() 
+{
+&nbsp;&nbsp;&nbsp;GLuint colorTex, depthRbo, newFbo;
+
+&nbsp;&nbsp;&nbsp;// Size of texture and renderbuffer object
+&nbsp;&nbsp;&nbsp;// Check whether GL_MAX_RENDERBUFFER_SIZE &gt;= width and height
+&nbsp;&nbsp;&nbsp;// using glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, &amp;maxSize)
+&nbsp;&nbsp;&nbsp;GLint  texWidth = 256, texHeight = 256;
+
+&nbsp;&nbsp;&nbsp;// Generate texture object
+&nbsp;&nbsp;&nbsp;glGenTextures(1, &amp;colorTex);
+&nbsp;&nbsp;&nbsp;glBindTexture(GL_TEXTURE_2D, colorTex);
+&nbsp;&nbsp;&nbsp;glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;texWidth, texHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+
+&nbsp;&nbsp;&nbsp;// Set texture wrapping and filtering mode
+&nbsp;&nbsp;&nbsp;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+&nbsp;&nbsp;&nbsp;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+&nbsp;&nbsp;&nbsp;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+&nbsp;&nbsp;&nbsp;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+&nbsp;&nbsp;&nbsp;// Generate renderbuffer object
+&nbsp;&nbsp;&nbsp;glGenRenderbuffers(1, &amp;depthRbo);
+&nbsp;&nbsp;&nbsp;glBindRenderbuffer(GL_RENDERBUFFER, depthRbo);
+&nbsp;&nbsp;&nbsp;glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16,  
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;texWidth, texWidth); // 16-bit depthbuffer
+
+&nbsp;&nbsp;&nbsp;// Generate framebuffer object and bind texture and renderbuffer object to attachment points
+&nbsp;&nbsp;&nbsp;glGenFramebuffers(1, &amp;newFbo);
+&nbsp;&nbsp;&nbsp;glBindFramebuffer(GL_FRAMEBUFFER, newFbo);
+&nbsp;&nbsp;&nbsp;glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_TEXTURE_2D, colorTex, 0);
+&nbsp;&nbsp;&nbsp;glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_RENDERBUFFER, depthRbo);
+
+&nbsp;&nbsp;&nbsp;// Check for framebuffer complete
+&nbsp;&nbsp;&nbsp;if (glCheckFramebufferStatus(GL_FRAMEBUFFER) 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!= GL_FRAMEBUFFER_COMPLETE) 
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;FrameBufferObject is not complete!\n&quot;);
+&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;glBindFramebuffer(GL_FRAMEBUFFER, 0);
+}
+</pre>
+
+<h2 id="cube" name="cube">Cube Mapping</h2>
+
+<p><strong>Environment mapping</strong> is a technique to simulate a shiny object reflecting its surrounding environment, as shown in the following figure. Among several implementations of environment mapping, the most popular is <strong>cube mapping</strong>. It uses a <strong>cube map</strong> composed of 6 square image textures. The images are textured to the surface of the shiny object.</p>
+
+<p class="figure">Figure: Cube mapping example</p> 
+<p align="center"><img alt="Cube mapping example" src="../../images/adv_render_cube.png" /></p>  
+
+
+<p>A cube map is created by positioning a camera at the center of the object and rendering along each positive/negative principal axis directions using a 90-degree field of view. The following figure shows how a cube map texture is composed. For a static environment, this is made at the preprocessing stage.</p>
+
+<p class="figure">Figure: Composition of the cubemap texture</p> 
+<p align="center"><img alt="Composition of the cubemap texture" src="../../images/adv_render_cube_composition.png" /></p>  
+
+
+<p>The <a href="texturing_n.htm">Texturing</a> topic presents how to create texture objects using GL APIs. For using a cube map texture, provide <span style="font-family: Courier New,Courier,monospace">GL_TEXTURE_CUBE_MAP</span> instead of <span style="font-family: Courier New,Courier,monospace">GL_TEXTURE_2D</span> for the <span style="font-family: Courier New,Courier,monospace">glGenTexture()</span> and <span style="font-family: Courier New,Courier,monospace">glBindTexture()</span> functions.</p> 
+<p>The following code creates a cube map texture for environment mapping:</p>
+<pre class="prettyprint">
+void 
+ImlRenderer::CreateCubeTex(const TexData *cubeTex, GLuint &amp;target) 
+{
+&nbsp;&nbsp;&nbsp;glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+&nbsp;&nbsp;&nbsp;checkGlError(&quot;glPixelStorei&quot;);
+&nbsp;&nbsp;&nbsp;glGenTextures(1, &amp;target);
+&nbsp;&nbsp;&nbsp;checkGlError(&quot;glGenTextures&quot;);
+
+&nbsp;&nbsp;&nbsp;glBindTexture(GL_TEXTURE_CUBE_MAP, target);
+&nbsp;&nbsp;&nbsp;checkGlError(&quot;glBindTexture&quot;);
+
+&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; 6; ++i) 
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TexBuffer((GLenum)GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, cubeTex[i]);
+&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;glGenerateMipmap(GL_TEXTURE_CUBE_MAP);
+&nbsp;&nbsp;&nbsp;checkGlError(&quot;glGenerateMipmap&quot;);
+
+&nbsp;&nbsp;&nbsp;glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_LINEAR_MIPMAP_LINEAR);
+&nbsp;&nbsp;&nbsp;checkGlError(&quot;glTexParameteri&quot;);
+&nbsp;&nbsp;&nbsp;glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+&nbsp;&nbsp;&nbsp;checkGlError(&quot;glTexParameteri&quot;);
+
+&nbsp;&nbsp;&nbsp;glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_REPEAT);
+&nbsp;&nbsp;&nbsp;checkGlError(&quot;glTexParameteri&quot;);
+&nbsp;&nbsp;&nbsp;glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_REPEAT);
+&nbsp;&nbsp;&nbsp;checkGlError(&quot;glTexParameteri&quot;);
+
+&nbsp;&nbsp;&nbsp;glBindTexture(GL_TEXTURE_CUBE_MAP, 0);
+}
+
+void 
+ImlRenderer::TexBuffer(GLenum type, const TexData&amp; newTex)
+{
+&nbsp;&nbsp;&nbsp;LOGI(&quot;ImlRenderer::TexBuffer&quot;);
+
+&nbsp;&nbsp;&nbsp;glTexImage2D(type, 0, newTex.format, newTex.width, newTex.height, 0,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(GLenum)newTex.format, GL_UNSIGNED_BYTE, (void*)newTex.pixels);
+
+&nbsp;&nbsp;&nbsp;checkGlError(&quot;glTexImage2D&quot;);
+}
+</pre>
+<p>In the above code, see <span style="font-family: Courier New,Courier,monospace">GL_TEXTURE_CUBE_MAP_POSITIVE_X</span>, a parameter of the <span style="font-family: Courier New,Courier,monospace">TexBuffer()</span> function. It represents which side of the environment is contained in the cube map texture.</p>
+<p>To access the cube map texture in the fragment shader, compute a reflection vector. The viewing direction vector is reflected with respect to the normal. This vector is used as texture coordinates to fetch the cube map through the <span style="font-family: Courier New,Courier,monospace">textureCube()</span> function. The following shader code calculates the reflection vector and accesses the cube map texture:</p>
+<pre class="prettyprint">
+precision mediump float;
+
+uniform samplerCube s_texCube;
+uniform vec3 eyePos;
+
+varying vec3 v_normal;
+varying vec2 v_texCoord;
+
+void 
+main() 
+{
+&nbsp;&nbsp;&nbsp;vec3 nor = normalize(v_normal);
+&nbsp;&nbsp;&nbsp;vec3 ray = normalize(eyePos);
+
+&nbsp;&nbsp;&nbsp;vec3 reflec = 2.0 * nor * dot(nor, ray) - ray;
+&nbsp;&nbsp;&nbsp;vec4 envColor = textureCube(s_texCube, reflec);
+
+&nbsp;&nbsp;&nbsp;gl_FragColor = envColor;
+}
+</pre>
+
+<h2 id="normal_map" name="normal_map">Normal Mapping with Multi-texturing</h2>
+
+<p>A <strong>normal map</strong> is a 2D texture that stores a normal vector at each texel. The red channel represents the <span style="font-family: Courier New,Courier,monospace">x</span> component, the green channel the <span style="font-family: Courier New,Courier,monospace">y</span> component, and the blue channel the <span style="font-family: Courier New,Courier,monospace">z</span> component. This triple is scaled and biased in the shader to map to a normal, each component of which is in [-1, 1].</p> 
+<p>The normals of a normal map are defined in the <strong>tangent spaces</strong> of the object surface. In a tangent space, the Z axis corresponds to the surface normal. The left side of the following figure shows 2 tangent spaces, one defined for a surface point <span style="font-family: Courier New,Courier,monospace">p</span> and the other for another point <span style="font-family: Courier New,Courier,monospace">q</span>. Observe that the tangent spaces vary across the object surface. Assuming that a tangent space is defined for a surface point to be normal-mapped, the normal fetched from the normal map is taken as being defined in the tangent space of the point. In this respect, it is named the <strong>tangent-space normal</strong>. The tangent-space normals perturb the surface normal.</p> 
+
+<p class="figure">Figure: Tangent spaces</p> 
+<p align="center"><img alt="Tangent spaces" src="../../images/adv_render_tangent1.png" /> <img alt="Tangent spaces" src="../../images/adv_render_tangent2.png" /></p> 
+
+
+<p>The surface normal of a polygon mesh is computed per vertex at the modeling stage. It is the vertex normal. The tangent space is constructed per vertex so that its Z axis corresponds to the vertex normal, as shown in the right side of the above figure.</p> 
+<p>Three orthonormal vectors define the tangent space:</p> 
+<ul>
+<li>Vertex normal denoted by <span style="font-family: Courier New,Courier,monospace">N</span></li>
+<li>Vector denoted by <span style="font-family: Courier New,Courier,monospace">T</span> (for <strong>tangent</strong>)</li>
+<li>Vector denoted by <span style="font-family: Courier New,Courier,monospace">B</span> (for <strong>binormal</strong>)</li>
+</ul>
+<p>Tangent vectors (<span style="font-family: Courier New,Courier,monospace">T</span>) are computed in BasicRenderer. Then, <span style="font-family: Courier New,Courier,monospace">N</span> and <span style="font-family: Courier New,Courier,monospace">T</span> are passed to the vertex shader, where <span style="font-family: Courier New,Courier,monospace">B</span> is computed by taking the cross product of <span style="font-family: Courier New,Courier,monospace">N</span> and <span style="font-family: Courier New,Courier,monospace">T</span> and then a rotation matrix is constructed from the <span style="font-family: Courier New,Courier,monospace">TBN</span> vectors. This <strong>basis-change matrix</strong> converts the world space light vector into the tangent space, so that lighting is computed at the tangent space by the fragment shader.</p> 
+<p>The following vertex shader presents how to construct the basis-change matrix from the <span style="font-family: Courier New,Courier,monospace">TBN</span> vectors:</p>
+
+<pre class="prettyprint">
+uniform mat4 worldMat;
+uniform mat4 viewMat;
+uniform mat4 projMat;
+
+uniform vec3 eyePos;
+uniform vec3 lightPos;
+
+attribute vec3 position;
+attribute vec3 normal;
+attribute vec2 texCoord;
+attribute vec3 tangent;
+
+varying vec2 v_texCoord;
+varying vec3 v_lightDirTS;
+varying vec3 v_viewTS;
+
+void 
+main() 
+{
+&nbsp;&nbsp;&nbsp;vec4 world_pos = worldMat * vec4(position, 1.0);
+&nbsp;&nbsp;&nbsp;gl_Position = projMat * viewMat * world_pos;
+&nbsp;&nbsp;&nbsp;v_texCoord = texCoord;
+
+&nbsp;&nbsp;&nbsp;vec3 nor = mat3(worldMat) * normal;
+&nbsp;&nbsp;&nbsp;vec3 tan = mat3(worldMat) * normalize(tangent);
+&nbsp;&nbsp;&nbsp;vec3 bin = cross(nor, tan);
+&nbsp;&nbsp;&nbsp;mat3 worldToTangentSpace = mat3(tan.x, bin.x, nor.x,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tan.y, bin.y, nor.y,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tan.z, bin.z, nor.z);
+
+&nbsp;&nbsp;&nbsp;v_lightDirTS = worldToTangentSpace * (lightPos - world_pos.xyz) ;
+&nbsp;&nbsp;&nbsp;v_viewTS = worldToTangentSpace * (eyePos - world_pos.xyz);
+}
+</pre>
+
+<p>The fragment shader in the following example accepts the per-fragment light vector, fetches the tangent-space normal from the normal map, and computes per-fragment lighting. The result of normal mapping is shown in the following figure.</p>
+
+<pre class="prettyprint">
+precision mediump float;
+
+uniform sampler2D s_tex0;
+uniform sampler2D s_texNor;
+
+varying vec2 v_texCoord;
+varying vec3 v_lightDirTS;
+varying vec3 v_viewTS;
+
+vec3 phongLightFragNormal(vec3 Md, vec3 normal);
+
+void 
+main() 
+{
+&nbsp;&nbsp;&nbsp;vec3 md = texture2D(s_tex0, v_texCoord).xyz;
+&nbsp;&nbsp;&nbsp;vec3 tanNor = normalize(texture2D(s_texNor, v_texCoord).xyz * 2.0 - vec3(1.0));
+&nbsp;&nbsp;&nbsp;gl_FragColor = vec4(phongLightFragNormal(md, tanNor), 1.0);
+}
+</pre>
+
+<p class="figure">Figure: Normal mapping example</p> 
+<p align="center"><img alt="Normal mapping example" src="../../images/adv_render_normal_map.png" /></p>  
+
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.tizen.guides/html/native/graphics/assembly_n.htm b/org.tizen.guides/html/native/graphics/assembly_n.htm
new file mode 100644 (file)
index 0000000..52ae8b8
--- /dev/null
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+  <title>Primitive Assembly and Rasterization</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#back_face">Back Face Culling</a></li>
+                       <li><a href="#viewport">Viewport Transform</a></li>
+                       <li><a href="#rasterization">Rasterization (Scan Conversion)</a></li>
+            </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm">OpenGL ES Tutorial</a></li>
+            </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Primitive Assembly and Rasterization</h1> 
+
+<p>The vertex shader passes the clip-space vertices to the next stage named <strong>primitive assembly and rasterization</strong>. The goal of the primitive assembly is to combine the clip-space vertices into a sequence of <strong>primitives</strong>. The primitives are classified into points, lines, and triangles. Then, various operations are performed on each primitive. The operations include back-face culling, viewport transform, and scan conversion. The last operation, scan conversion, is a key in real-time graphics and is often called rasterization. The stage for primitive assembly and rasterization is hardwired, but to control the behaviors, it is necessary to understand how its substages work.</p>
+
+<h2 id="back_face">Back Face Culling</h2>
+
+<p><strong>Back faces</strong> are polygons facing away from the eye whereas polygons facing towards the eye are called <strong>front faces</strong>. In general, the front faces are to be accepted, but the back faces are discarded. The following figure compares a back face (<span style="font-family: Courier New,Courier,monospace">t<sub>1</sub></span>) and a front face (<span style="font-family: Courier New,Courier,monospace">t<sub>2</sub></span>).</p>
+
+<p class="figure">Figure: Seen from the eye position, <span style="font-family: Courier New,Courier,monospace">t<sub>1</sub></span> is a back face whereas <span style="font-family: Courier New,Courier,monospace">t<sub>2</sub></span> is a front face</p>
+<p align="center"><img src="../../images/front_back_face.png" alt="Back face and front face" /></p>
+
+<p>By default, vertices of every 3D triangle are in a counter-clockwise (CCW) order. In the above figure, for example, the vertices are ordered as (<span style="font-family: Courier New,Courier,monospace">v<sub>1</sub></span>, <span style="font-family: Courier New,Courier,monospace">v<sub>2</sub></span>, <span style="font-family: Courier New,Courier,monospace">v<sub>3</sub></span>). While maintaining the view direction in the figure, consider only the x- and y-coordinates of the vertices. Then, <span style="font-family: Courier New,Courier,monospace">t<sub>1</sub></span> and <span style="font-family: Courier New,Courier,monospace">t<sub>2</sub></span> can be illustrated as in the following figure. Observe that <span style="font-family: Courier New,Courier,monospace">t<sub>1</sub></span> (back face) has the clockwise (CW)-ordered vertices while <span style="font-family: Courier New,Courier,monospace">t<sub>2</sub></span> (front face) has the CCW-ordered vertices.</p>
+
+<p class="figure">Figure: Vertices of a 2D back face are in a clockwise order (left) and the vertices of a 2D front face are in counter-clockwise order (right)</p>
+<p align="center"><img src="../../images/2d_front_back_face.png" alt="2D back face and front face" /></p>
+
+<p>To determine whether such a projected (2D) triangle has CW- or CCW-ordered vertices, use the <strong>determinant</strong> shown below. The first row is the vector connecting <span style="font-family: Courier New,Courier,monospace">v<sub>1</sub></span> and <span style="font-family: Courier New,Courier,monospace">v<sub>2</sub></span> and the second one connects <span style="font-family: Courier New,Courier,monospace">v<sub>1</sub></span> and <span style="font-family: Courier New,Courier,monospace">v<sub>3</sub></span>. If the determinant is negative, the triangle is a back face; if positive, it is a front face.</p>
+
+<p class="figure">Figure: Example of a determinant</p>
+<p align="center"><img src="../../images/determinant.png" alt="Example of a determinant" /></p>
+
+<p>Note that back faces are not always culled, but often need to be rendered. Consider rendering a translucent sphere. For the back faces to show through the front faces, no face can be culled. On the other hand, consider culling only the front faces of a hollow sphere to obtain the cross-section view of the sphere.</p>
+<p>Face culling is disabled by default. However, it can be activated by the <span style="font-family: Courier New,Courier,monospace">glEnable(GL_CULL_FACE)</span> function. When face culling is enabled, the <span style="font-family: Courier New,Courier,monospace">glCullFace()</span> function is used to specify which face is to be culled. The parameter can be <span style="font-family: Courier New,Courier,monospace">GL_FRONT</span>, <span style="font-family: Courier New,Courier,monospace">GL_BACK</span> (default value), or <span style="font-family: Courier New,Courier,monospace">GL_FRONT_AND_BACK</span>. Then, the <span style="font-family: Courier New,Courier,monospace">glFrontFace()</span> function specifies the orientation of the front face vertices. Either <span style="font-family: Courier New,Courier,monospace">GL_CW</span> or <span style="font-family: Courier New,Courier,monospace">GL_CCW</span> is given to the <span style="font-family: Courier New,Courier,monospace">glFrontFace()</span> function. The default value is <span style="font-family: Courier New,Courier,monospace">GL_CCW</span>.</p>
+
+
+<h2 id="viewport">Viewport Transform</h2>
+
+<p>A window at the computer screen is associated with its own <strong>window space</strong>. A <strong>viewport</strong> is defined in the window space, as shown in the following figure.</p>
+
+<p class="figure">Figure: Viewport in the window space is defined by its lower left corner point (MinX, MinY), height H, width W, and the depth range [MinZ,MaxZ]</p>
+<p align="center"><img src="../../images/viewport.png" alt="Viewport" /></p>
+
+<p>A viewport is created by the <span style="font-family: Courier New,Courier,monospace">glViewport()</span> function. Then, the <span style="font-family: Courier New,Courier,monospace">glDepthRangef()</span> function is called to specify the desired depth range. The initial values for the first and second parameter are 0.0 and 1.0, respectively. The process of converting the scene object (within the 2<sup>3</sup>-sized box in the View frustrum figure) into the viewport of the window space is called <strong>viewport transform</strong>.</p>
+
+<h2 id="rasterization">Rasterization (Scan Conversion)</h2>
+
+<p>The viewport transform has converted every primitive into the window space. Considering only the x- and y-coordinates of a triangle, the last substage, rasterizer, breaks up each window-space triangle into a set of <strong>fragments</strong>.</p>
+
+<p class="figure">Figure: Fragments for a triangle are colored in yellow</p>
+<p align="center"><img src="../../images/triangle_fragments.png" alt="Fragments for a triangle are colored in yellow" /></p>
+
+<p>The per-vertex attributes are interpolated to determine the per-fragment attributes. If colors are assigned to the vertices, they are interpolated across the triangle. The following figure shows color-interpolated triangle examples.</p>
+
+<p class="figure">Figure: Color-interpolated triangles</p>
+<p align="center"><img src="../../images/triangle_color.png" alt="Color-interpolated triangles" /></p>
+
+<p>In reality, however, the per-vertex attributes rarely include colors. In general, vertex normals and texture coordinates are interpolated. The following figure visualizes the interpolated normals. These per-fragment attributes are passed to the fragment shader.</p>
+
+<p class="figure">Figure: Interpolated normals (the blue per-vertex normals are first interpolated along the green triangle edges and then interpolated along the red scanlines)</p>
+<p align="center"><img src="../../images/interpolated_normals.png" alt="Interpolated normals" /></p>
+
+         
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.tizen.guides/html/native/graphics/creating_opengles_n.htm b/org.tizen.guides/html/native/graphics/creating_opengles_n.htm
new file mode 100644 (file)
index 0000000..5bb4f23
--- /dev/null
@@ -0,0 +1,198 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+  <title>Creating OpenGL ES Applications</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm">OpenGL ES Tutorial</a></li>
+            </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Creating OpenGL ES Applications</h1>  
+
+<p>The easiest way to use the OpenGL ES API in a Tizen application is to rely on the <span style="font-family: Courier New,Courier,monospace">Elm_GLView</span> component. The <span style="font-family: Courier New,Courier,monospace">Elm_GLView</span> component is one of the Elementary UI components, which creates an OpenGL ES (GL) target surface and a context. The <span style="font-family: Courier New,Courier,monospace">Elm_GLView</span> component can be embedded in any Tizen UI application. It is basically a wrapper of <span style="font-family: Courier New,Courier,monospace">Evas_GL</span>, the GL/EGL abstraction layer of EFL. By using the <span style="font-family: Courier New,Courier,monospace">Elm_GLView</span> component, you avoid having to consider how EGL environment is coupled with the native windowing systems. Some macros provided by EFL also allow you to use GL APIs directly. In addition, the UI framework can access the surface where the GPU outputs the rendering result and make the entire scene as a combination of 2D and 3D components in a single canvas.</p>
+
+<p>The following example shows the steps to create a GL application. From now on, the <span style="font-family: Courier New,Courier,monospace">Elm_GLView</span> component is shortened to GLView.</p>
+<ol>
+<li>Create a basic application as presented in the <a href="../../../../org.tizen.gettingstarted/html/native/first_app/first_app_n.htm">HelloWorld example</a>.
+<p>The UI application&#39;s skeleton makes available the window object, which can contain the GLView component.</p></li>
+<li>Enable hardware acceleration.
+<p>To develop a GL application, call the <span style="font-family: Courier New,Courier,monospace">elm_config_accel_preference_set()</span> function  before creating the window. It makes an application use the GPU.</p>
+<p>For developing an application with Elementary, create a window with the <span style="font-family: Courier New,Courier,monospace">elm_win_util_standard_add()</span> Elementary utility function.</p>
+<pre class="prettyprint">
+Evas_Object *win;
+elm_config_accel_preference_set(&quot;opengl&quot;);
+win = elm_win_util_standard_add(name, &quot;OpenGL example&quot;);
+</pre>
+<p>You must also set hardware acceleration in the manifest file. For more information, see <a href="hw_acceleration_n.htm">Hardware Acceleration</a>.</p></li>
+<li>Initialize the GLView.
+<p>After creating the window, you can set the GLView mode with the <span style="font-family: Courier New,Courier,monospace">elm_glview_mode_set()</span> function to enable alpha channel, depth buffer, stencil buffer, MSAA, and the client-side rotation features. The following modes are supported:</p>
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">ELM_GLVIEW_ALPHA</span>: Enable the alpha channel for rendering.</li>
+<li><span style="font-family: Courier New,Courier,monospace">ELM_GLVIEW_DEPTH</span>: Enable the depth buffer for rendering.</li>
+<li><span style="font-family: Courier New,Courier,monospace">ELM_GLVIEW_STENCIL</span>: Enable the stencil buffer for rendering.</li>
+<li><span style="font-family: Courier New,Courier,monospace">ELM_GLVIEW_MULTISAMPLE_LOW</span>: Use MSAA with a minimum number of samples.</li>
+</ul>
+<p>For more information, see the <span style="font-family: Courier New,Courier,monospace">_Elm_GLView_mode</span> enumerator (in <a href="../../../../org.tizen.native.mobile.apireference/group__GLView.html#ga4d0a2281e13c66d7274987ef24e7abe7">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__GLView.html#gaabffbc1312be12b222eb67916e9645d1">wearable</a> applications).</p>
+<p>In the following example, the alpha channel and depth buffer are enabled.</p>
+<pre class="prettyprint">
+// Request a surface with alpha and a depth buffer elm_glview_mode_set(glview, ELM_GLVIEW_ALPHA | ELM_GLVIEW_DEPTH);
+</pre>
+<p>Additionally, you can select the policies for resizing and rendering. The following example shows how to decide what to do with the GL surface when the GLView component is resized. With the default <span style="font-family: Courier New,Courier,monospace">ELM_GLVIEW_RESIZE_POLICY_RECREATE</span> option, the GL surface is destroyed and created again with the new size. The resizing policy can also be set to <span style="font-family: Courier New,Courier,monospace">ELM_GLVIEW_RESIZE_POLICY_SCALE</span>. In that case, only the image object is scaled, not the underlying GL surface.</p>
+<pre class="prettyprint">
+// The resize policy tells GLView what to do with the surface when it
+// resizes. ELM_GLVIEW_RESIZE_POLICY_RECREATE tells it to
+// destroy the current surface and recreate it to the new size
+elm_glview_resize_policy_set(glview, ELM_GLVIEW_RESIZE_POLICY_RECREATE);
+</pre>
+</li>
+<li>Get the GL function pointer.
+<p>Originally, an application must call the GL APIs using the <span style="font-family: Courier New,Courier,monospace">Evas_GL</span> abstraction layer in EFL. It means that you must get a set of function pointers for abstract GL functions from the <span style="font-family: Courier New,Courier,monospace">Evas_GL</span> object and call functions through the object. This can be annoying, especially when you want to re-use GL parts implemented at other platforms. To resolve this problem, EFL provides convenient helper macros, which are defined in the <span style="font-family: Courier New,Courier,monospace">Elementary_GL_Helpers.h</span> header file. The following example shows how to use the macros.</p>
+<pre class="prettyprint">
+#include &lt;Elementary_GL_Helpers.h&gt;
+ELEMENTARY_GLVIEW_GLOBAL_DEFINE();
+
+static Evas_Object*
+add_glview(Evas_Object* parent, appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;Evas_Object* glview;
+
+&nbsp;&nbsp;&nbsp;// Create and initialize GLView
+&nbsp;&nbsp;&nbsp;glview = elm_glview_add(parent);
+
+&nbsp;&nbsp;&nbsp;// Prepare to use OpenGL ES APIs directly
+&nbsp;&nbsp;&nbsp;ELEMENTARY_GLVIEW_GLOBAL_USE(glview);
+}
+</pre>
+<p>The <span style="font-family: Courier New,Courier,monospace">ELEMENTARY_GLVIEW_GLOBAL_DEFINE()</span> and <span style="font-family: Courier New,Courier,monospace">ELEMENTARY_GLVIEW_GLOBAL_USE()</span> macros must be in the same source code. If you have a global header file in your application, the <span style="font-family: Courier New,Courier,monospace">ELEMENTARY_GLVIEW_GLOBAL_DECLARE()</span> macro can be in the header file. However, you must be very careful when using these macros. The recommended solution is to use the <span style="font-family: Courier New,Courier,monospace">ELEMENTARY_GLVIEW_USE()</span> macro in every client function. The following are some situations where you must not use the helper macros:</p>
+<ul>
+<li>When you use more than one Evas canvas at a time, such as multiple windows.</li>
+<li>If you use multiple GL APIs, such as OpenGL ES 1.1, OpenGL ES 2.0, and OpenGL ES 3.0.</li>
+<li>If you write or port a library that can be used by other applications.</li>
+</ul>
+
+<p>The helper macros must be used only for the following situations:</p>
+<ul>
+<li>When a single surface is used for GL rendering.</li>
+<li>When a single API set (either OpenGL ES 1.1, OpenGL ES 2.0, or OpenGL ES 3.0) is used. In this case, the <span style="font-family: Courier New,Courier,monospace">ELEMENTARY_GLVIEW_GLOBAL_DECLARE()</span> macro must be used in a global header for the application.</li>
+</ul>
+</li>
+<li>Set up callback functions.
+<p>When you use the GLView component, you can set up necessary callback functions, which are called in the main loop to render a scene.</p>
+<pre class="prettyprint">
+// Initialization callback
+elm_glview_init_func_set(glview, init_glview);
+// Resizing callback
+elm_glview_resize_func_set(glview, resize_glview);
+// Drawing callback
+elm_glview_render_func_set(glview, draw_glview);
+// Deletion callback
+elm_glview_del_func_set(glview, del_glview);
+</pre>
+<ol>
+<li>Set up the initialization callback.
+<p>The initialization callback is called when the GLView is created.</p>
+<pre class="prettyprint">
+// GL init callback
+static void 
+init_glview(Evas_Object *glview)
+{
+&nbsp;&nbsp;&nbsp;// Set GL state color to pink
+&nbsp;&nbsp;&nbsp;glClearColor(1.0, 0.2, 0.6, 1.0);
+
+&nbsp;&nbsp;&nbsp;// Do any form of OpenGL ES initialization here
+&nbsp;&nbsp;&nbsp;// init_shaders();
+&nbsp;&nbsp;&nbsp;// init_vertices();
+}
+</pre>
+</li>
+<li>Set up the resizing callback.
+<p>The resizing callback is called whenever the GLView component is resized. A common action is to reset the viewport. Because the GLView size can be changed by a parent container, you must set up a resizing callback and reset the viewport size with the new GLView size.</p>
+<pre class="prettyprint">
+// GLView resize callback
+static void 
+resize_glview(Evas_Object *glview)
+{
+&nbsp;&nbsp;&nbsp;int w, h;
+&nbsp;&nbsp;&nbsp;elm_glview_size_get(glview, &amp;w, &amp;h);
+&nbsp;&nbsp;&nbsp;glViewport(0, 0, w, h);
+}
+</pre>
+</li>
+<li>Set up the drawing callback.
+<p>The drawing callback is called whenever the GLView must be updated. The GL draw commands must be made here.</p>
+<pre class="prettyprint">
+// GL draw callback
+static void 
+draw_glview(Evas_Object *glview)
+{
+&nbsp;&nbsp;&nbsp;// Paint it pink
+&nbsp;&nbsp;&nbsp;glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+&nbsp;&nbsp;&nbsp;// The usual OpenGL ES draw commands come here
+&nbsp;&nbsp;&nbsp;// draw_scene();
+}
+</pre>
+</li>
+<li>Set up the deletion callback.
+<p>The deletion callback is triggered when the GLView is being destroyed. No other callback can be called on the same object afterwards.</p>
+<pre class="prettyprint">
+// GLView deletion callback
+static void 
+del_glview(Evas_Object *glview)
+{
+&nbsp;&nbsp;&nbsp;// Destroy all the OpenGL ES resources here
+&nbsp;&nbsp;&nbsp;// destroy_shaders();
+&nbsp;&nbsp;&nbsp;// destroy_objects();
+}
+</pre>
+</li>
+</ol>
+</li>
+</ol>
+
+         
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.tizen.guides/html/native/graphics/fragment_shader_n.htm b/org.tizen.guides/html/native/graphics/fragment_shader_n.htm
new file mode 100644 (file)
index 0000000..dbb777b
--- /dev/null
@@ -0,0 +1,170 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+  <title>Fragment Shader</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#phong">Phong Lighting Model</a></li>
+                       <li><a href="#shader">Fragment Shader for Lighting and Texturing</a></li>
+            </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm">OpenGL ES Tutorial</a></li>
+            </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+
+<h1>Fragment Shader</h1>
+
+<p>The fragment shader has 2 important tasks: <strong>texturing</strong> and <strong>lighting</strong>. The texturing basics are covered in <a href="texturing_n.htm">Texturing</a>, and the lighting is handled here.</p>
+<p>The inputs to the fragment shader consist of:</p> 
+
+<ul>
+<li>Varyings: Per-fragment variables, which are determined by interpolating the per-vertex output variables produced by the vertex shader</li>
+<li>Uniforms</li>
+<li>Samplers: Textures</li> 
+</ul>
+<p>The output of the fragment shader is the fragment color that is passed to the output merger.</p> 
+
+<p class="figure" id="output">Figure: Vertex and fragment shader outputs</p> 
+<p align="center"><img alt="Vertex and fragment shader outputs" src="../../images/fragment_output.png" /></p>  
+
+
+<p>The following example is a simplest fragment shader, which performs just texturing. Given an <span style="font-family: Courier New,Courier,monospace">s_tex0</span> 2D image texture and the <span style="font-family: Courier New,Courier,monospace">v_texCoord</span> interpolated texture coordinates, the shader invokes the built-in <span style="font-family: Courier New,Courier,monospace">texture2D()</span> function to determine the color to be output to the built-in <span style="font-family: Courier New,Courier,monospace">gl_FragColor</span> variable:</p>
+
+<pre class="prettyprint">
+uniform sampler2D s_tex0;
+varying vec2 v_texCoord;
+
+void 
+main() 
+{
+&nbsp;&nbsp;&nbsp;gl_FragColor = texture2D(s_tex0, v_texCoord);
+}
+</pre>
+
+<h2 id="phong" name="phong">Phong Lighting Model</h2> 
+<p>Obviously, texturing alone is never enough to make an object look realistic. You need lighting or illumination, which refers to the technique handling the interaction between light sources and objects. The most popular real-time lighting technique is based on the <strong>Phong lighting model</strong>. It is composed of diffuse, specular, ambient, and emissive terms. For the sake of simplicity, this topic presents only the diffuse term. (For more information, see <a href="https://en.wikipedia.org/wiki/Phong_reflection_model" target="_blank">Phong reflection model</a> in Wikipedia.)</p>
+<p>The diffuse term is for the reflections from ideally diffuse surfaces, which are scattered with equal intensity in all directions (see the left image in the following figure). The amount of reflection perceived by the eye is proportional to the amount of incoming light. Consider a normalized <strong>light vector</strong> (denoted by <span style="font-family: Courier New,Courier,monospace">l</span>) connecting the surface point and the light source. The amount of incoming light is inversely proportional to the angle between <span style="font-family: Courier New,Courier,monospace">l</span> and the surface normal <span style="font-family: Courier New,Courier,monospace">n</span> (as shown in the middle image), and is described as <span style="font-family: Courier New,Courier,monospace">n&#8901;l</span>. In order to avoid negative reflection, it is modified into <span style="font-family: Courier New,Courier,monospace">max(n&#8901;l, 0)</span>.</p>
+
+<p class="figure">Figure: Diffuse reflection</p> 
+<p align="center"><img alt="Diffuse reflection" src="../../images/fragment_diffuse.png" /></p>  
+
+
+<p>The reflected color of an object is determined by component-wise multiplication, as shown in the following figure. Suppose a white light source, (1,1,1). If an object lit by the light appears yellow, it means that the object reflects R and G and absorbs B. This kind of filtering can be implemented through the material parameter. For example, if it is (1,1,0), the reflected color is (1,1,1) &#8855; (1,1,0) = (1,1,0) where &#8855; is a component-wise multiplication.</p> 
+
+<p class="figure">Figure: Component-wise multiplication for diffuse color</p> 
+<p align="center"><img alt="Component-wise multiplication for diffuse color" src="../../images/fragment_diffuse_color.png" /></p> 
+
+
+<p>The diffuse term combines the intensity and color: <span style="font-family: Courier New,Courier,monospace">max(n&#8901;l, 0) s<sub>d</sub> &#8855; m<sub>d</sub></span> where <span style="font-family: Courier New,Courier,monospace">s<sub>d</sub></span> is the light source color and <span style="font-family: Courier New,Courier,monospace">m<sub>d</sub></span> is the object material color. The right side of the <a href="#output">Vertex and fragment shader outputs</a> figure shows an object lit with the diffuse term only.</p>
+
+<h2 id="shader" name="shader">Fragment Shader for Lighting and Texturing</h2>
+
+<p>The following example shows how to implement Phong lighting (with the diffuse term only) and texturing.</p> 
+<p>The vertex shader in the example computes the clip space vertex position and bypasses the texture coordinates, as usual. In addition, it outputs the &#39;world space&#39; vertex position and normal of each vertex. The <span style="font-family: Courier New,Courier,monospace">v_position</span>, <span style="font-family: Courier New,Courier,monospace">v_normal</span>, and <span style="font-family: Courier New,Courier,monospace">v_texCoord</span> output variables are interpolated for fragments and the per-fragment attributes are provided for the fragment shader.</p>
+
+<pre class="prettyprint">
+uniform mat4 viewProjMat;
+uniform mat4 worldMat;
+
+attribute vec3 position;
+attribute vec3 normal;
+attribute vec2 texCoord;
+
+varying vec3 v_position;
+varying vec3 v_normal;
+varying vec2 v_texCoord;
+
+void 
+main() 
+{
+&nbsp;&nbsp;&nbsp;gl_Position = viewProjMat * worldMat * vec4(position, 1.0);
+&nbsp;&nbsp;&nbsp;v_position = (worldMat * vec4(position, 1.0)).xyz;
+&nbsp;&nbsp;&nbsp;v_normal = mat3(worldMat) * normal;
+&nbsp;&nbsp;&nbsp;v_texCoord = texCoord;
+}
+</pre>
+
+<p>The following fragment shader obtains the object material color (<span style="font-family: Courier New,Courier,monospace">m<sub>d</sub></span>) by filtering the texture and then asks the user-defined <span style="font-family: Courier New,Courier,monospace">phongDiffuse()</span> function to compute the diffuse term. It uses the <span style="font-family: Courier New,Courier,monospace">uniform vec3 lightPos</span> for calculating the light vector <span style="font-family: Courier New,Courier,monospace">l</span> (<span style="font-family: Courier New,Courier,monospace">lightDirection</span>) and simply implements <span style="font-family: Courier New,Courier,monospace">max(n&#8901;l, 0) s<sub>d</sub> &#8855; m<sub>d</sub></span> presented in <a href="#phong">Phong Lighting Model</a>.</p> 
+
+<pre class="prettyprint">
+uniform sampler2D s_tex0;
+uniform vec3 lightPos;
+uniform vec3 Sd;
+
+varying vec3 v_position;
+varying vec3 v_normal;
+varying vec2 v_texCoord;
+
+vec3 phongDiffuse(vec3 Md); // Forward declaration
+
+void 
+main() 
+{
+&nbsp;&nbsp;&nbsp;vec3 Md = texture2D(s_tex0, v_texCoord).xyz;
+&nbsp;&nbsp;&nbsp;vec3 phongColor = phongDiffuse(Md);
+
+&nbsp;&nbsp;&nbsp;gl_FragColor = vec4(phongColor, 1.0);
+}
+
+vec3 
+phongDiffuse(vec3 Md) 
+{
+&nbsp;&nbsp;&nbsp;// Diffuse term of Phong model per fragment
+&nbsp;&nbsp;&nbsp;vec3 lightDirection = normalize(lightPos - v_position);
+&nbsp;&nbsp;&nbsp;vec3 nor = normalize(v_normal);
+
+&nbsp;&nbsp;&nbsp;// Diffuse term
+&nbsp;&nbsp;&nbsp;float Diffuse = max(dot(nor, lightDirection), 0.0);
+&nbsp;&nbsp;&nbsp;vec3 PhongDiffuse = Diffuse * Sd * Md;
+
+&nbsp;&nbsp;&nbsp;return PhongDiffuse;
+}
+</pre>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.tizen.guides/html/native/graphics/interactive_ui_n.htm b/org.tizen.guides/html/native/graphics/interactive_ui_n.htm
new file mode 100644 (file)
index 0000000..f72de02
--- /dev/null
@@ -0,0 +1,224 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+  <title>Interactive UI</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#touch">Touch Event Handling</a></li>
+                       <li><a href="#update">Automatic Update</a></li>
+                       <li><a href="#scene">Integrating 3D Scene and 2D UI Components</a></li>
+            </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm">OpenGL ES Tutorial</a></li>
+            </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+
+<h1>Interactive UI</h1>
+
+<p>The 2D canvas in Tizen (the <span style="font-family: Courier New,Courier,monospace">Evas object</span>) has been designed to draw scenes optimally. This means that when drawing a new frame, it does not always read the <span style="font-family: Courier New,Courier,monospace">Evas_Object</span> data. This mechanism can cause a problem for a 3D scene, because the 3D scene is updated by the external module, such as the GPU, and <span style="font-family: Courier New,Courier,monospace">Evas</span> does not know whether the 3D scene is updated.</p> 
+<p>To solve the problem, GLView provides the <span style="font-family: Courier New,Courier,monospace">elm_glview_changed_set()</span> function to notify Evas that the 3D scene must be updated in the next frame. The <span style="font-family: Courier New,Courier,monospace">draw_glview()</span> callback is then invoked while Evas renders the next frame. The application must call the <span style="font-family: Courier New,Courier,monospace">elm_glview_changed_set()</span> function whenever necessary:</p>
+<ul>
+<li><a href="#touch">Touch Event Handling</a> updates the scene by touch event, and you have to invoke the <span style="font-family: Courier New,Courier,monospace">elm_glview_changed_set()</span> function.</li>
+<li><a href="#update">Automatic Update</a> must be enabled to be used, and also requires calling the <span style="font-family: Courier New,Courier,monospace">elm_glview_changed_set()</span> function.</li>
+</ul>
+
+<h2 id="touch" name="touch">Touch Event Handling</h2> 
+<p>To handle touch events in Tizen, you must connect the event callback functions with <span style="font-family: Courier New,Courier,monospace">Evas_object</span>. The functions are registered by the <span style="font-family: Courier New,Courier,monospace">evas_object_event_callback_add()</span> function for a set of specific events which are already defined in EFL. To learn more about EFL event handling, see the <a href="../../../../org.tizen.ui.practices/html/native/efl/event_handling_n.htm">Event Handling</a>.</p> 
+<p>The following examples show how to register callback functions for handling touch information and rotating a cube object:</p>
+
+<ol><li>Registering callback functions
+<p>The following code shows how to add callback functions to <span style="font-family: Courier New,Courier,monospace">Evas_object</span>. The parameters, <span style="font-family: Courier New,Courier,monospace">EVAS_CALLBACK_MOUSE_DOWN</span>, <span style="font-family: Courier New,Courier,monospace">EVAS_CALLBACK_MOUSE_UP</span>, and <span style="font-family: Courier New,Courier,monospace">EVAS_CALLBACK_MOUSE_MOVE</span>, represent the specific events for which callbacks must be called. These events are defined in <span style="font-family: Courier New,Courier,monospace">Evas_Callback_Type</span>.</p>
+
+<pre class="prettyprint">
+static Evas_Object *
+add_glview(Evas_Object *parent, appdata_s *ad)
+{
+&nbsp;&nbsp;&nbsp;Evas_Object *glview;
+
+&nbsp;&nbsp;&nbsp;// Create and initialize GLView
+&nbsp;&nbsp;&nbsp;glview = elm_glview_add(parent);
+
+
+&nbsp;&nbsp;&nbsp;// Initialize elm_GLView and set the rendering callback functions
+
+&nbsp;&nbsp;&nbsp;evas_object_event_callback_add(glview, EVAS_CALLBACK_MOUSE_DOWN, mouse_down_cb, ad);
+&nbsp;&nbsp;&nbsp;evas_object_event_callback_add(glview, EVAS_CALLBACK_MOUSE_UP, mouse_up_cb, ad);
+&nbsp;&nbsp;&nbsp;evas_object_event_callback_add(glview, EVAS_CALLBACK_MOUSE_MOVE, mouse_move_cb, ad);
+}
+</pre>
+</li>
+<li>Handling touch events in callback functions
+
+<p>The following code shows how to define the registered callback functions:</p>
+<pre class="prettyprint">
+static void
+mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) 
+{
+&nbsp;&nbsp;&nbsp;appdata_s *ad = (appdata_s *) data;
+&nbsp;&nbsp;&nbsp;ad-&gt;mouse_down = EINA_TRUE;
+&nbsp;&nbsp;&nbsp;elm_glview_changed_set(obj);
+}
+
+static void
+mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) 
+{
+&nbsp;&nbsp;&nbsp;Evas_Event_Mouse_Move *ev;
+&nbsp;&nbsp;&nbsp;ev = (Evas_Event_Mouse_Move *) event_info;
+&nbsp;&nbsp;&nbsp;appdata_s *ad = (appdata_s *) data;
+
+&nbsp;&nbsp;&nbsp;float dx = 0, dy = 0;
+
+&nbsp;&nbsp;&nbsp;if (ad-&gt;mouse_down) 
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dx = ev-&gt;cur.canvas.x - ev-&gt;prev.canvas.x;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dy = ev-&gt;cur.canvas.y - ev-&gt;prev.canvas.y;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;xangle += dy;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;yangle += dx;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;elm_glview_changed_set(obj);
+}
+
+static void
+mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) 
+{
+&nbsp;&nbsp;&nbsp;appdata_s *ad = (appdata_s *) data;
+
+&nbsp;&nbsp;&nbsp;ad-&gt;mouse_down = EINA_FALSE;
+&nbsp;&nbsp;&nbsp;elm_glview_changed_set(obj);
+}
+</pre>
+
+<p>Each callback function has the <span style="font-family: Courier New,Courier,monospace">void *event_info</span> parameter in their signature. However, the parameter works differently depending on the registered events. In the <span style="font-family: Courier New,Courier,monospace">mouse_move_cb()</span> function, the void pointer <span style="font-family: Courier New,Courier,monospace">event_info</span> is cast to the <span style="font-family: Courier New,Courier,monospace">Evas_Event_Mouse_Move</span> type, which is associated with <span style="font-family: Courier New,Courier,monospace">EVAS_CALLBACK_MOUSE_MOVE</span>. Therefore, you can get the information about the screen point when the user touches the screen. Using this information, the angles, <span style="font-family: Courier New,Courier,monospace">xangle</span> and <span style="font-family: Courier New,Courier,monospace">yangle</span>, are accumulated and the accumulated data are used for calculating the rotation matrix in the <span style="font-family: Courier New,Courier,monospace">draw_glview()</span> callback functions.</p> 
+<p>Notice the <span style="font-family: Courier New,Courier,monospace">elm_glview_changed_set()</span> function. It notifies EFL that there has been a change in GLView. Then, the main loop of EFL invokes the rendering callback functions in GLView.</p></li></ol>
+
+<h2 id="update" name="update">Automatic Update</h2> 
+<p>In order to allow GLView to update scenes continuously, you must trigger the GLView rendering at every frame. The <span style="font-family: Courier New,Courier,monospace">Ecore_Animator</span> represents a method to enable the automatic update. It invokes the registered callback at every <span style="font-family: Courier New,Courier,monospace">N</span> seconds where <span style="font-family: Courier New,Courier,monospace">N</span> is the frametime interval set by the <span style="font-family: Courier New,Courier,monospace">ecore_animator_frametime_set()</span> function. Then you can call the <span style="font-family: Courier New,Courier,monospace">elm_glview_changed_set()</span> function at the animator&#39;s callback to keep the 3D scene being rendered while the animator works.</p> 
+<p>The <span style="font-family: Courier New,Courier,monospace">Ecore_Animator</span> instance can be replaced by <span style="font-family: Courier New,Courier,monospace">Ecore_Timer</span>, which produces the same result as <span style="font-family: Courier New,Courier,monospace">Ecore_Animator</span>. However, since <span style="font-family: Courier New,Courier,monospace">Ecore_Animator</span> provides more advantages in maintaining the updating loop, prefer <span style="font-family: Courier New,Courier,monospace">Ecore_Animator</span> instead of <span style="font-family: Courier New,Courier,monospace">Ecore_Timer</span>. For more information, see the Ecore Animator API (in <a href="../../../../org.tizen.native.mobile.apireference/group__Ecore__Animator__Group.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__Ecore__Animator__Group.html">wearable</a> applications).</p> 
+<p>The following example adds and deletes an animator with the callback function:</p>
+<ol><li>Adding <span style="font-family: Courier New,Courier,monospace">Ecore_Animator</span>
+<pre class="prettyprint">
+// Add an animator so that the app regularly
+// triggers updates of the GLView using elm_glview_changed_set()
+// NOTE: If you delete OpenGL ES (GL), the animator keeps running trying to access GL
+// To prevent it, delete the animator with ecore_animator_del()
+
+Ecore_Animator *ani = ecore_animator_add(anim_cb, glview);
+evas_object_data_set(glview, &quot;ani&quot;, ani);
+evas_object_event_callback_add(glview, EVAS_CALLBACK_DEL, del_anim_cb, ad);
+</pre>
+</li>
+<li>Setting up callback functions
+<pre class="prettyprint">
+static void 
+del_anim_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+&nbsp;&nbsp;&nbsp;Ecore_Animator *ani = (Ecore_Animator *)evas_object_data_get(obj, &quot;ani&quot;);
+&nbsp;&nbsp;&nbsp;ecore_animator_del(ani);
+}
+
+static Eina_Bool 
+anim_cb(void *data)
+{
+&nbsp;&nbsp;&nbsp;elm_glview_changed_set((Evas_Object *)data);
+
+&nbsp;&nbsp;&nbsp;return EINA_TRUE;
+}
+</pre></li></ol>
+
+<h2 id="scene" name="scene">Integrating 3D Scene and 2D UI Components</h2> 
+<p>GLView can be used together with Elementary UI components. The following example creates a GLView and Elementary button component together in a simple box container. It is also possible to support interactions between 2D components and 3D scene.</p>
+<pre class="prettyprint">
+// Create the box
+Evas_Object *box = elm_box_add(parent);
+
+// Set the box to vertical
+elm_box_horizontal_set(box, EINA_FALSE);
+// Box expands when its contents need more space
+evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+// Box fills the available space
+evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+// Add glview to the box container
+ad-&gt;glview = add_glview(box, ad);
+elm_box_pack_end(box, ad-&gt;glview);
+
+// Add button to the box container
+Evas_Object *button = elm_button_add(box);
+evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 1);
+elm_object_text_set(button, &quot;Reset Animation&quot;);
+evas_object_smart_callback_add(button, &quot;clicked&quot;, clicked_cb, ad);
+evas_object_show(button);
+elm_box_pack_end(box, button);
+
+static void
+clicked_cb(void *user_data, Evas_Object *obj, void *event_info) 
+{
+&nbsp;&nbsp;&nbsp;appdata_s *ad = (appdata_s *) user_data;
+
+&nbsp;&nbsp;&nbsp;// It is possible to change the 3D scene
+&nbsp;&nbsp;&nbsp;// For example, start animator to rotate the cube
+&nbsp;&nbsp;&nbsp;if (!ad-&gt;reset_anim) 
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;reset_anim = EINA_TRUE;
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Setting animation angle for 0.75 seconds
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;tic_xangle = (ad-&gt;xangle - 45.0f) / 45.0f;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;tic_yangle = (ad-&gt;yangle - 45.0f) / 45.0f;
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Add animator which calls elm_glview_changed_set() per frame
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// This rotates the object tic_x(y)angle along X(Y)-axis
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// until object reaches the initial angle
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;ani = ecore_animator_add(anim_cb, ad);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_event_callback_add(ad-&gt;glview, EVAS_CALLBACK_DEL, del_anim, ad);
+&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
index 02d6e34..436c274 100644 (file)
     </div>\r
 \r
     <div id="toc_border"><div id="toc">\r
-               <p class="toc-title">Content</p>\r
-        <ul class="toc">\r
-            <li><a href="#tizen">OpenGL ES in Tizen</a></li>\r
-            <li><a href="#glview">GLView Programming Guide</a></li>\r
-                       <li><a href="#evasgl">EvasGL Programming Guide</a></li>\r
-        </ul>\r
         <p class="toc-title">Related Info</p>\r
         <ul class="toc">\r
             <li><a href="../../../../org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm">OpenGL ES Tutorial</a></li>\r
 <div id="container"><div id="contents"><div class="content">\r
 \r
 <h1>OpenGL ES</h1>  \r
\r
-<p>The OpenGL ES overview shows the interaction among Graphics subsystems, OpenGL ES, and EGL defined by the <a href="http://www.khronos.org" target="_blank">Khronos Group</a>.</p>\r
-\r
-<p>OpenGL ES is a standard specification defining a cross-language, cross-platform OpenGL ES API for writing applications that produce 2D and 3D computer graphics. OpenGL ES 1.1, 2.0, and 3.0 are supported in Tizen 2.4.</p>\r
-\r
-<p>EGL is an adhesive layer between OpenGL ES and the underlying native platform window system. EGL communicates with the Window system to get information on the application window, creates the drawing surface, and manages rendering context and resources.</p>\r
-\r
-  <p class="figure">Figure: OpenGL ES structure</p> \r
-  <p align="center"><img alt="OpenGL ES structure" src="../../images/opengl1.png" /></p>   \r
-\r
-<h2 id="tizen" name="tizen">OpenGL ES in Tizen</h2>\r
-\r
-<p>Building an OpenGL ES application in Tizen requires knowledge about <a href="../../../../org.tizen.ui.practices/html/native/efl/guides_efl_n.htm">designing UI applications with EFL</a>.</p>\r
-\r
-<p>Tizen native applications do not depend on the Window system, because the Window system is an internal Tizen module, which can be enhanced or replaced. EFL provides a method that draws the OpenGL ES content and encapsulates the EGL and the native Window system.</p>\r
-\r
-  <p class="figure">Figure: OpenGL ES and EFL</p> \r
-  <p align="center"><img alt="OpenGL ES and EFL" src="../../images/opengl2.png" /></p>   \r
-\r
-<p>A GLView creates a drawable GL surface for the application, and sets up all the required callbacks. The application can use GLView with various UI components, such as toolbar or button.</p>\r
-\r
-<p>GLView internally uses EvasGL. It is an abstraction layer on top of EGL, which provides the necessary features for most applications in a platform-independent way. Since the goal of EvasGL is to abstract the underlying platform, only a subset of the features can be used by applications.</p>\r
-\r
-<p>Using GLView is recommended for usual OpenGL ES programs, such as 3D game applications. But if you need pbuffer surface or extension functions, you have to understand EvasGL.</p>\r
-\r
-<h3>EvasGL vs. GLView</h3>\r
-\r
-<p>While it is possible to create an OpenGL ES application by just using EvasGL, it could be difficult to comprehend due to the low-level nature of these APIs. However, it enables detailed operations.</p>\r
-\r
-<h2 id="glview" name="glview">GLView Programming Guide</h2>\r
-\r
-<h3>Setting up an OpenGL ES Surface</h3>\r
-\r
-<p>The easiest way to use OpenGL ES within a Tizen application is to rely on the GLView component.</p>\r
-\r
-<p>GLView is a simple Elementary UI component that sets up an OpenGL ES target surface and a context, and allows you to embed it in any Tizen application. GLView is basically a wrapper around EvasGL, the OpenGL ES/EGL abstraction layer of EFL.</p>\r
-\r
-<h3>Creating a Basic Application</h3>\r
-\r
-<p>Declare the global variable using <span style="font-family: Courier New,Courier,monospace">ELEMENTARY_GLVIEW_GLOBAL_DEFINE()</span>. Create a GLView object and use <span style="font-family: Courier New,Courier,monospace">ELEMENTARY_GLVIEW_GLOBAL_USE(glview)</span>. These macros help you to call GL functions directly.</p>\r
-<p>Now, you can call GL functions. For more detailed information, see the <span style="font-family: Courier New,Courier,monospace">Elementary_GL_Helpers.h</span> file.</p>\r
-\r
-<pre class="prettyprint">\r
-#include &lt;app.h&gt;\r
-#include &lt;Elementary_GL_Helpers.h&gt;\r
-\r
-// This code is to be placed at the beginning of any function using GLES 2.0 APIs\r
-// When using this macro, you can call all glFunctions without changing their code\r
-// For details, see Elementary_GL_Helpers.h\r
-\r
-ELEMENTARY_GLVIEW_GLOBAL_DEFINE()\r
-</pre>\r
-\r
-<ol>\r
-<li>Manage HW acceleration.\r
-<p>To develop a GL application, call the <span style="font-family: Courier New,Courier,monospace">elm_config_accel_preference_set()</span> function before creating a window. This makes an application to use GPU. The function is supported since Tizen 2.3.</p>\r
-<p>To use the Direct Rendering mode of EvasGL or EFL WebKit (EWK), set the same option values (depth, stencil, and MSAA) to a rendering engine and a GLView object. The EWK options are depth24 and stencil8. You can set the option values to a rendering engine using the <span style="font-family: Courier New,Courier,monospace">elm_config_accel_preference_set()</span> function and to a GLView object using the <span style="font-family: Courier New,Courier,monospace">elm_glview_mode_set()</span> function. If the GLView object option values are bigger or higher than the rendering engine&#39;s, the Direct Rendering mode is disabled or abnormal rendering occurs. These special options are supported since Tizen 2.3.1.</p>\r
-\r
-<pre class="prettyprint">\r
-static bool app_create(void *data) \r
-{\r
-&nbsp;&nbsp;&nbsp;appdata_s *ad = data;\r
-&nbsp;&nbsp;&nbsp;elm_config_accel_preference_set(&quot;gl&quot;);\r
-&nbsp;&nbsp;&nbsp;ad-&gt;win = elm_win_util_standard_add(&quot;GLView example&quot;, &quot;GLView example&quot;);\r
-&nbsp;&nbsp;&nbsp;evas_object_show(ad-&gt;win);\r
-&nbsp;&nbsp;&nbsp;ad-&gt;glview = ad-&gt;glview_create(ad-&gt;win);\r
-\r
-&nbsp;&nbsp;&nbsp;// This macro sets the global variable holding the GL API,\r
-&nbsp;&nbsp;&nbsp;// so that it is available to the application\r
-&nbsp;&nbsp;&nbsp;// Use it right after setting up the GL context object\r
-&nbsp;&nbsp;&nbsp;// For details, see Elementary_GL_Helpers.h\r
-&nbsp;&nbsp;&nbsp;ELEMENTARY_GLVIEW_GLOBAL_USE(ad-&gt;glview);\r
-&nbsp;&nbsp;&nbsp;glview_start(ad-&gt;glview);\r
-\r
-&nbsp;&nbsp;&nbsp;return true;\r
-}</pre></li>\r
-<li>Add the OpenGL ES view to the application:\r
-\r
-<pre class="prettyprint">\r
-// This is the GL initialization function\r
-static Evas_Object *glview_create(Evas_Object *win)\r
-{\r
-&nbsp;&nbsp;&nbsp;Evas_Object *glview;\r
-\r
-&nbsp;&nbsp;&nbsp;// This creates the UI component itself\r
-&nbsp;&nbsp;&nbsp;glview = elm_glview_add(win);\r
-&nbsp;&nbsp;&nbsp;elm_win_resize_object_add(win, glview);\r
-\r
-&nbsp;&nbsp;&nbsp;// Request a surface with Depth and Stencil support (default buffer sizes)\r
-&nbsp;&nbsp;&nbsp;elm_glview_mode_set(glview, ELM_GLVIEW_DEPTH | ELM_GLVIEW_STENCIL);\r
 \r
-&nbsp;&nbsp;&nbsp;// Set the basic policies to handle the view transparently\r
-&nbsp;&nbsp;&nbsp;elm_glview_resize_policy_set(glview, ELM_GLVIEW_RESIZE_POLICY_RECREATE);\r
-&nbsp;&nbsp;&nbsp;elm_glview_render_policy_set(glview, ELM_GLVIEW_RENDER_POLICY_ON_DEMAND);\r
-\r
-&nbsp;&nbsp;&nbsp;// Set the 4 main callbacks\r
-&nbsp;&nbsp;&nbsp;elm_glview_init_func_set(glview, init_gl);\r
-&nbsp;&nbsp;&nbsp;elm_glview_del_func_set(glview, del_gl);\r
-&nbsp;&nbsp;&nbsp;elm_glview_render_func_set(glview, draw_gl);\r
-&nbsp;&nbsp;&nbsp;elm_glview_resize_func_set(glview, resize_gl);\r
-\r
-&nbsp;&nbsp;&nbsp;// Finally show this view\r
-&nbsp;&nbsp;&nbsp;evas_object_size_hint_min_set(glview, 250, 250);\r
-&nbsp;&nbsp;&nbsp;evas_object_show(glview);\r
-\r
-&nbsp;&nbsp;&nbsp;return glview;\r
-}</pre>\r
-</li></ol>\r
-\r
-<h3>Setting up the Callbacks</h3>\r
-\r
-<p>To set up callbacks:</p>\r
-\r
-<ol>\r
-       <li>Callback for initialization\r
-       <p>The initialization callback is called when the GLView is created, after a valid OpenGL ES context and surface have been created. This is called from the main loop, just as the 3 other callbacks.</p>\r
-\r
-       <pre class="prettyprint">\r
-// GL Init function\r
-static void init_gl(Evas_Object *glview)\r
-{\r
-&nbsp;&nbsp;&nbsp;glClearColor(0.0, 0.0, 0.0, 1.0);\r
-&nbsp;&nbsp;&nbsp;glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);\r
-\r
-&nbsp;&nbsp;&nbsp;// Do any form of OpenGL ES initialization here\r
-&nbsp;&nbsp;&nbsp;// init_shaders();\r
-&nbsp;&nbsp;&nbsp;// init_vertices();\r
-}</pre>\r
-       </li>\r
-       <li>Callback for resizing\r
-       <p>The resize callback is called whenever the GLView component is resized. A common action to take here is to reset the viewport. Because the GLView size can be changed by a parent container, you must set a resize callback and reset the viewport size with the new GLView size.</p>\r
-\r
-       <pre class="prettyprint">\r
-// GLView resize function\r
-static void resize_gl(Evas_Object *glview)\r
-{\r
-&nbsp;&nbsp;&nbsp;int w, h;\r
-&nbsp;&nbsp;&nbsp;elm_glview_size_get(glview, &amp;w, &amp;h);\r
-&nbsp;&nbsp;&nbsp;glViewport(0, 0, w, h);\r
-}</pre>\r
-       </li>\r
-       <li>Callback for drawing\r
-       <p>The drawing callback is called whenever a new frame has to be drawn. The exact moment when this function is called depends on the policy set when calling.</p>\r
-\r
-       <pre class="prettyprint">\r
-elm_glview_render_policy_set(glview, ELM_GLVIEW_RENDER_POLICY_ON_DEMAND);</pre>\r
-\r
-       <p>Another policy is ELM_GLVIEW_POLICY_ALWAYS, which requests render always even when it is not visible. So on demand policy is probably what you are looking for. The application can now draw anything using GL primitives when this callback is triggered. All draw operations are restricted to the surface of the GLView object previously created.</p>\r
-\r
-       <pre class="prettyprint">\r
-// GL draw callback\r
-static void draw_gl(Evas_Object *glview)\r
-{\r
-&nbsp;&nbsp;&nbsp;// Paint it blue\r
-&nbsp;&nbsp;&nbsp;glClearColor(0.2, 0.2, 0.6, 1.0);\r
-&nbsp;&nbsp;&nbsp;glClear(GL_COLOR_BUFFER_BIT);\r
-\r
-&nbsp;&nbsp;&nbsp;// The usual OpenGL ES draw commands come here\r
-&nbsp;&nbsp;&nbsp;// draw_scene();\r
-}</pre>\r
-       </li>\r
-       <li>Callback for deleting\r
-       <p>The delete callback is triggered when the GLView is being destroyed, from the main loop, and no other callback can be called on the same object afterwards.</p>\r
-\r
-       <pre class="prettyprint">\r
-// Delete GLView callback\r
-static void del_gl(Evas_Object *glview)\r
-{\r
-&nbsp;&nbsp;&nbsp;// Destroy all the OpenGL ES resources here\r
-&nbsp;&nbsp;&nbsp;// destroy_shaders();\r
-&nbsp;&nbsp;&nbsp;// destroy_objects();\r
-}</pre>\r
-       </li>\r
-       <li>Add an animator.\r
-       <p>The application above is technically working but the scene does not get updated unless the frame is marked as such. Games sometimes want to use an animator to have a regular update of the scene. The following example shown the default update refresh rate.</p> \r
-       <p>The animator callback function is also triggered when the display is off. Use the <span style="font-family: Courier New,Courier,monospace">ecore_animator_freeze()</span> and <span style="font-family: Courier New,Courier,monospace">ecore_animator_thaw()</span> functions in the <span style="font-family: Courier New,Courier,monospace">app_pause_cb</span> and <span style="font-family: Courier New,Courier,monospace">app_resume_cb</span> callbacks for power saving.</p>\r
-\r
-       <pre class="prettyprint">\r
-static Eina_Bool anim_cb(void *data)\r
-{\r
-&nbsp;&nbsp;&nbsp;Evas_Object *glview = data;\r
-&nbsp;&nbsp;&nbsp;elm_glview_changed_set(glview);\r
-\r
-&nbsp;&nbsp;&nbsp;return ECORE_CALLBACK_RENEW;\r
-}\r
-\r
-static void glview_start(Evas_Object *glview)\r
-{\r
-&nbsp;&nbsp;&nbsp;ecore_animator_add(anim_cb, glview);\r
-}</pre>\r
-\r
-       <p>Any other event can be used to refresh the view, for example user input if the view need to be updated.</p>\r
-       </li>\r
-</ol>\r
-\r
-  <table class="note"> \r
-   <tbody> \r
-    <tr> \r
-     <th class="note">Note</th> \r
-    </tr> \r
-    <tr> \r
-     <td class="note">Since the Evas rendering engine uses its own GL context internally, the application has to call the gl functions inside the 4 GLView callback functions (initialization, resizing, drawing, deleting) to be guaranteed rendering correctness.</td> \r
-    </tr> \r
-   </tbody> \r
-  </table> \r
-\r
-\r
-<p>While GLView is an abstraction above EvasGL, it is possible to use EvasGL directly for more low-level and advanced features, such as:</p>\r
+<p>Today, most smart devices are equipped with Graphics Processing Units (GPU). This is the case for Tizen devices, as well. OpenGL ES is an interface to the GPU that consists of well-defined subsets of the desktop OpenGL API.</p>\r
+<p>Tizen native applications can use OpenGL ES not only for creating a 3D scene but also for a 2D scene that requires fast interaction. OpenGL ES is also good for improving performance and reducing power consumption when the native application performs computation-intensive tasks that can be run in parallel.</p>\r
+<p>Tizen 2.x almost completely supports OpenGL ES 2.0. OpenGL ES 3.0 features are supported from Tizen 2.4 onwards.</p>\r
+<p>EGL is another specification for binding OpenGL ES to the native windowing systems. To set up the EGL environment, you normally need to understand the native windowing system and EGL specification in detail. In Tizen, however, its native UI components and 2D canvas (Elementary and Evas, respectively) replace the role of EGL to provide a simple way to use OpenGL ES. To maintain the best device performance, the Tizen SDK makes the native windowing system and EGL APIs invisible.</p>\r
 \r
+<p>The OpenGL ES details are covered in the following topics:</p>\r
+<ul>\r
+<li>To set up a native application, which makes a simple 3D cube scene, see <a href="creating_opengles_n.htm">Creating OpenGL ES Applications</a>.</li>\r
+<li>To draw a 3D scene step by step through GPU pipeline stages, see:\r
 <ul>\r
-       <li>Creating new contexts</li>\r
-       <li>Creating new surfaces</li>\r
-       <li>Creating PBuffer surfaces</li>\r
-       <li>Calling extensions</li>\r
+<li><a href="polygon_mesh_n.htm">Polygon Mesh in OpenGL ES</a></li>\r
+<li><a href="vertex_shader_n.htm">Vertex Shader</a></li>\r
+<li><a href="assembly_n.htm">Primitive Assembly and Rasterization</a></li>\r
+<li><a href="texturing_n.htm">Texturing</a></li>\r
+<li><a href="fragment_shader_n.htm">Fragment Shader</a></li>\r
+<li><a href="output_merging_n.htm">Output Merging</a></li>\r
+<li><a href="interactive_ui_n.htm">Interactive UI</a></li>\r
 </ul>\r
-\r
-<p>For all those reasons, a direct access to the EvasGL object is required. When you use GLView, you can use the following code:</p>\r
-\r
-<pre class="prettyprint">\r
-Evas_GL *evgl = elm_glview_evas_gl_get(glview);\r
-// Then it is possible to call any evas_gl function with it\r
-</pre>\r
-\r
-\r
-  <table class="note"> \r
-   <tbody> \r
-    <tr> \r
-     <th class="note">Note</th> \r
-    </tr> \r
-    <tr> \r
-     <td class="note">Do not destroy the EvasGL object. Its life-cycle is defined by the GLView object.</td> \r
-    </tr> \r
-   </tbody> \r
-  </table>\r
-\r
-<h2 id="evasgl" name="evasgl">EvasGL Programming Guide</h2>\r
-\r
-<p>This guide assumes that the application uses EvasGL directly instead of using the GLView. (If the application uses a GLView, EvasGL is created internally.)</p>\r
-\r
-<p>First, you can declare the global variable using the <span style="font-family: Courier New,Courier,monospace">EVAS_GL_GLOBAL_GLES2_DEFINE()</span> macro. Then, create an EvasGL and use <span style="font-family: Courier New,Courier,monospace">EVAS_GL_GLOBAL_GLES2_USE(evasgl, evasgl context)</span>. This is similar to the GLView macro. Both macros help you to call GL functions directly.</p>\r
-\r
-<p>Now, you can call GL functions. For more detailed information, see the <span style="font-family: Courier New,Courier,monospace">Evas_GL_GLES2_Helpers.h</span> file.</p>\r
-\r
-<pre class="prettyprint">\r
-#include &lt;app.h&gt;\r
-#include &lt;Evas_GL_GLES2_Helpers.h&gt;\r
-\r
-// This code is to be placed at the beginning of any function using GLES 2.0 APIs\r
-// When using this macro, you can call all glFunctions without changing their code\r
-// For details, see Evas_GL_GLES2_Helpers.h\r
-EVAS_GL_GLOBAL_GLES2_DEFINE();\r
-</pre>\r
-\r
-<h3>Declaration of EvasGL Objects</h3>\r
-\r
-<p>This is how to define the application data structure to hold all the objects for your EvasGL application:</p>\r
-\r
-<pre class="prettyprint">\r
-typedef struct appdata \r
-{\r
-&nbsp;&nbsp;&nbsp;Evas_Object *win;\r
-&nbsp;&nbsp;&nbsp;Evas_Object *img;\r
-\r
-&nbsp;&nbsp;&nbsp;Evas_GL *evasgl;\r
-&nbsp;&nbsp;&nbsp;Evas_GL_API *glapi;\r
-&nbsp;&nbsp;&nbsp;Evas_GL_Context *ctx;\r
-&nbsp;&nbsp;&nbsp;Evas_GL_Surface *sfc;\r
-&nbsp;&nbsp;&nbsp;Evas_GL_Config *cfg;\r
-&nbsp;&nbsp;&nbsp;Evas_Coord sfc_w;\r
-&nbsp;&nbsp;&nbsp;Evas_Coord sfc_h;\r
-\r
-&nbsp;&nbsp;&nbsp;unsigned int program;\r
-&nbsp;&nbsp;&nbsp;unsigned int vtx_shader;\r
-&nbsp;&nbsp;&nbsp;unsigned int fgmt_shader;\r
-&nbsp;&nbsp;&nbsp;unsigned int vbo;\r
-} appdata_s;</pre>\r
-\r
+</li>\r
+<li>To enhance your OpenGL ES usage on Tizen devices, see:\r
 <ul>\r
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_Object *win</span>: Application window.</li>\r
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_Object *img</span>: OpenGL ES canvas.</li>\r
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_GL *evasgl</span>: EvasGL Object for rendering gl in Evas.</li>\r
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_GL_API *glapi</span>: EvasGL API object that contains the GL APIs to be used in Evas GL.</li>\r
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_GL_Context *ctx</span>: EvasGL Context object, a GL rendering context in Evas GL.</li>\r
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_GL_Surface *sfc</span>: EvasGL Surface object, a GL rendering target in Evas GL.</li>\r
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_GL_Config *cfg</span>: EvasGL Surface configuration object for surface creation.</li>\r
+<li><a href="adv_rendering_n.htm">Advanced Rendering</a></li>\r
+<li><a href="adv_performance_n.htm">Advanced Performance</a></li>\r
 </ul>\r
-\r
-<h3>Creating the Elm Window and EvasGL</h3>\r
-\r
-<p>To create the Elm window and EvasGL:</p>\r
-<ol>\r
-    <li>Manage HW acceleration.\r
-        <p>To develop a GL application, call the <span style="font-family: Courier New,Courier,monospace">elm_config_accel_preference_set()</span> function before creating a window. THis makes an application to use GPU. The function is supported since Tizen 2.3.</p>\r
-        <p>To use the Direct Rendering mode of EvasGL, set the same option values (depth, stencil, and MSAA) to a rendering engine and a <span style="font-family: Courier New,Courier,monospace">Evas_GL_Surface</span> object. You can set the option values to a rendering engine using the <span style="font-family: Courier New,Courier,monospace">elm_config_accel_preference_set()</span> function and to a <span style="font-family: Courier New,Courier,monospace">Evas_GL_Surface</span> object using the <span style="font-family: Courier New,Courier,monospace">Evas_GL_Config</span> object. If the <span style="font-family: Courier New,Courier,monospace">Evas_GL_Config</span> object option values are bigger or higher than the rendering engine&#39;s, the Direct Rendering mode is disabled or abnormal rendering occurs. These special options are supported since Tizen 2.3.1.</p>\r
-\r
-<pre class="prettyprint">\r
-Evas_Object *win;\r
-\r
-// To use OpenGL ES, the application must switch on hardware acceleration\r
-// To enable that, call elm_config_accel_preference_set() with &quot;opengl&quot;\r
-// before creating the Elm window\r
-// This function is supported since 2.3.\r
-elm_config_accel_preference_set(&quot;opengl&quot;);\r
-// Creating Elm window\r
-ad-&gt;win = elm_win_util_standard_add(&quot;Evas_GL Example&quot;, &quot;Evas_GL Example&quot;);\r
-</pre>\r
-\r
-<p>You can create your EvasGL handler using the <span style="font-family: Courier New,Courier,monospace">evas_gl_new(Evas * e)</span> function. This initializer takes as a parameter the Evas canvas on which OpenGL ES is to be used. When developing an application with Elementary, use the canvas of your window:</p>\r
-<pre class="prettyprint">ad-&gt;evasgl = evas_gl_new(evas_object_evas_get(ad-&gt;win));</pre>\r
-\r
-<p>To free the memory allocated to this handler, use the <span style="font-family: Courier New,Courier,monospace">evas_gl_free(Evas_GL *evas_gl)</span> function.</p>\r
 </li>\r
-<li>Create a surface.\r
-\r
-<p>You must allocate a new config object to fill the surface out using the <span style="font-family: Courier New,Courier,monospace">evas_gl_config_new()</span> function. As long as Evas creates a config object for the user, it takes care of the backward compatibility issue. Once you have your config object, you can specify the surface settings:</p>\r
-\r
-<pre class="prettyprint">\r
-appdata_s *ad;\r
-ad-&gt;cfg = evas_gl_config_new();\r
-ad-&gt;cfg-&gt;color_format = EVAS_GL_RGBA_8888; // Surface Color Format\r
-ad-&gt;cfg-&gt;depth_bits = EVAS_GL_DEPTH_BIT_24; // Surface Depth Format\r
-ad-&gt;cfg-&gt;stencil_bits = EVAS_GL_STENCIL_NONE; // Surface Stencil Format\r
-ad-&gt;cfg-&gt;options_bits = EVAS_GL_OPTIONS_NONE; // Configuration options (here, no extra options)\r
-</pre>\r
-\r
-<p>Once we have configured the surface behavior, we must initialize the surface using <span style="font-family: Courier New,Courier,monospace">evas_gl_surface_create(Evas_GL* evas_gl, Evas_GL_Config * cfg, int w, int h)</span>. This function takes the given Evas_GL object as the first parameter and the pixel format, and configuration of the rendering surface as the second parameter. The last two parameters are the width and height of the surface, which we recover directly from the window.</p>\r
-\r
-<pre class="prettyprint">\r
-Evas_Coord w, h;\r
-evas_object_geometry_get(ad-&gt;win, NULL, NULL, &amp;w, &amp;h);\r
-ad-&gt;sfc = evas_gl_surface_create(ad-&gt;evasgl, ad-&gt;cfg, w, h);\r
-</pre>\r
-\r
-<p>To manually delete a GL surface, use the <span style="font-family: Courier New,Courier,monospace">evas_gl_surface_destroy(Evas_GL *evas_gl, Evas_GL_Surface *surf)</span> function.</p></li>\r
-\r
-<li>Create a context.\r
-\r
-<p>Create a context for Evas_GL using the <span style="font-family: Courier New,Courier,monospace">evas_gl_context_create(Evas_GL * evas_gl, Evas_GL_Context * share_ctx)</span> function. You can merge the context with a higher context definition you must pass as a second parameter.</p>\r
-\r
-<pre class="prettyprint">\r
-ad-&gt;ctx = evas_gl_context_create(ad-&gt;evasgl, NULL);\r
-\r
-// This macro sets the global variable holding the GL API,\r
-// so that it is available to the application\r
-// Use it right after setting up the GL context object\r
-// For details, see Evas_GL_GLES2_Helpers.h\r
-EVAS_GL_GLOBAL_GLES2_USE(ad-&gt;evasgl, ad-&gt;ctx);\r
-</pre>\r
-\r
-<p>To delete the context later, use the <span style="font-family: Courier New,Courier,monospace">evas_gl_context_destroy(Evas_GL *evas_gl, Evas_GL_Context *ctx)</span> function. To delete the entire configuration object, use the <span style="font-family: Courier New,Courier,monospace">evas_gl_config_free(Evas_GL_Config *cfg)</span> function instead.</p>\r
-   </li>\r
-</ol>\r
-\r
-<h3>Getting OpenGL ES APIs</h3>\r
-\r
-<p>If you want to get the API of OpenGL ES, you can get the API for rendering OpenGL ES with the <span style="font-family: Courier New,Courier,monospace">evas_gl_api_get(Evas_GL *evas_gl_)</span>function. This function returns a structure that contains all the OpenGL ES functions you can use to render in Evas. These functions consist of all the standard OpenGL ES 2.0 functions and any extra ones Evas has decided to provide in addition. If you have your code ported to OpenGL ES 2.0, it is easy to render to Evas.</p>\r
-\r
-<p>If you already use a global macro, such as <span style="font-family: Courier New,Courier,monospace">EVAS_GL_GLOBAL_GLES2_XXX</span>, you need not get the APIs.</p>\r
-\r
-<pre class="prettyprint">\r
-ad-&gt;glapi = evas_gl_api_get(ad-&gt;evasgl);</pre>\r
-\r
-\r
-<h3>Callbacks</h3>\r
-\r
-<p>Now that we have configured the EvasGL environment, we declare a UI component in which all the OpenGL ES transformation takes place. In the example below, we selected the image component because it provides callbacks that allow us to play with the mouse events and coordinates, and we set up an image object that inherits the size of the parent window.</p>\r
-\r
-<pre class="prettyprint">\r
-ad-&gt;img = evas_object_image_filled_add(evas_object_evas_get(ad-&gt;win));</pre>\r
-\r
-<p>We define the &quot;OpenGL ES main loop&quot; function that is called every time the program attempts to have pixels from the image. We put all the OpenGL ES statements in charge of rendering the scene in this callback.</p>\r
-\r
-<pre class="prettyprint">\r
-evas_object_image_pixels_get_callback_set(ad-&gt;img, img_pixels_get_cb, ad);</pre>\r
-\r
-<p>To define a function that takes care of the drawing using EvasGL (called the OpenGL ES main loop), use:</p>\r
-\r
-<pre class="prettyprint">\r
-static void\r
-img_pixels_get_cb(void *data, Evas_Object *obj)\r
-{\r
-&nbsp;&nbsp;&nbsp;appdata_s *ad = data;\r
-&nbsp;&nbsp;&nbsp;Evas_GL_API *gl = ad-&gt;glapi;\r
-\r
-&nbsp;&nbsp;&nbsp;// Rendering process\r
-&nbsp;&nbsp;&nbsp;evas_gl_make_current(ad-&gt;evasgl, ad-&gt;sfc, ad-&gt;ctx);\r
-&nbsp;&nbsp;&nbsp;// Because the surface size can be changed, set the viewport in this callback\r
-&nbsp;&nbsp;&nbsp;gl-&gt;glViewport(0, 0, ad-&gt;sfc_w, ad-&gt;sfc_h);\r
-&nbsp;&nbsp;&nbsp;// Paint it blue\r
-&nbsp;&nbsp;&nbsp;gl-&gt;glClearColor(0.2, 0.2, 0.6, 1.0);\r
-&nbsp;&nbsp;&nbsp;gl-&gt;glClear(GL_COLOR_BUFFER_BIT);\r
-&nbsp;&nbsp;&nbsp;// The usual OpenGL ES draw commands come here\r
-&nbsp;&nbsp;&nbsp;// draw_scene();\r
-}</pre>\r
-\r
-<p>At every tick, we must set the given context as a current context for the given surface using <span style="font-family: Courier New,Courier,monospace">evas_gl_make_current(Evas_GL *evas_gl, Evas_GL_Surface *surf, Evas_GL_Context *ctx)</span>.</p>\r
-\r
-<p>You can use the <span style="font-family: Courier New,Courier,monospace">Ecore_Animator</span> to define the OpenGL ES main loop. To do so, create a callback that is called on every animation tick. This animation callback is used only to mark the image as &quot;dirty&quot;, meaning that it needs an update next time Evas renders. It calls the pixel get callback that redraws the scene.</p>\r
-\r
-<p>The animator callback function is also triggered when the display is off. Use the <span style="font-family: Courier New,Courier,monospace">ecore_animator_freeze()</span> and <span style="font-family: Courier New,Courier,monospace">ecore_animator_thaw()</span> functions in the <span style="font-family: Courier New,Courier,monospace">app_pause_cb</span> and <span style="font-family: Courier New,Courier,monospace">app_resume_cb</span> callbacks for power saving.</p>\r
-\r
-<pre class="prettyprint">\r
-static Eina_Bool\r
-animate_cb(void *data)\r
-{\r
-&nbsp;&nbsp;&nbsp;Evas_Object *img = data;\r
-&nbsp;&nbsp;&nbsp;evas_object_image_pixels_dirty_set(img, EINA_TRUE);\r
-\r
-&nbsp;&nbsp;&nbsp;return ECORE_CALLBACK_RENEW;\r
-}\r
-\r
-ecore_animator_add(animate_cb, ad-&gt;img);</pre>\r
-\r
-<p>You can define several other callbacks that have an impact on the drawing depending on the mouse, resize, and deletion events.</p>\r
-\r
-<pre class="prettyprint">\r
-evas_object_event_callback_add(ad-&gt;img, EVAS_CALLBACK_DEL, img_del_cb, ad);\r
-evas_object_event_callback_add(ad-&gt;img, EVAS_CALLBACK_MOUSE_DOWN, mouse_down_cb, ad);\r
-evas_object_event_callback_add(ad-&gt;img, EVAS_CALLBACK_MOUSE_UP, mouse_up_cb, ad);\r
-evas_object_event_callback_add(ad-&gt;img, EVAS_CALLBACK_MOUSE_MOVE, mouse_move_cb, ad);\r
-evas_object_event_callback_add(ad-&gt;win, EVAS_CALLBACK_RESIZE, win_resize_cb, ad);</pre>\r
-\r
-<p>Because the window size can be changed, you must set a resize callback for the window. In addition, you must recreate an <span style="font-family: Courier New,Courier,monospace">Evas_GL_Surface</span> in the resize callback and reset the viewport size with the new window size:</p>\r
-\r
-<pre class="prettyprint">\r
-static void\r
-win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)\r
-{\r
-&nbsp;&nbsp;&nbsp;appdata_s *ad = data;\r
-\r
-&nbsp;&nbsp;&nbsp;if (ad-&gt;sfc)\r
-&nbsp;&nbsp;&nbsp;{\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_image_native_surface_set(ad-&gt;img, NULL);\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_gl_surface_destroy(ad-&gt;evasgl, ad-&gt;sfc);\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;sfc = NULL;\r
-&nbsp;&nbsp;&nbsp;}\r
-\r
-&nbsp;&nbsp;&nbsp;evas_object_geometry_get(obj, NULL, NULL, &amp;ad-&gt;sfc_w, &amp;ad-&gt;sfc_h);\r
-&nbsp;&nbsp;&nbsp;evas_object_image_size_set(ad-&gt;img, ad-&gt;sfc_w, ad-&gt;sfc_h);\r
-&nbsp;&nbsp;&nbsp;evas_object_resize(ad-&gt;img, ad-&gt;sfc_w, ad-&gt;sfc_h);\r
-&nbsp;&nbsp;&nbsp;evas_object_show(ad-&gt;img);\r
-\r
-&nbsp;&nbsp;&nbsp;if (!ad-&gt;sfc)\r
-&nbsp;&nbsp;&nbsp;{\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Evas_Native_Surface ns;\r
-\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;sfc = evas_gl_surface_create(ad-&gt;evasgl, ad-&gt;cfg, ad-&gt;sfc_w, ad-&gt;sfc_h);\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_gl_native_surface_get(ad-&gt;evasgl, ad-&gt;sfc, &amp;ns);\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_image_native_surface_set(ad-&gt;img, &amp;ns);\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_image_pixels_dirty_set(ad-&gt;img, EINA_TRUE);\r
-&nbsp;&nbsp;&nbsp;}\r
-}</pre>\r
-\r
-<h3>Setting a Surface into the Image Object</h3>\r
-\r
-<p>We can also fill in the native Surface information from the given EvasGL surface. For example, to adapt the surface to the target image when the size of the canvas changes, use the following code.</p>\r
-\r
-<pre class="prettyprint">\r
-Evas_Native_Surface ns;\r
-evas_gl_native_surface_get(ad-&gt;evasgl, ad-&gt;sfc, &amp;ns);\r
-evas_object_image_native_surface_set(ad-&gt;img, &amp;ns);</pre>\r
+</ul>\r
 \r
+<p class="figure">Figure: OpenGL ES and EFL</p>\r
+<p align="center"><img src="../../images/opengl_es_efl.png" alt="OpenGL ES and EFL" /></p>\r
          \r
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
 <script type="text/javascript" src="../../scripts/showhide.js"></script>\r
diff --git a/org.tizen.guides/html/native/graphics/output_merging_n.htm b/org.tizen.guides/html/native/graphics/output_merging_n.htm
new file mode 100644 (file)
index 0000000..30368e7
--- /dev/null
@@ -0,0 +1,79 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+  <title>Output Merging</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#depth">Depth Buffering</a></li>
+                       <li><a href="#alpha">Alpha Blending</a></li>
+            </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm">OpenGL ES Tutorial</a></li>
+            </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+
+<h1>Output Merging</h1>
+
+<p>The fragment shader returns a colored fragment, often called the <strong>RGBAZ</strong> fragment. A (for alpha) represents the fragment&#39;s opacity whereas Z represents the depth. In the output merger, the fragment competes or combines with the pixel in the <strong>color buffer</strong> to update the pixel&#39;s color. A and Z are used in this process. In addition to the color buffer, OpenGL ES (GL) supports another buffer named <strong>depth buffer</strong> or <strong>z-buffer</strong>. It has the same resolution as the color buffer and stores the depth values of the pixels.</p> 
+
+<h2 id="depth" name="depth">Depth Buffering</h2>
+<p>In the following figure, assume that <span style="font-family: Courier New,Courier,monospace">MinZ</span> of the viewport is 0.0, <span style="font-family: Courier New,Courier,monospace">MaxZ</span> is 1.0, the red triangle&#39;s depth is 0.8, and the blue triangle&#39;s is 0.5. By calling the <span style="font-family: Courier New,Courier,monospace">glClear()</span> function once per frame, the color and depth buffers are simultaneously cleared with the default values selected by the <span style="font-family: Courier New,Courier,monospace">glClearColor()</span> and <span style="font-family: Courier New,Courier,monospace">glClearDepthf()</span> functions, respectively.</p> 
+
+<p class="figure" id="buffer">Figure: Depth buffering visualization: the rendering order is red to blue triangles</p> 
+<p align="center"><img alt="Depth buffering visualization: the rendering order is red to blue triangles" src="../../images/output_depth_buffer1.png" /> <img alt="Depth buffering visualization: the rendering order is red to blue triangles" src="../../images/output_depth_buffer2.png" /></p> 
+  
+
+<p>When a fragment at <span style="font-family: Courier New,Courier,monospace">(x,y)</span> is passed from the fragment shader, its depth value is compared with the depth buffer value at <span style="font-family: Courier New,Courier,monospace">(x,y)</span>. If the fragment has a smaller depth value, its color and depth update the color buffer and depth buffer at <span style="font-family: Courier New,Courier,monospace">(x,y)</span>, respectively. Otherwise, the fragment is discarded. The above figure shows how the depth buffer is used for filling the color buffer. This method is called <strong>depth buffering</strong> or <strong>z-buffering</strong>.</p> 
+
+<h2 id="alpha" name="alpha">Alpha Blending</h2>
+<p>Suppose that the current fragment has a smaller depth than the pixel in the color buffer and is translucent. Then, the pixel must show through the fragment. This is achieved by blending the fragment color with the pixel color. The process uses the alpha value of the fragment, which is in the range of [0,1]: 0 denotes fully transparent and 1 denotes fully opaque.</p> 
+<p>A typical blending equation is <span style="font-family: Courier New,Courier,monospace">αc<sub>f</sub> + (1-α)c<sub>p</sub></span>, where <span style="font-family: Courier New,Courier,monospace">α</span> represents the fragment&#39;s opacity, <span style="font-family: Courier New,Courier,monospace">c<sub>f</sub></span> is the fragment color, and <span style="font-family: Courier New,Courier,monospace">c<sub>p</sub></span> is the pixel color. Assume that, in the <a href="#buffer">Depth buffering visualization</a> figure, all vertices of the blue triangle have the RGBA color, (0,0,1,0.5), and those of the red triangle have (1,0,0,1). The scan conversion algorithm interpolates the RGB channels and the alpha channel in the same manner. Therefore, all fragments of the blue triangle are assigned (0,0,1,0.5), and those of the red triangle are (1,0,0,1). Then, the blue fragment is blended with the red pixel at 3 pixel positions. The blended color is (0.5,0,0.5). This process is named <strong>alpha blending</strong>.</p>
+<p>GL supports the <span style="font-family: Courier New,Courier,monospace">glBlendFunc()</span> function, where the first parameter specifies the blending coefficient for the incoming (source) fragment and the second parameter specifies the blending coefficient for the destination pixel. Many values, such as <span style="font-family: Courier New,Courier,monospace">GL_ZERO</span> and <span style="font-family: Courier New,Courier,monospace">GL_ONE</span>, can be assigned to the parameters, but <span style="font-family: Courier New,Courier,monospace">GL_SRC_ALPHA</span> best fits the incoming fragment while <span style="font-family: Courier New,Courier,monospace">GL_ONE_MINUS_SRC_ALPHA</span> best fits the destination pixel.</p>
+
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.tizen.guides/html/native/graphics/polygon_mesh_n.htm b/org.tizen.guides/html/native/graphics/polygon_mesh_n.htm
new file mode 100644 (file)
index 0000000..2d4d79b
--- /dev/null
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+  <title>Polygon Mesh in OpenGL ES</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#vertex_normals">Vertex Normals</a></li>
+                       <li><a href="#import_export">Polygon Mesh Export and Import</a></li>
+            </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm">OpenGL ES Tutorial</a></li>
+            </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Polygon Mesh in OpenGL ES</h1>  
+
+<p>In real-time applications, such as games, an object is usually represented as a <strong>polygon mesh</strong>. The only polygon that OpenGL ES (GL) supports is a triangle and because of this, a polygon mesh in GL implies a <strong>triangle mesh</strong>. Given an object, its polygon mesh can have different resolutions, as shown in the following figure.</p>
+<p>As the resolution is increased or the number of vertices increased, the polygon mesh samples the original smooth surface more accurately. However, rendering the mesh requires more time.</p>
+
+<p class="figure">Figure: Sphere surface is sampled in different resolutions</p>
+<p align="center"><img src="../../images/sphere_surface.png" alt="Sphere surface is sampled in different resolutions" /></p>
+
+<p>An intuitive way to represent a triangle mesh is to enumerate the vertices of the triangles and read 3 vertices at a time in linear order. The memory space storing the vertices is called a <strong>vertex</strong> array. The following figure shows an example of a simple 2D mesh.</p>
+
+<p class="figure">Figure: Vertex array</p>
+<p align="center"><img src="../../images/vertex_array.png" alt="Vertex array" /></p>
+
+<p>The above representation is intuitive but inefficient. It is because the vertex array contains redundant data. For example, the vertex (1,0) appears 3 times in the vertex array. A better representation is using a separate <strong>index array</strong> in addition to the vertex array, as shown in the following figure:</p>
+<ul>
+<li>Each vertex appears only once in the vertex array.</li>
+<li>3 indices per triangle are stored in the index array.</li>
+</ul>
+<p class="figure">Figure: Vertex array and index array</p>
+<p align="center"><img src="../../images/vertex_index_array.png" alt="Vertex array and index array" /></p>
+
+<p>In general, each cell of the vertex array contains not only the vertex position, but also the vertex normal, texture coordinates, and other attributes. Therefore, the vertex array storage saved by removing the duplicate data outweighs the additional storage needed for the index array.</p>
+
+<h2 id="vertex_normals">Vertex Normals</h2>
+
+<p>The vertex normals are indispensable for computing illumination, as is presented in Fragment Shader. A vertex normal is typically computed by averaging the normals of all polygons sharing the vertex, as illustrated in the following figure. On the left is a cross-section view, where a vertex is shared by 2 triangles.</p>
+<p>Vertex normals are automatically computed by graphics packages, such as 3ds Max.</p>
+
+<p class="figure">Figure: Computation of the vertex normals</p>
+<p align="center"><img src="../../images/vertex_normals.png" alt="Computation of the vertex normals" /></p>
+         
+
+<h2 id="import_export">Polygon Mesh Export and Import</h2>
+
+<p>Game objects created using off-line graphics packages are exported into files and then imported to the runtime application. In 3ds Max, for example, many file formats are supported for export. Among the popular are OBJ and FBX.</p>
+<p>The mesh shown in the following figure is a low-resolution mesh of a unit sphere. The spherical coordinates are uniformly sampled at every 45 degrees so that the mesh is composed of 26 vertices in total. 5 vertex normals are illustrated for visualization purpose.</p>
+<p class="figure">Figure: Low-resolution mesh of a unit sphere</p>
+<p align="center"><img src="../../images/low_res_sphere.png" alt="Low-resolution mesh of a unit sphere" /></p>
+
+<p>The following figure shows some fractions of the OBJ file, where v stands for vertex position, vn stands for vertex normal, and f stands for face/triangle. The first v is indexed by 1 and so is the first vn. A triangle is defined by three instances of v//vn.</p>
+<p class="figure">Figure: Fractions of an OBJ file</p>
+<p align="center"><img src="../../images/obj_fractions.png" alt="Fractions of an OBJ file" /></p>
+
+<p>The triangle mesh stored in the OBJ file is imported into the GL program to fill the vertex and index arrays. As the example mesh is composed of 48 triangles, the index array has 144 (48 times 3) elements, as shown in the following figure.</p>
+<p class="figure">Figure: Vertex and index arrays of a low-resolution sphere mesh</p>
+<p align="center"><img src="../../images/low_res_arrays.png" alt="Vertex and index arrays of a low-resolution sphere mesh" /></p>
+
+         
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.tizen.guides/html/native/graphics/texturing_n.htm b/org.tizen.guides/html/native/graphics/texturing_n.htm
new file mode 100644 (file)
index 0000000..f26f2fb
--- /dev/null
@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+  <title>Texturing</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#process">Processing Texture Coordinates</a></li>
+                       <li><a href="#filter">Texture Filtering</a></li>
+                       <li><a href="#mipmap">Mipmapping</a></li>
+                       <li><a href="#gl">Texturing in GL</a></li>
+                       <li><a href="#example">Texturing Example</a></li>
+            </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm">OpenGL ES Tutorial</a></li>
+            </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+
+<h1>Texturing</h1>
+
+<p>While the vertex shader outputs the clip space vertices, the rasterizer outputs a set of fragments at the window space. The per-fragment attributes usually include a normal and a set of texture coordinates. Using these data, the fragment shader determines the final color of each fragment. The most important things to do in the fragment shader are <strong>lighting</strong> and <strong>texturing</strong>.</p>
+<p>Before moving on to the fragment shader, consider the basics of texturing. The simplest among the various texturing methods is image texturing. An image texture is a 2D array of <strong>texels</strong> (texture elements). Each texel has a unique position. In the first of the following figures, for example, the lower-left texel&#39;s position is (0.5,0.5). For accessing a texture, you can use &#39;normalized&#39; texture coordinates (<span style="font-family: Courier New,Courier,monospace">s,t</span>) instead of the texel position (as shown in the second of the following figures).</p>
+
+<p class="figure">Figure: 2D array of texels</p> 
+<p align="center"><img alt="2D array of texels" src="../../images/texturing_texel.png" /></p>  
+
+<p class="figure">Figure: Accessing textures using normalized texture coordinates</p> 
+<p align="center"><img alt="Accessing textures using normalized texture coordinates" src="../../images/texturing_normalise.png" /></p> 
+
+
+<h2 id="process" name="process">Processing Texture Coordinates</h2>
+
+<p>The texture coordinates are assigned to the vertices of the polygon mesh. (This process is called <strong>surface parameterization</strong> or simply <strong>parameterization</strong>, and it is done by graphics packages, such as 3ds Max.) The scan conversion is also done with the texture coordinates. In the following figure, the scan conversion interpolates the per-vertex texture coordinates to determine the per-fragment texture coordinates. For example, the lower-left corner fragment is assigned the texture coordinates, (1/8,1/8). OpenGL ES (GL) simply multiplies the per-fragment texture coordinates by the texture resolution, <span style="font-family: Courier New,Courier,monospace">r<sub>x</sub></span> and <span style="font-family: Courier New,Courier,monospace">r<sub>y</sub></span>. If the resolution is 4x4, the texture coordinates, (1/8,1/8), are mapped to (0.5,0.5) and the lower-left corner texel is retrieved from the image texture.</p>
+
+<p class="figure">Figure: From the texture coordinates to the texel position</p> 
+<p align="center"><img alt="From the texture coordinates to the texel position" src="../../images/texturing_position1.png" /> <img alt="From the texture coordinates to the texel position" src="../../images/texturing_position2.png" /> <img alt="From the texture coordinates to the texel position" src="../../images/texturing_position3.png" /></p>    
+
+
+<h2 id="filter" name="filter">Texture Filtering</h2>
+<p>For a fragment located at (<span style="font-family: Courier New,Courier,monospace">x,y</span>) in the window, its texture coordinates (<span style="font-family: Courier New,Courier,monospace">s,t</span>) are mapped to (<span style="font-family: Courier New,Courier,monospace">s&#39;,t&#39;</span>) as presented above. Basically, the fragment at (<span style="font-family: Courier New,Courier,monospace">x,y</span>) is <strong>projected</strong> onto (<span style="font-family: Courier New,Courier,monospace">s&#39;,t&#39;</span>). In the contrived example given above, (<span style="font-family: Courier New,Courier,monospace">s&#39;,t&#39;</span>) exactly falls into the center of a texel. In reality, however, this rarely happens. Then, the texels around (<span style="font-family: Courier New,Courier,monospace">s&#39;,t&#39;</span>) are collected and combined to determine the texture color of the fragment. This process is called <strong>texture filtering</strong>.</p>
+
+<p>Suppose a quad composed of 2 triangles. Depending on the view, view frustum, and viewport parameters, the quad size in the window space may vary. In the following figure, the top row shows a case where the window space quad appears larger than the given image texture. Then, the texture is <strong>magnified</strong> so as to be pasted onto the quad. In contrast, the window space quad in the bottom row appears smaller than the image texture, and the texture is <strong>minified</strong>. Note that the fragments are sparsely projected onto the texture space.</p>
+<p>In the figure, the texture is depicted as a grid of dotted lines, where a texel is located in a grid cell. The gold dots represent the window space fragments projected onto the texture space.</p>
+
+<p class="figure">Figure: Magnification (top) vs. minification (bottom)</p> 
+<p align="center"><img alt="Magnification (top) vs. minification (bottom)" src="../../images/texturing_magnification.png" /></p>  
+<p align="center"><img alt="Magnification (top) vs. minification (bottom)" src="../../images/texturing_minification.png" /></p>  
+
+<h3>Filtering for Magnification</h3>
+<p>In case of magnification, you have 2 options. The first is <strong>nearest point sampling</strong>. Then, as you can see in the left example below, a block of fragments can be mapped to a single texel. Consequently, a blocky image is often produced. The second option is <strong>bilinear interpolation</strong> illustrated in the right example below. In general, bilinear interpolation is preferred to nearest point sampling.</p>
+
+<p class="figure">Figure: Nearest point sampling (left) vs. bilinear interpolation (right)</p> 
+<p align="center"><img alt="Nearest point sampling (left) vs. bilinear interpolation (right)" src="../../images/texturing_nearest.png" /> <img alt="Nearest point sampling (left) vs. bilinear interpolation (right)" src="../../images/texturing_bilinear.png" /></p>       
+
+
+<h3>Filtering for Minification</h3>
+<p>Consider the checkerboard image texture in the following figure. If all fragments are surrounded by dark-gray texels, the textured primitive appears dark gray. If all fragments are surrounded by light-gray texels, the textured primitive appears light gray.</p>
+
+<p class="figure">Figure: Minification problem</p> 
+<p align="center"><img alt="Minification problem" src="../../images/texturing_problem.png" /></p>  
+
+
+<h2 id="mipmap" name="mipmap">Mipmapping</h2>
+
+<p>The filtering for minification process discussed above has a problem, because the texture is larger than the window space primitive and therefore many texels are not involved in texture filtering. The solution is to make the texture smaller, so that all texels are involved for texture filtering. The best case is that the window space primitive and the texture have the same size.</p> 
+<p>To make the texture smaller, it is repeatedly down-sampled to a quarter size, and the colors of 2x2 neighboring texels are averaged to determine the color of a texel in the quarter texture, as shown in the following figure. Given an original texture of 2<span style="font-family: Courier New,Courier,monospace"><sup>l</sup></span>x2<span style="font-family: Courier New,Courier,monospace"><sup>l</sup></span> resolution, a texture pyramid of (<span style="font-family: Courier New,Courier,monospace">l</span> + 1) levels is constructed, where the original texture is located at level 0. The pyramid is called a <strong>mipmap</strong>.</p> 
+
+<p class="figure">Figure: Mipmap generation process</p> 
+<p align="center"><img alt="Mipmap generation process" src="../../images/texturing_mipmap1.png" /> <img alt="Mipmap generation process" src="../../images/texturing_mipmap2.png" /></p>   
+
+
+<h3>Mipmap Generation in GL</h3>
+<p>To automatically generate a mipmap, GL invokes the <span style="font-family: Courier New,Courier,monospace">glGenerateMipmap()</span> function, where the parameter can be, for example, <span style="font-family: Courier New,Courier,monospace">GL_TEXTURE_2D</span> or <span style="font-family: Courier New,Courier,monospace">GL_TEXTURE_CUBE_MAP</span> (textures in GL 2.0 come in 2 forms: 2D textures and cube map textures). Use <span style="font-family: Courier New,Courier,monospace">GL_TEXTURE_2D</span> for general image texturing.</p>
+
+<h3 id="mipmap_mini">Mipmapping for Minification</h3> 
+<p>In any given a mipmap, you must decide which level you want to use for texture filtering. Observe that a pixel (fragment) covers an area on the screen. For simplicity, consider the area as a square so that the entire screen is tiled by an array of square pixels. Then, a pixel&#39;s projection onto the texture space is not a &#39;point&#39;, but an &#39;area&#39; centered at (<span style="font-family: Courier New,Courier,monospace">s&#39;,t&#39;</span>). The projected area is called the <strong>footprint</strong> of the pixel.</p> 
+<p>As a simple example, consider a footprint that covers <span style="font-family: Courier New,Courier,monospace">m x m</span> texels of the level-0 texture. Then, the GPU computes <span style="font-family: Courier New,Courier,monospace">log<sub>2</sub>m</span>, which is denoted by &#955;. In the following figure, &#955; = log<sub>2</sub>3 &#8776; 1.585. Consider then &#8970;&#955;&#8971; and &#8968;&#955;&#8969;, which in this example are levels 1 and 2. You have 2 options:</p>
+
+<ul>
+<li>Select the level closer to &#955;. In this example, you select level 2. The selected level can be filtered either by nearest point sampling or by bilinear interpolation.
+<p>For example: Take the nearest level: <span style="font-family: Courier New,Courier,monospace">i<sub>&#955;</sub>= &#8970;&#955;+0.5&#8971;</span></p>
+<ul><li>At the level, you can take the nearest point.</li>
+<li>In contrast, you can do bilinear interpolation.</li>
+</ul>
+</li>
+<li>Consider both &#8970;&#955;&#8971; and &#8968;&#955;&#8969; and then linearly interpolate the filtering results. Of course, each level can be filtered either by nearest point sampling or by bilinear interpolation.  
+<p>For example: Take &#8970;&#955;&#8971; and &#8968;&#955;&#8969; and linearly interpolate the filtering results.</p>
+<ul><li>At each level, you can take the nearest point.</li>
+<li>In contrast, you can do bilinear interpolation.</li></ul>
+</li></ul>
+<p>Note that the last case performs 3 levels of linear interpolations. It is called <strong>trilinear interpolation</strong>.</p>
+
+<p class="figure">Figure: Selecting the mipmap levels</p> 
+<p align="center"><img alt="Selecting the mipmap levels" src="../../images/texturing_mipmap_levels.png" /></p>  
+
+<p>There is of course a third option: not to do mipmapping but to use the original image (at level 0) instead. It can be filtered either by nearest point sampling or by bilinear interpolation. Therefore, minification has six varieties in total.</p>
+
+<h2 id="gl" name="gl">Texturing in GL</h2>     
+
+<p>When an image file is to be used as a texture, it is first loaded into the GL program. Then, you must take the following steps:</p>
+
+<ol>
+<li>Use the <span style="font-family: Courier New,Courier,monospace">glGenTextures()</span> function, where the first parameter defines the number of texture objects to generate and the second parameter returns them in <span style="font-family: Courier New,Courier,monospace">textures</span>.</li>
+<li>Use the <span style="font-family: Courier New,Courier,monospace">glBindTexture()</span> function, where the first parameter specifies what the texture is used for as, for example, <span style="font-family: Courier New,Courier,monospace">GL_TEXTURE_2D</span> or <span style="font-family: Courier New,Courier,monospace">GL_TEXTURE_CUBE_MAP</span>.</li>
+<li>After a texture object is generated and bound, the image data must be loaded using the <span style="font-family: Courier New,Courier,monospace">glTexImage2D()</span> function, where the first parameter is either <span style="font-family: Courier New,Courier,monospace">GL_TEXTURE_2D</span> or one of the cube-map faces, such as <span style="font-family: Courier New,Courier,monospace">GL_TEXTURE_CUBE_MAP_POSITIVE_X</span>, the second parameter specifies the mipmap level, and the eighth parameter can be, for example, <span style="font-family: Courier New,Courier,monospace">GL_UNSIGNED_SHORT_4_4_4_4</span> or <span style="font-family: Courier New,Courier,monospace">GL_UNSIGNED_SHORT_5_6_5</span>.</li>
+<li>The GPU itself makes a choice between minification and magnification, but allows you to select what kind of filtering to use in each case. For this purpose, invoke the <span style="font-family: Courier New,Courier,monospace">glTexParameteri()</span> function. If the second parameter (parameter name) is <span style="font-family: Courier New,Courier,monospace">GL_TEXTURE_MAG_FILTER</span>, the third parameter is either <span style="font-family: Courier New,Courier,monospace">GL_NEAREST</span> or <span style="font-family: Courier New,Courier,monospace">GL_LINEAR</span>. If the second parameter is <span style="font-family: Courier New,Courier,monospace">GL_TEXTURE_MIN_FILTER</span>, the third parameter is either <span style="font-family: Courier New,Courier,monospace">GL_NEAREST_MIPMAP_NEAREST</span>, <span style="font-family: Courier New,Courier,monospace">GL_LINEAR_MIPMAP_NEAREST</span>, <span style="font-family: Courier New,Courier,monospace">GL_NEAREST_MIPMAP_LINEAR</span>, <span style="font-family: Courier New,Courier,monospace">GL_LINEAR_MIPMAP_LINEAR</span>, <span style="font-family: Courier New,Courier,monospace">GL_NEAREST</span>, or <span style="font-family: Courier New,Courier,monospace">GL_LINEAR</span>. These 6 options are those presented in <a href="#mipmap_mini">Mipmapping for Minification</a>.</li>
+</ol> 
+
+<h2 id="example" name="example">Texturing Example</h2>
+<p>In order to generate a texture in GL, you usually have to decode the image file stored in the file system. In Tizen, you can use the Evas API (in <a href="../../../../org.tizen.native.mobile.apireference/group__Evas.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__Evas.html">wearable</a> applications) to get the decoded bitmap buffer from the image file, as shown in the following example. The code creates an independent <span style="font-family: Courier New,Courier,monospace">Ecore_Evas</span> object, which contains <span style="font-family: Courier New,Courier,monospace">Evas_Object</span>. It provides a method to decode the designated image file and store the bitmap data into its own buffer. You can get the internal buffer pointer and then upload the buffer to the texture.</p>
+
+<pre class="prettyprint">
+// Create GL Texture object from image file path
+// @param[in] parent Evas object
+// @param[in] filename image file path
+// @return texture id
+unsigned int 
+create_texture(Evas_Object *parent, const char *filename) 
+{
+&nbsp;&nbsp;&nbsp;unsigned int gltex_object;
+&nbsp;&nbsp;&nbsp;int w, h;
+&nbsp;&nbsp;&nbsp;int surface_w, surface_h;
+&nbsp;&nbsp;&nbsp;evas_object_geometry_get(parent, NULL, NULL, &amp;surface_w, &amp;surface_h);
+
+&nbsp;&nbsp;&nbsp;Evas_Object *inline_buffer = elm_win_add(parent,&quot;Img Read&quot;,ELM_WIN_INLINED_IMAGE);
+&nbsp;&nbsp;&nbsp;evas_object_move(inline_buffer, 0, 0);
+&nbsp;&nbsp;&nbsp;evas_object_resize(inline_buffer, surface_w, surface_h);
+&nbsp;&nbsp;&nbsp;evas_object_show(inline_buffer);
+
+&nbsp;&nbsp;&nbsp;Evas *canvas = evas_object_evas_get(inline_buffer);
+&nbsp;&nbsp;&nbsp;Evas_Object *image = evas_object_image_add(canvas);
+
+&nbsp;&nbsp;&nbsp;char path[200];
+&nbsp;&nbsp;&nbsp;sprintf(path, &quot;%s%s&quot;, app_get_resource_path(), filename);
+&nbsp;&nbsp;&nbsp;evas_object_image_file_set(image, path, NULL);
+&nbsp;&nbsp;&nbsp;evas_object_image_size_get(image, &amp;w, &amp;h);
+&nbsp;&nbsp;&nbsp;evas_object_image_fill_set(image, 0, 0, w, h);
+&nbsp;&nbsp;&nbsp;evas_object_image_filled_set(image, EINA_TRUE);
+&nbsp;&nbsp;&nbsp;evas_object_resize(image, w, h);
+&nbsp;&nbsp;&nbsp;evas_object_show(image);
+
+&nbsp;&nbsp;&nbsp;elm_win_render(inline_buffer);
+
+&nbsp;&nbsp;&nbsp;GLubyte *pixels;
+&nbsp;&nbsp;&nbsp;pixels = (GLubyte *) evas_object_image_data_get(image, EINA_FALSE);
+
+&nbsp;&nbsp;&nbsp;glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+&nbsp;&nbsp;&nbsp;glGenTextures(1, &amp;gltex_object);
+
+&nbsp;&nbsp;&nbsp;glBindTexture(GL_TEXTURE_2D, gltex_object);
+
+&nbsp;&nbsp;&nbsp;glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA_EXT, w, h, 0, GL_BGRA_EXT,         
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_UNSIGNED_BYTE, pixels);
+
+&nbsp;&nbsp;&nbsp;glGenerateMipmap(GL_TEXTURE_2D);
+
+&nbsp;&nbsp;&nbsp;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
+&nbsp;&nbsp;&nbsp;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+
+&nbsp;&nbsp;&nbsp;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+&nbsp;&nbsp;&nbsp;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+
+&nbsp;&nbsp;&nbsp;glBindTexture(GL_TEXTURE_2D, 0);
+
+&nbsp;&nbsp;&nbsp;evas_object_del(inline_buffer);
+
+&nbsp;&nbsp;&nbsp;return gltex_object;
+}
+</pre>
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.tizen.guides/html/native/graphics/vertex_shader_n.htm b/org.tizen.guides/html/native/graphics/vertex_shader_n.htm
new file mode 100644 (file)
index 0000000..7054ca1
--- /dev/null
@@ -0,0 +1,395 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+  <title>Vertex Shader</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+               <p class="toc-title">Content</p>
+        <ul class="toc">
+            <li><a href="#object_world_space">Object Space, World Space, and World Transform</a></li>
+                       <li><a href="#view_space">View Space and View Transform</a></li>
+                       <li><a href="#view_frustum">View Frustum and Projection Transform</a></li>
+                       <li><a href="#vertex_shader">Vertex Shader Input and Output</a></li>
+                       <li><a href="#shader_program_objects">Shader and Program Objects</a></li>
+                       <li><a href="#uniforms_attributes">Uniforms and Attributes in OpenGL ES</a></li>
+                       <li><a href="#drawcalls">Drawcalls</a></li>
+                       <li><a href="#glview_example">GLView Example</a></li>
+            </ul>
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.tutorials/html/native/graphics/opengl_tutorial_n.htm">OpenGL ES Tutorial</a></li>
+            </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Vertex Shader</h1> 
+<p>The GPU rendering pipeline is split into <strong>programmable</strong> stages (vertex and fragment shaders) and <strong>hard-wired</strong> stages (&quot;primitive assembler &amp; rasterizer&quot; and &quot;output merger&quot;). </p>
+
+<p class="figure">Figure: Stages of the GPU rendering pipeline</p>
+<p align="center"><img src="../../images/gpu_stages.png" alt="Stages of the GPU rendering pipeline" /></p>
+
+<p>You have to provide programs for the vertex and fragment shaders. Without them, OpenGL ES (GL) cannot draw anything. The vertex shader operates on every vertex stored in the vertex array and performs various operations. The essential among them is applying a series of <strong>transforms</strong> to the vertices.</p>
+
+<p class="figure">Figure: Spaces and transforms for vertex shader</p>
+<p align="center"><img src="../../images/vertex_shader_spaces.png" alt="Spaces and transforms for vertex shader" /></p>
+
+<h2 id="object_world_space">Object Space, World Space, and World Transform</h2>
+
+<p>Whereas the coordinate system used for creating an object is named <strong>object space</strong>, the virtual world containing all required objects is associated with the <strong>world space</strong>. The size, position, and orientation of an object in the world space are determined by what is called <strong>world transform</strong>. (GL calls this <strong>model transform</strong>.) Its main components are scaling, translation, and rotation. A distinct object has its own world transform. The following figure shows a world-transform example.</p>
+<p>In the world space, many objects can exist. Among them, consider a teapot. In this example, its world transform is the combination of &quot;rotation about the Y axis by 90 degrees&quot; and &quot;translation along the X axis by seven units&quot;.</p>
+<p class="figure">Figure: Transformation of a teapot object</p>
+<p align="center"><img src="../../images/teapot_transformation.png" alt="Transformation of a teapot object" /></p>
+
+<h2 id="view_space">View Space and View Transform</h2>
+
+<p>To capture the world, a virtual eye or camera is defined in the world space with 3 parameters:</p>
+<ul>
+<li><strong>EYE</strong>: eye position</li>
+<li><strong>AT</strong>: reference point which the eye looks at</li>
+<li><strong>UP</strong>: view up vector describing where the top of the eye points</li>
+</ul>
+<p>The following figure shows how to create a new space, <span style="font-family: Courier New,Courier,monospace">{EYE, u, v, n}</span>, called <strong>view space</strong>.</p>
+
+<p class="figure">Figure: Computing the view space</p>
+<p align="center"><img src="../../images/view_space.png" alt="Computing the view space" /></p>
+
+<p>There are 2 coordinate systems, world space and view space. Note that a point is given different coordinates in different spaces. Suppose that, as shown in the following figure, <strong>AT</strong> is located at the teapot&#39;s mouth end (10,2,0) and <strong>EYE</strong> is at (18,8,0). Then, the teapot&#39;s mouth end has the view-space coordinates (0,0,-10) whereas its world-space coordinates are (10,2,0).</p>
+<p>The red dot is on the end of the teapot&#39;s mouth. It has been taken as <strong>AT</strong> and so its u and v coordinates are 0. If <strong>EYE</strong> is located at (18,8,0), the distance between <strong>EYE</strong> and <strong>AT</strong> is 10 and so the red dot&#39;s n coordinate is -10.</p>
+
+<p class="figure">Figure: Different coordinates in different spaces</p>
+<p align="center"><img src="../../images/coord_space.png" alt="Different coordinates in different spaces" /></p>
+
+<p>It becomes much easier to develop the rendering algorithms if all the world-space objects are newly defined in terms of the view space in the manner of the teapot&#39;s mouth end. This is done by the <strong>view transform</strong>, which is defined as a translation followed by a rotation. The following view matrix applies to all objects in the world space. </p>
+
+<p class="figure">Figure: View matrix</p>
+<p align="center"><img src="../../images/view_matrix.png" alt="View matrix" /></p>
+
+
+<h2 id="view_frustum">View Frustum and Projection Transform</h2>
+
+<p>Because the world space is no longer needed, denote the basis of the view space by <span style="font-family: Courier New,Courier,monospace">{x, y, z}</span> instead of <span style="font-family: Courier New,Courier,monospace">{u, v, n}</span> simply because <span style="font-family: Courier New,Courier,monospace">{x, y, z}</span> is more familiar. In the view space, define how much of the space to see. For this, give 4 parameters:</p>
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">fovy</span> which stands for the field of view along the Y axis</li>
+<li><span style="font-family: Courier New,Courier,monospace">aspect</span> for the field of view&#39;s aspect ratio</li>
+<li><span style="font-family: Courier New,Courier,monospace">n</span> for the distance from <strong>EYE</strong> to the &#39;near clipping plane&#39;</li>
+<li><span style="font-family: Courier New,Courier,monospace">f</span> for the distance from <strong>EYE</strong> to the &#39;far clipping plane&#39;</li>
+</ul>
+<p>This set of 4 parameters defines a truncated pyramid whose apex is located at <strong>EYE</strong>, as shown in the following figure. It is called <strong>view frustum</strong>.</p>
+
+<p class="figure">Figure: View frustum</p>
+<p align="center"><img src="../../images/view_frustum.png" alt="View frustum" /></p>
+
+<p>In the figure above, the teapot intersects the view frustum. The part of the teapot outside the view frustum needs to be <strong>clipped</strong> so that only the remaining is processed for display. Transform the view frustum to an axis-aligned box, and the transform is applied to all vertices in the view space, performing clipping with respect to the box. The transform is called projection transform. The following figure shows the result of the <strong>projection transform</strong>. The box has the dimension of 2<sup>3</sup> and its center is located at the origin. The clip space is assumed to be a left-hand coordinate system by convention.</p>
+
+<p class="figure">Figure: Projection transform M<sub>proj</sub> from the view space to the clip space</p>
+<p align="center"><img src="../../images/projection_transform.png" alt="Projection transform from the view space to the clip space" /></p>
+
+<p>The projection matrix is defined using the view frustum parameters, <span style="font-family: Courier New,Courier,monospace">fovy</span>, <span style="font-family: Courier New,Courier,monospace">aspect</span>, <span style="font-family: Courier New,Courier,monospace">n</span>, and <span style="font-family: Courier New,Courier,monospace">f</span>, as shown in the following figure.</p>
+
+<p class="figure">Figure: Projection matrix</p>
+<p align="center"><img src="../../images/projection_matrix.png" alt="Projection matrix" /></p>
+
+<h2 id="vertex_shader">Vertex Shader Input and Output</h2>
+
+<p>The vertex shader runs for each vertex of the polygon mesh. Its main inputs are attributes and uniforms:</p>
+<ul>
+<li>Attributes: Per-vertex data provided in a vertex array</li>
+<li>Uniforms: Read-only values, such as the transform matrix, to be uniformly applied to the vertices</li>
+</ul>
+<p class="figure">Figure: Input and output of the vertex shader</p>
+<p align="center"><img src="../../images/input_output_vertex.png" alt="Input and output of the vertex shader" /></p>
+
+<p>The following code shows an example vertex shader. The shader language is C-like but provides specialized types. For example, <span style="font-family: Courier New,Courier,monospace">mat4 </span> is a 4x4 matrix and <span style="font-family: Courier New,Courier,monospace">vec3</span> is a 3D vector. The following vertex shader example has 5 input values: <span style="font-family: Courier New,Courier,monospace">viewProjMat</span> and <span style="font-family: Courier New,Courier,monospace">worldMat</span> are &#39;uniforms&#39; described by the keyword uniform, whereas <span style="font-family: Courier New,Courier,monospace">position</span>, <span style="font-family: Courier New,Courier,monospace">normal</span>, and <span style="font-family: Courier New,Courier,monospace">texCoord</span> are &#39;attributes&#39; described by the keyword attribute.</p>
+<pre class="prettyprint">
+uniform mat4 viewProjMat; // 4x4 matrix for view+projection transforms
+uniform mat4 worldMat; // 4x4 matrix for world transform
+
+attribute vec3 position;
+attribute vec3 normal;
+attribute vec2 texCoord;
+
+varying vec3 v_normal;
+varying vec2 v_texCoord;
+
+void 
+main() 
+{
+&nbsp;&nbsp;&nbsp;gl_Position = viewProjMat * worldMat * vec4(position, 1.0);
+&nbsp;&nbsp;&nbsp;v_normal = mat3(worldMat) * normal;
+&nbsp;&nbsp;&nbsp;v_texCoord = texCoord;
+}
+</pre>
+<p>The output of the vertex shader must include the built-in variable, <span style="font-family: Courier New,Courier,monospace">gl_Position</span>, which stores the <strong>clip-space</strong> vertex position. This is the only required output of the vertex shader. Optional output variables are described with the keyword <span style="font-family: Courier New,Courier,monospace">varying</span>. The output usually includes vertex normal and texture coordinates. In the above example, the object-space vertex normal is transformed to the world space and output to <span style="font-family: Courier New,Courier,monospace">v_normal</span>. On the other hand, the texture coordinates, <span style="font-family: Courier New,Courier,monospace">texCoord</span>, is simply copied to <span style="font-family: Courier New,Courier,monospace">v_texCoord</span>.</p>
+
+
+<h2 id="shader_program_objects">Shader and Program Objects</h2>
+
+<p>Using a vertex or fragment shader stored in a file, create a <strong>shader object</strong>:</p>
+<ol>
+<li>Load its source code into the GL program.</li>
+<li>Create a new shader object using the <span style="font-family: Courier New,Courier,monospace">glCreateShader()</span> function, which takes either the <span style="font-family: Courier New,Courier,monospace">GL_VERTEX_SHADER</span> or <span style="font-family: Courier New,Courier,monospace">GL_FRAGMENT_SHADER</span> attribute and returns the ID of the shader object.</li>
+<li>Store the source code into the shader object using the <span style="font-family: Courier New,Courier,monospace">glShaderSource()</span> function with the vertex or fragment shader&#39;s source code and the shader object ID.</li>
+<li>Compile the shader object using the <span style="font-family: Courier New,Courier,monospace">glCompileShader()</span> function.</li>
+</ol>
+<p>Using the shader objects, create the <strong>program object</strong>:</p>
+<ol>
+<li>Use the <span style="font-family: Courier New,Courier,monospace">glCreateProgram()</span> function, which takes no parameters and simply returns the ID of a new program object.</li>
+<li>Give the shader and program object IDs to the <span style="font-family: Courier New,Courier,monospace">glAttachShader()</span> function, which attaches the shader object to the program object.</li>
+<li>Link the program object using the <span style="font-family: Courier New,Courier,monospace">glLinkProgram()</span> function.</li>
+<li>Invoke the <span style="font-family: Courier New,Courier,monospace">glUseProgram()</span> function to use the program object for rendering.</li>
+</ol>
+
+<h2 id="uniforms_attributes">Uniforms and Attributes in OpenGL ES</h2>
+
+<p>Consider a dynamic environment, where the scene objects continuously move. In the example vertex shader, worldMat must be updated per frame. On the other hand, <span style="font-family: Courier New,Courier,monospace">viewProjMat</span> must be updated if the eye moves. The GL program must update and provide them for the vertex shader. For this purpose, first find the uniform locations that have been determined during the link phase. Given a uniform name in the shader, the <span style="font-family: Courier New,Courier,monospace">glGetUniformLocation()</span> function returns its location (denoted by an integer) in the program.</p>
+<pre class="prettyprint">
+// mProgram denotes the program object
+GLint mWHandle = glGetUniformLocation(mProgram, &quot;worldMat&quot;)
+</pre>
+<p>Then, use the <span style="font-family: Courier New,Courier,monospace">glUniformMatrix4fv()</span> function to load the uniform with the updated <span style="font-family: Courier New,Courier,monospace">matrix</span>, <span style="font-family: Courier New,Courier,monospace">worldMat</span>. A list of functions for loading various uniforms is available and is collectively named <span style="font-family: Courier New,Courier,monospace">glUniformXXX()</span>, representing a set of variations including the <span style="font-family: Courier New,Courier,monospace">glUniform3f()</span> and <span style="font-family: Courier New,Courier,monospace">glUniformMatrix4x3fv()</span> functions.</p>
+
+<p>Next, consider the attributes.</p>
+<p>The vertex and index arrays for a polygon mesh are stored in the CPU memory, which is often called <strong>client memory</strong>. For rendering a mesh, make a <strong>drawcall</strong>. For every drawcall, the arrays have to be &#39;copied&#39; from the client memory to the GPU memory.</p>
+<p>Instead of resending the arrays every time a mesh is drawn, a more efficient way is to cache the data in the GPU memory. The arrays are transferred only once, and the rendering is done from the GPU memory cache. To achieve this, use <strong>vertex buffer objects</strong> (VBO).</p>
+<p>There are 2 types of buffer objects in GL:</p>
+<ul>
+<li><strong>Array buffer object</strong> represents the vertex array and is specified by <span style="font-family: Courier New,Courier,monospace">GL_ARRAY_BUFFER</span>.</li>
+<li><strong>Element array buffer object</strong> represents the index array and is specified by <span style="font-family: Courier New,Courier,monospace">GL_ELEMENT_ARRAY_BUFFER</span>.</li>
+</ul>
+
+<p>To create and bind VBOs:</p>
+<ol>
+<li>Use the <span style="font-family: Courier New,Courier,monospace">glGenBuffers()</span> function, which is asked for <span style="font-family: Courier New,Courier,monospace">n</span> buffer objects and returns them in buffers. In general, <span style="font-family: Courier New,Courier,monospace">n</span> is 2: one for vertices and the other for indices.</li>
+<li>Use the <span style="font-family: Courier New,Courier,monospace">glBindBuffer()</span> function, where the first parameter is either <span style="font-family: Courier New,Courier,monospace">GL_ARRAY_BUFFER</span> or <span style="font-family: Courier New,Courier,monospace">GL_ELEMENT_ARRAY_BUFFER</span>. This specifies what the buffer is used for. The <span style="font-family: Courier New,Courier,monospace">glBindBuffer()</span> function call creates a VBO.</li>
+<li>The buffer object is filled with data using the glBufferData() function, where the first parameter is either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER and the third parameter points to the vertex or index array.</li>
+</ol>
+<p>The GL program shown in the following example creates 2 VBOs:</p>
+<pre class="prettyprint">
+glGenBuffers(2, &amp;VBO);
+glBindBuffer(GL_ARRAY_BUFFER, // Target
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VBO[0]); // Buffer
+glBufferData(GL_ARRAY_BUFFER, // Target
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sizeof(vertices), // Size
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vertices, // Data
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_STATIC_DRAW); // Usage
+
+glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, VBO[1]);
+glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices),
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices, GL_STATIC_DRAW));
+</pre>
+<p>The vertex array is often described as an &quot;array of structures&quot;, where a structure contains a set of attributes: position, normal, and texCoord in the example shader.</p>
+<p class="figure">Figure: Array of vertex structures</p>
+<p align="center"><img src="../../images/vertex_structure_array.png" alt="Array of vertex structures" /></p>
+
+<p>Such a structure must be presented to the shader. For this purpose, the GL program first invokes the <span style="font-family: Courier New,Courier,monospace">glEnableVertexAttribArray()</span> function to enable each parameter. After that, the <span style="font-family: Courier New,Courier,monospace">glVertexAttribPointer()</span> function is called. In this function, the first parameter denotes the parameter index, the second specifies the number (1, 2, 3, or 4) of components per parameter, fifth specifies the byte distance between the consecutive parameters of the same kind, and the sixth points to the first occurrence of the parameter in bytes. The GL program shown in the following example details <span style="font-family: Courier New,Courier,monospace">position</span>, <span style="font-family: Courier New,Courier,monospace">normal</span>, and <span style="font-family: Courier New,Courier,monospace">texCoord</span> parameters.</p>
+<pre class="prettyprint">
+int stride = sizeof(VertexStruct); // VertexStruct with 3 attributes
+int offset = 0;
+
+// position attribute
+glEnableVertexAttribArray(0); // Position index = 0
+glVertexAttribPointer(0, // Index
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3, // Size
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_FLOAT, // Type
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_FALSE, stride, (GLvoid*)offset);
+
+offset += sizeof(vec3); // For accessing normal
+glEnableVertexAttribArray(1); // Normal index = 1
+glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, stride, (GLvoid*)offset);
+
+offset += sizeof(vec3); // For accessing texCoord
+glEnableVertexAttribArray(2); // texCoord index = 2
+glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, stride, (GLvoid*)offset);
+</pre>
+
+
+<h2 id="drawcalls">Drawcalls</h2>
+
+<p>All parameters and uniforms are now available. If you have a good fragment shader, you can draw a polygon mesh. For rendering a polygon mesh, you can make a drawcall. There are 2 options:</p>
+<ul>
+<li><span style="font-family: Courier New,Courier,monospace">glDrawArrays()</span> for non-indexed mesh representation</li>
+<li><span style="font-family: Courier New,Courier,monospace">glDrawElements()</span> for indexed mesh representation</li>
+</ul>
+<p>Assuming that you have only the vertex array for the low-resolution sphere, the <span style="font-family: Courier New,Courier,monospace">glDrawArrays()</span> function is invoked. In the following example, the first parameter specifies what kind of primitives to render. Valid values include, for example, <span style="font-family: Courier New,Courier,monospace">GL_POINTS</span>, GL_LINES, GL_TRIANGLES, and GL_TRIANGLE_FAN. The second parameter specifies the starting index &quot;in the vertex array&quot;. The last parameter specifies the number of vertices to be drawn.</p>
+<pre class="prettyprint">
+glDrawArrays(GL_TRIANGLES, // Mode
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0, // First
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;144); // Count
+</pre>
+
+<p>When you have both the vertex array and index array, the <span style="font-family: Courier New,Courier,monospace">glDrawElements()</span> function is invoked. The first parameter is the same as in the <span style="font-family: Courier New,Courier,monospace">glDrawArrays()</span> function. The second parameter specifies the number of elements &quot;in the index array&quot;. The third parameter specifies the type of the values in the indices. It must be <span style="font-family: Courier New,Courier,monospace">GL_UNSIGNED_BYTE</span> or <span style="font-family: Courier New,Courier,monospace">GL_UNSIGNED_SHORT</span>. The last parameter points to the offset in bytes into the storage allocated by the <span style="font-family: Courier New,Courier,monospace">glBufferData()</span> function.</p>
+<pre class="prettyprint">
+glDrawElements(GL_TRIANGLES, // Mode 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;144, // Count
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_UNSIGNED_SHORT, // Type
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0); // Indices
+</pre>
+
+
+<h2 id="glview_example">GLView Example</h2>
+
+<p>The following example code presents how to use GL APIs in the callbacks of the GLView. In the <span style="font-family: Courier New,Courier,monospace">init_glview()</span> callback function, compile and link the shaders, and create VBOs.</p>
+<pre class="prettyprint">
+// GL initialization callback
+static void 
+init_glview(Evas_Object *glview) 
+{
+&nbsp;&nbsp;&nbsp;// Set GL state color to black
+&nbsp;&nbsp;&nbsp;glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+
+&nbsp;&nbsp;&nbsp;appdata_s *ad = (appdata_s *) evas_object_data_get(glview, &quot;ad&quot;);
+
+&nbsp;&nbsp;&nbsp;if (!ad-&gt;initialized) 
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init_shader_program(ad); // Compile and link shader
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create_vbo(ad); // Create vertex buffer object
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;texture = create_texture(ad-&gt;win, &quot;tizen_noalpha.png&quot;);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glEnable(GL_DEPTH_TEST);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;initialized = EINA_TRUE;
+&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;// Initialize application variables
+}
+
+static void
+init_shader_program(appdata_s *ad) 
+{
+&nbsp;&nbsp;&nbsp;const char *p;
+
+&nbsp;&nbsp;&nbsp;p = vertex_tex_shader;
+&nbsp;&nbsp;&nbsp;ad-&gt;vtx_shader = glCreateShader(GL_VERTEX_SHADER);
+&nbsp;&nbsp;&nbsp;glShaderSource(ad-&gt;vtx_shader, 1, &amp;p, NULL);
+&nbsp;&nbsp;&nbsp;glCompileShader(ad-&gt;vtx_shader);
+
+&nbsp;&nbsp;&nbsp;p = fragment_tex_shader;
+&nbsp;&nbsp;&nbsp;ad-&gt;fgmt_shader = glCreateShader(GL_FRAGMENT_SHADER);
+&nbsp;&nbsp;&nbsp;glShaderSource(ad-&gt;fgmt_shader, 1, &amp;p, NULL);
+&nbsp;&nbsp;&nbsp;glCompileShader(ad-&gt;fgmt_shader);
+
+&nbsp;&nbsp;&nbsp;ad-&gt;program = glCreateProgram();
+&nbsp;&nbsp;&nbsp;glAttachShader(ad-&gt;program, ad-&gt;vtx_shader);
+&nbsp;&nbsp;&nbsp;glAttachShader(ad-&gt;program, ad-&gt;fgmt_shader);
+
+&nbsp;&nbsp;&nbsp;glLinkProgram(ad-&gt;program);
+
+&nbsp;&nbsp;&nbsp;ad-&gt;idx_a_position = glGetAttribLocation(ad-&gt;program, &quot;a_position&quot;);
+&nbsp;&nbsp;&nbsp;ad-&gt;idx_a_tex = glGetAttribLocation(ad-&gt;program, &quot;a_tex&quot;);
+
+&nbsp;&nbsp;&nbsp;ad-&gt;idx_wvp = glGetUniformLocation(ad-&gt;program, &quot;u_wvpMatrix&quot;);
+&nbsp;&nbsp;&nbsp;ad-&gt;idx_tex = glGetUniformLocation(ad-&gt;program, &quot;u_texSampler&quot;);
+
+&nbsp;&nbsp;&nbsp;glUseProgram(ad-&gt;program);
+}
+
+static void 
+create_vbo(appdata_s *ad) 
+{
+&nbsp;&nbsp;&nbsp;glGenBuffers(1, &amp;ad-&gt;vbo_vertex);
+&nbsp;&nbsp;&nbsp;glGenBuffers(1, &amp;ad-&gt;vbo_color);
+&nbsp;&nbsp;&nbsp;glGenBuffers(1, &amp;ad-&gt;vbo_texture);
+
+&nbsp;&nbsp;&nbsp;glBindBuffer(GL_ARRAY_BUFFER, ad-&gt;vbo_vertex);
+&nbsp;&nbsp;&nbsp;glBufferData(GL_ARRAY_BUFFER, sizeof(cube_vertices), cube_vertices, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_STATIC_DRAW);
+&nbsp;&nbsp;&nbsp;glVertexAttribPointer(ad-&gt;idx_a_position, 3, GL_FLOAT, GL_FALSE, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3 * sizeof(float), 0);
+
+&nbsp;&nbsp;&nbsp;glBindBuffer(GL_ARRAY_BUFFER, ad-&gt;vbo_texture);
+&nbsp;&nbsp;&nbsp;glBufferData(GL_ARRAY_BUFFER, sizeof(cube_texs), cube_texs, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_STATIC_DRAW);
+&nbsp;&nbsp;&nbsp;glVertexAttribPointer(ad-&gt;idx_a_tex, 2, GL_FLOAT, GL_FALSE, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 * sizeof(float), 0);
+
+&nbsp;&nbsp;&nbsp;glEnableVertexAttribArray(ad-&gt;idx_a_position);
+&nbsp;&nbsp;&nbsp;glEnableVertexAttribArray(ad-&gt;idx_a_tex);
+
+&nbsp;&nbsp;&nbsp;glGenBuffers(1, &amp;ad-&gt;vbo_index);
+&nbsp;&nbsp;&nbsp;glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ad-&gt;vbo_index);
+&nbsp;&nbsp;&nbsp;glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(cube_indices), 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cube_indices, GL_STATIC_DRAW);
+}
+</pre>
+
+<p>In the <span style="font-family: Courier New,Courier,monospace">draw_glview()</span> callback, calculate the world, view, and projection matrices and then pass the combined matrix to the vertex shader through the <span style="font-family: Courier New,Courier,monospace">glUniformXXX()</span> function. When all uniforms are passed to the shader, the GL drawcall is made.</p>
+<pre class="prettyprint">
+// GL drawing callback
+static void
+draw_glview(Evas_Object *glview) 
+{
+&nbsp;&nbsp;&nbsp;appdata_s *ad = (appdata_s *) evas_object_data_get(glview, &quot;ad&quot;);
+&nbsp;&nbsp;&nbsp;float world[16], viewproj[16];
+&nbsp;&nbsp;&nbsp;float aspect;
+
+&nbsp;&nbsp;&nbsp;if (!ad)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+
+&nbsp;&nbsp;&nbsp;init_matrix(world);
+&nbsp;&nbsp;&nbsp;init_matrix(viewproj);
+
+&nbsp;&nbsp;&nbsp;aspect = (float) ad-&gt;glview_w / (float) ad-&gt;glview_h;
+    
+&nbsp;&nbsp;&nbsp;// View matrix is the identity matrix
+&nbsp;&nbsp;&nbsp;view_set_perspective(viewproj, 60.0f, aspect, 1.0f, 20.0f);
+
+&nbsp;&nbsp;&nbsp;translate_xyz(world, 0.0f, 0.0f, -2.5f);
+&nbsp;&nbsp;&nbsp;rotate_xyz(world, ad-&gt;xangle, ad-&gt;yangle, 0.0f);
+
+&nbsp;&nbsp;&nbsp;multiply_matrix(ad-&gt;wvp, viewproj, world);
+
+&nbsp;&nbsp;&nbsp;glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+&nbsp;&nbsp;&nbsp;glUniformMatrix4fv(ad-&gt;idx_wvp, 1, GL_FALSE, ad-&gt;wvp);
+
+&nbsp;&nbsp;&nbsp;glBindTexture(GL_TEXTURE_2D, ad-&gt;texture);
+&nbsp;&nbsp;&nbsp;glActiveTexture(GL_TEXTURE0);
+&nbsp;&nbsp;&nbsp;glUniform1i(ad-&gt;idx_tex, 0);
+
+&nbsp;&nbsp;&nbsp;glDrawElements(GL_TRIANGLES, cube_indices_count, GL_UNSIGNED_SHORT, 0);
+
+&nbsp;&nbsp;&nbsp;glFlush();
+}
+</pre>
+         
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
\ No newline at end of file
@@ -1,67 +1,67 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\r
-<head>\r
-    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>\r
-    <meta http-equiv="X-UA-Compatible" content="IE=9" />\r
-    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />\r
-    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />\r
-    <script type="text/javascript" src="../../scripts/snippet.js"></script>\r
-    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>\r
-    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>\r
-    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>\r
-    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>\r
-  <title>Media key</title>\r
- </head>\r
- <body onload="prettyPrint()" style="overflow: auto;">\r
-\r
- <div id="toc-navigation">\r
-    <div id="profile">\r
-        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>\r
-    </div>\r
-\r
-    <div id="toc_border"><div id="toc">\r
-        <p class="toc-title">Related Info</p>\r
-        <ul class="toc">\r
-            <li><a href="../../../../org.tizen.tutorials/html/native/system/media_key_tutorial_n.htm">Media key Tutorial</a></li>\r
-                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__MEDIA__KEY__MODULE.html">Media key API for Mobile Native</a></li>\r
-                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__MEDIA__KEY__MODULE.html">Media key API for Wearable Native</a></li>\r
-        </ul>\r
-    </div></div>\r
-</div>\r
-\r
-<div id="container"><div id="contents"><div class="content">\r
-<h1>Media key</h1>\r
-\r
-  <p>Tizen enables you to manage media key events. The media key events are generated by the remote control buttons in a Bluetooth headset or Bluetooth earphone. The <span style="font-family: Courier New, Courier, monospace">media_key_e</span> enumerator (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__MEDIA__KEY__MODULE.html#ga7ef8e87127474ddcb068a06dd53eeb8b">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__MEDIA__KEY__MODULE.html#ga7ef8e87127474ddcb068a06dd53eeb8b">wearable</a> applications) defines the available key types.</p> \r
-  \r
-  <p>The main features of the Media key API include:</p> \r
-  <ul> \r
-   <li>Registering a callback \r
-   <p>You can register a callback for media key events using the <span style="font-family: Courier New,Courier,monospace">media_key_reserve()</span> function. The first parameter of the function defines the <span style="font-family: Courier New,Courier,monospace">media_key_event_cb</span> type callback, which you can implement to perform any actions you need. </p>\r
-   </li> \r
-   <li>Unregistering a callback \r
-   <p>You can unregister a callback for media key events using the <span style="font-family: Courier New,Courier,monospace">media_key_release()</span> function.</p> </li></ul>\r
-   \r
-   <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
-<script type="text/javascript" src="../../scripts/showhide.js"></script>\r
-</div></div></div>\r
-\r
-<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>\r
-\r
-<div id="footer">\r
-<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>\r
-</div>\r
-\r
-<script type="text/javascript">\r
-var _gaq = _gaq || [];\r
-_gaq.push(['_setAccount', 'UA-25976949-1']);\r
-_gaq.push(['_trackPageview']);\r
-(function() {\r
-var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\r
-ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\r
-var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\r
-})();\r
-</script>\r
-\r
-</body>\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+    <script type="text/javascript" src="../../scripts/snippet.js"></script>
+    <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+    <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+  <title>Media key</title>
+ </head>
+ <body onload="prettyPrint()" style="overflow: auto;">
+
+ <div id="toc-navigation">
+    <div id="profile">
+        <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>
+    </div>
+
+    <div id="toc_border"><div id="toc">
+        <p class="toc-title">Related Info</p>
+        <ul class="toc">
+            <li><a href="../../../../org.tizen.tutorials/html/native/multimedia/media_key_tutorial_n.htm">Media key Tutorial</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__MEDIA__KEY__MODULE.html">Media key API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__MEDIA__KEY__MODULE.html">Media key API for Wearable Native</a></li>
+        </ul>
+    </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+<h1>Media key</h1>
+
+  <p>Tizen enables you to manage media key events. The media key events are generated by the remote control buttons in a Bluetooth headset or Bluetooth earphone. The <span style="font-family: Courier New, Courier, monospace">media_key_e</span> enumerator (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__MEDIA__KEY__MODULE.html#ga7ef8e87127474ddcb068a06dd53eeb8b">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__MEDIA__KEY__MODULE.html#ga7ef8e87127474ddcb068a06dd53eeb8b">wearable</a> applications) defines the available key types.</p> 
+  
+  <p>The main features of the Media key API include:</p> 
+  <ul> 
+   <li>Registering a callback 
+   <p>You can register a callback for media key events using the <span style="font-family: Courier New,Courier,monospace">media_key_reserve()</span> function. The first parameter of the function defines the <span style="font-family: Courier New,Courier,monospace">media_key_event_cb</span> type callback, which you can implement to perform any actions you need. </p>
+   </li> 
+   <li>Unregistering a callback 
+   <p>You can unregister a callback for media key events using the <span style="font-family: Courier New,Courier,monospace">media_key_release()</span> function.</p> </li></ul>
+   
+   <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
 </html>
\ No newline at end of file
index c4eec96..24055ba 100644 (file)
@@ -40,7 +40,9 @@
        <li><a href="image_util_n.htm">Image Util</a> \r
        <p>Enables you to view and process (decode, encode, convert, and compress) bitmap images in the <span style="font-family: Courier New,Courier,monospace">JPEG</span> format. </p></li>\r
        <li><a href="media_codecs_n.htm">Media Codec</a> \r
-       <p>Enables you to use codecs to encode and decode video and audio data.</p></li>         \r
+       <p>Enables you to use codecs to encode and decode video and audio data.</p></li>        \r
+       <li><a href="media_keys_n.htm">Media key</a>\r
+       <p>Enables you to manage callbacks for media key events.</p></li>       \r
        <li><a href="media_tools_n.htm">Media Tool</a> \r
        <p>Enables you to use media tools to manage various media handles.</p></li>             \r
        <li><a href="metadata_extractor_n.htm">Metadata Extractor</a> <p>Enables you to extract metadata from the media files.</p></li>\r
index d7c8d00..fb40070 100644 (file)
 <h1>Bluetooth</h1>\r
 \r
 <p>Tizen enables you to use Bluetooth functionalities, such as managing the local Bluetooth adapter, bonding, and exchanging data between Bluetooth-enabled devices. The Bluetooth standard provides a peer-to-peer (P2P) data exchange functionality over short distance between compliant devices.</p>\r
-<p><img src="../../images/bluetooth_device_discovering.png" width=400 height=250></p>\r
+\r
+<p class="figure">Figure: Bluetooth connections</p>\r
+<p align="center"><img src="../../images/bluetooth_device_discovering.png" alt="Bluetooth connections" /></p>\r
 <p>The main features of the Bluetooth API include:</p>\r
 \r
 <ul>\r
        <li>Managing the local Bluetooth adapter \r
        <p>The Bluetooth Adapter API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__ADAPTER__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__BLUETOOTH__ADAPTER__MODULE.html">wearable</a> applications) provides functions for setting up Bluetooth and discovering other devices. The API is used to control the Bluetooth adapter: you must enable the adapter before any other Bluetooth actions, and when you no longer need it, disable it to save device power.</p>\r
        <p>You can control the visibility of the device, meaning whether its name appears to others searching for Bluetooth devices. In addition, you  discover neighboring Bluetooth devices. This process is asynchronous, so you must build and hold the list of devices in the neighborhood.</p>\r
-       <p>Related API Reference : <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__ADAPTER__MODULE.html">Bluetooth Adapter</a></P>\r
        </li>\r
        <li>Discovering devices \r
-       <p>The Bluetooth Device API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__DEVICE__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__BLUETOOTH__DEVICE__MODULE.html">wearable</a> applications) provides functions for managing bonds with other devices and searching for supported services. The API is used to handle the connection with other devices and to search for services available on remote devices.</p>\r
+       <p>The Bluetooth Device API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__DEVICE__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__BLUETOOTH__DEVICE__MODULE.html">wearable</a> applications) provides functions for <a href="../../../../org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm#find">managing bonds with other devices and searching for supported services</a>. The API is used to handle the connection with other devices and to search for services available on remote devices.</p>\r
        <p>You can discover other Bluetooth devices. The device discovery process can retrieve multiple types of Bluetooth devices, such as printers, mobile phones, and headphones.</p>\r
-       <p>Related Tutorial : <a href="../../../../org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm#find">Finding Other Devices</a></p>\r
        </li>\r
        <li>Creating a bonding with a Bluetooth device \r
-       <p>You can create a bonding with another device. The bonding allows the 2 devices to establish a connection.</p>\r
+       <p>You can create a bonding with another device with the Bluetooth Device API. The bonding allows the 2 devices to establish a connection.</p>\r
        <p>Connected devices exchange keys needed for encrypted communication, but each connection has to be approved by the latest application user. You can also set authorization of other devices. Authorized devices are connected automatically without the latest user being asked for authorization.</p>\r
-       <p>Related API Reference : <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__DEVICE__MODULE.html">Bluetooth Device</a></P>\r
        </li>\r
        <li>Connecting to and exchanging data with a Bluetooth device using a Bluetooth socket\r
        <p>The Bluetooth Socket API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__SOCKET__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__BLUETOOTH__SOCKET__MODULE.html">wearable</a> applications) provides functions for managing connections to other devices and exchanging data. The API is used for exchanging data between 2 Bluetooth devices, where your device can have the role both of a server (service provider) and client (service user). The connection creation process differs based on the role. After the connection is established, the processes for exchanging data and disconnecting are the same for both roles.</p>\r
-       <p>When you attempt to open a connection to another device, a Service Discovery Protocol (SDP) look-up is performed on the device, and the protocol and channel to be used for the connection are determined. If a connection is established and the socket is opened successfully, a <span style="font-family: Courier New,Courier,monospace">BluetoothSocket</span> instance with an open state is returned. The socket is subsequently used for exchanging data between the connected devices.</p>\r
-       <p>Related Tutorial : <a href="../../../../org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm#exchange">Exchanging Data Using SPP</a></P>\r
+       <p>When you attempt to open a connection to another device, a Service Discovery Protocol (SDP) look-up is performed on the device, and the protocol and channel to be used for the connection are determined. If a connection is established and the socket is opened successfully, a <span style="font-family: Courier New,Courier,monospace">BluetoothSocket</span> instance with an open state is returned. The socket is subsequently used for <a href="../../../../org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm#exchange">exchanging data between the connected devices</a>.</p>\r
        </li>\r
        <li>Connecting to audio devices with Bluetooth\r
-       <p>Connect to Bluetooth audio devices, such as headset, hand-free, and headphone.</p>\r
-       <p>Related API Reference : <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__AUDIO__MODULE.html">Bluetooth Audio</a></P>\r
-       </li>\r
+       <p>Connect to Bluetooth audio devices, such as headset, hand-free, and headphone using the Bluetooth Audio API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__AUDIO__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__BLUETOOTH__AUDIO__MODULE.html">wearable</a> applications).</p></li>\r
        <li>Handling attributes with Bluetooth GATT\r
     <p>The Bluetooth GATT API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__GATT__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__BLUETOOTH__GATT__MODULE.html">wearable</a> applications) provides functions for creating and destroying the GATT client handle, discovering, reading, and modifying attributes, and setting and releasing callbacks to be notified when characteristic values are changed at the remote device.</p>\r
-       <p>As a client, you can connect to and use a specific service on the server device. Once the connection is established, the client can manage the service attributes. When the GATT client operations are no longer required, unregister the callbacks and destroy GATT client handle.</p>\r
-       <p>Related Tutorial : <a href="../../../../org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm#pre_gatt">Handling GATT Operation Preconditions</a></P>\r
-       <p>Related API Reference : <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__GATT__MODULE.html">Bluetooth GATT</a></P>\r
+       <p>As a client, you can <a href="../../../../org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm#pre_gatt">connect to and use a specific service on the server device</a>. Once the connection is established, the client can manage the service attributes. When the GATT client operations are no longer required, unregister the callbacks and destroy GATT client handle.</p>\r
        </li>\r
        <li>Connecting to health devices with Bluetooth HDP\r
-       <p>Manage connections to health devices and exchange data.</p>\r
-       <p>[Tizen HDP Architecture]</p>\r
-       <p><img src="../../images/bluetooth_hdp.png" width=350 height=310></p>\r
-       <p>Related API Reference : <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__HDP__MODULE.html">Bluetooth HDP</a></P>\r
-       </li>\r
+       <p>Manage connections to health devices and exchange data using the Bluetooth HDP API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__HDP__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__BLUETOOTH__HDP__MODULE.html">wearable</a> applications).</p>\r
+       <p>The following figure illustrates the Tizen HDP architecture.</p>\r
+       <p class="figure">Figure: Tizen HDP architecture</p>\r
+       <p align="center"><img src="../../images/bluetooth_hdp.png" alt="Bluetooth HDP architecture" /></p>\r
+</li>\r
        <li>Connecting to devices with Bluetooth HID\r
-       <p>Connect to a Bluetooth HID, such as a keyboard or mouse.</p>\r
-       <p>Related API Reference : <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__HID__MODULE.html">Bluetooth HID</a></P>\r
-       </li>\r
+       <p>Connect to a Bluetooth HID, such as a keyboard or mouse, using the Bluetooth HID API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__HID__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__BLUETOOTH__HID__MODULE.html">wearable</a> applications).</p></li>\r
        <li>Sending and receiving objects with the Bluetooth OPP client and server\r
-       <p>Push and accept objects, such as pictures.</p>\r
-       <p>Related Tutorial : <a href="../../../../org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm#exc">Exchanging Data Using OPP</a></P>\r
-       </li>\r
+       <p><a href="../../../../org.tizen.tutorials/html/native/network/bluetooth_tutorial_n.htm#exc">Push and accept objects</a>, such as pictures.</p></li>\r
        <li>Exchanging data with Bluetooth LE\r
        <p>The Bluetooth LE Adapter API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__ADAPTER__LE__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__BLUETOOTH__ADAPTER__LE__MODULE.html">wearable</a> applications) provides functions for managing the Bluetooth Low Energy (BLE) connections with other BLE devices and exchanging data between them.</p>\r
        <p>You can control the visibility of the BLE device, meaning whether its name appears to others searching for BLE devices. In addition, you  discover neighboring BLE devices. This process is asynchronous, so you must build and hold the list of devices in the neighborhood.</p>    \r
        </li>   \r
        <li>Controlling remote audio and video devices with Bluetooth AVRCP\r
-       <p>The Bluetooth AVRCP feature (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__NETWORK__BLUETOOTH__MODULE.html">wearable</a> applications) provides functions for remotely controlling audio and video devices.</p>\r
-       <p>Bluetooth AVRCP is used with A2DP. You can handle remote controls (such as play, pause, stop, equalizer, repeat, shuffle, and scan) through AVRCP.</p>\r
-       <p>Related API Reference : <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__AVRCP__MODULE.html">Bluetooth AVRCP</a></P>\r
-       </li>   \r
+       <p>The Bluetooth AVRCP feature (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__NETWORK__BLUETOOTH__AVRCP__MODULE.html">mobile</a> applications) provides functions for remotely controlling audio and video devices.</p>\r
+       <p>Bluetooth AVRCP is used with A2DP. You can handle remote controls (such as play, pause, stop, equalizer, repeat, shuffle, and scan) through AVRCP.</p></li>  \r
 </ul>\r
 \r
 <p>Bluetooth use is based on profiles. Tizen Bluetooth features support the Audio, GATT, HDP, HID, and OPP client and server profiles.</p>\r
@@ -116,4 +104,4 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga
 </script>\r
 \r
 </body>\r
-</html>\r
+</html>
\ No newline at end of file
index 690af18..e17ba76 100644 (file)
 <div id="container"><div id="contents"><div class="content">\r
 <h1>Feedback</h1>\r
 \r
-  <p>Tizen enables you to play feedback pattern.</p>\r
-  <p>There is Feedback API to play feedback as feedback types and patterns. </p>\r
-  <table border="1" style="width: 100%">\r
-   <caption>\r
-     Table: Feedback Types\r
-   </caption>\r
-   <tbody>\r
-    <tr>\r
-     <th>Enum</th>\r
-     <th>Description</th>\r
-    </tr>\r
-    <tr>\r
-     <td><span style="font-family: Courier New,Courier,monospace">FEEDBACK_TYPE_SOUND</span></td>\r
-     <td>Sound type</td>\r
-    </tr>\r
-    <tr>\r
-     <td><span style="font-family: Courier New,Courier,monospace">FEEDBACK_TYPE_VIBRATION</span></td>\r
-     <td>Vibration type</td>\r
-    </tr>\r
-   </tbody>\r
-  </table>\r
+  <p>You can play a feedback pattern using sound or vibration.</p>\r
+  <p>This feature is supported in mobile applications only.</p>\r
+\r
   <p>The main features of the Feedback API include:</p>\r
   <ul>\r
-   <li>Sound management <p>Feedback API requests to play sound to sound-server by using mm-keysound library.</p> <p>You can feedback by sound using the <span style="font-family: Courier New,Courier,monospace">feedback_play(pattern)</span> or <span style="font-family: Courier New,Courier,monospace">feedback_play_type(FEEDBACK_TYPE_SOUND, pattern)</span> function.</p>\r
+   <li>Sound management \r
+   <p>You can request the sound-server to play a sound by using the mm-keysound library.</p> \r
+   <p>You can use sound feedback with the <span style="font-family: Courier New,Courier,monospace">feedback_play()</span> or <span style="font-family: Courier New,Courier,monospace">feedback_play_type()</span> function. The attribute for the sound type is <span style="font-family: Courier New,Courier,monospace">FEEDBACK_TYPE_SOUND</span>.</p>\r
    </li>\r
    <li>Vibration management\r
-   <p>Feedback API requests to vibrate to deviced by using dbus method call. As per vibration data type on vibration.conf, it requests haptic monotone or haptic effect to deviced.</p> <p>You can feedback by vibration using the <span style="font-family: Courier New,Courier,monospace">feedback_play(pattern)</span> or <span style="font-family: Courier New,Courier,monospace">feedback_play_type(FEEDBACK_TYPE_VIBRATION, pattern)</span> function.</p></li></ul>\r
+   <p>You can request deviced to vibrate by using a dbus method call. A haptic monotone or haptic effect is requested to deviced, based on  the vibration data type in the <span style="font-family: Courier New,Courier,monospace">vibration.conf</span> configuration.</p> \r
+   <p>You can use vibration feedback with the <span style="font-family: Courier New,Courier,monospace">feedback_play()</span> or <span style="font-family: Courier New,Courier,monospace">feedback_play_type()</span> function. The attribute for the vibration type is <span style="font-family: Courier New,Courier,monospace">FEEDBACK_TYPE_VIBRATION</span>.</p></li></ul>  \r
+\r
 \r
 \r
 \r
index d75348e..8a6e22c 100644 (file)
@@ -20,7 +20,7 @@
        <div id="profile">\r
                <p><img alt="Mobile native" src="../../images/mobile_s_n.png"/> <img alt="Wearable native" src="../../images/wearable_s_n.png"/></p>\r
        </div>\r
-\r
+       \r
        <div id="toc_border"><div id="toc">\r
                <p class="toc-title">Related Info</p>\r
                <ul class="toc">\r
@@ -34,7 +34,7 @@
 <div id="container"><div id="contents"><div class="content">\r
 <h1>Storage</h1>\r
 \r
-  <p>Tizen enables you to get storage information and manage directories.</p>\r
+  <p>Tizen enables you to get storage information and manage directories.</p> \r
   <p>The Storage API provides access to accessible parts of the file system, which are represented as virtual root locations. The virtual roots form a collection of locations that function as a single virtual device file system. The following table lists the supported virtual roots.</p>\r
   <table border="1" style="width: 100%">\r
    <caption>\r
@@ -89,7 +89,7 @@
    </li>\r
    <li>Storage space management\r
    <p>You can get the available and total space size of the storage with the  <span style="font-family: Courier New,Courier,monospace">storage_get_total_space()</span> and <span style="font-family: Courier New,Courier,monospace">storage_get_available_space()</span> functions. They return the storage size, excluding the minimum memory size to launch the low memory pop-up in case of a low memory situation. Consequently, the available size must be less than the original available size, and you must use these functions to get the memory size. For the same reason, you cannot use the <span style="font-family: Courier New,Courier,monospace">statvfs</span> function directly in Tizen. Instead, use <span style="font-family: Courier New,Courier,monospace">storage_get_internal_memory_size()</span> and <span style="font-family: Courier New,Courier,monospace">storage_get_external_memory_size()</span>. The Statvfs structure has a different structure size defined by &quot;__USE_FILE_OFFSET64&quot;. However, you can ignore this, since the Storage API uses a proper function automatically.</p></li></ul>\r
-\r
+  \r
 \r
 \r
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>\r
@@ -114,4 +114,4 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga
 </script>\r
 \r
 </body>\r
-</html>\r
+</html>
\ No newline at end of file
index 8f91c0b..6f3ea50 100644 (file)
@@ -42,8 +42,6 @@
                <li><a href="device_n.htm">Device</a>
                <p>Enables you to control attached devices.</p></li>
                <li><a href="dlog_n.htm">dlog</a> <p>Allows you to collect log messages.</p> </li>
-               <li><a href="media_keys_n.htm">Media key</a>
-               <p>Enables you to manage callbacks for media key events.</p></li>
                <li><a href="runtime_info_n.htm">Runtime information</a> 
                <p>Enables you to retrieve memory or storage information in your application, such as allocated and available amounts.</p></li>
                <li><a href="sensors_n.htm">Sensor</a> 
@@ -58,6 +56,9 @@
   
 <p>The following guides apply in <strong>mobile applications only</strong>:</p>
  <ul>
+               
+               <li><a href="feedback_n.htm">Feedback</a> 
+               <p>Enables you to play a feedback pattern.</p></li>
                <li><a href="t-trace_n.htm">T-trace</a> 
                <p>Enables you to insert tracepoints in your application.</p></li>
 </ul>
index d616882..9626314 100644 (file)
@@ -16,7 +16,7 @@
 
  <div id="toc-navigation">
     <div id="profile">
-        <p><img alt="Mobile Web" src="../../../images/mobile_s_w.png"/> <img alt="Wearable Web" src="../../../images/wearable_s_w.png"/></p>
+        <p><img alt="Mobile Web" src="../../../images/mobile_s_w.png"/></p>
     </div>
 
     <div id="toc_border"><div id="toc">
@@ -24,7 +24,6 @@
         <ul class="toc">
             <li><a href="../../../../../org.tizen.tutorials/html/web/tizen/multimedia/media_controller_tutorial_w.htm">Media Controller Tutorial</a></li>
             <li><a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html">Media Controller API for Mobile Web</a></li>
-            <li><a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/mediacontroller.html">Media Controller API for Wearable Web</a></li>
         </ul>
     </div></div>
 </div>
@@ -34,7 +33,7 @@
 
    <p>Tizen provides a functionality for you to communicate between the media controller server and client.</p>
 
-<p>The Media Controller API is mandatory for both Tizen mobile and wearable profiles, which means that it is supported in all mobile and wearable devices. All mandatory APIs are supported on the Tizen Emulators.</p> 
+<p>This feature is supported in mobile applications only.</p> 
   
   
 <p>To manage the media using the Media Controller API, you have to develop 2 applications:</p>
index 5ec5d93..9627458 100644 (file)
   <p>Multimedia features include managing the device sound volume and media keys.</p>\r
   <p>The main multimedia features are:</p>\r
   <ul>\r
-  <li><a href="media_controller_w.htm">Media Controller</a> <p>Enables you to communicate between the media controller server and client.</p></li>\r
   <li><a href="media_key_w.htm">Media Key</a> <p>Enables you to handle media keys in your application.</p></li>\r
   <li><a href="sound_w.htm">Sound</a> <p>Enables you to control the volume level of several sound types and get information about the current sound mode and the state of the current sound devices.</p></li>  \r
   </ul>\r
+  \r
+<p>The following guides apply in <strong>mobile applications only</strong>:</p>\r
+<ul>\r
+  <li><a href="media_controller_w.htm">Media Controller</a> <p>Enables you to communicate between the media controller server and client.</p></li>\r
+</ul>\r
+\r
  \r
 <script type="text/javascript" src="../../../scripts/jquery.zclip.min.js"></script>\r
 <script type="text/javascript" src="../../../scripts/showhide.js"></script>\r
index 90057d1..7ffe644 100644 (file)
@@ -68,7 +68,7 @@
       </tr>
      </tbody>
     </table> <p>Every change made to the address book triggers an event for which you can define a notification. For batch mode operations, each requested batch operation generates only a single event.</p> </li>
-   <li>Person management <p>You can manage persons, including searching, updating, and deleting, by using the applicable methods of the <span style="font-family: Courier New,Courier,monospace">ContactManager</span> interface. When managing a single person at a time, the operations are handled in a synchronous mode.</p> <p>You can handle multiple persons simultaneously using the applicable batch methods: <span style="font-family: Courier New,Courier,monospace">updateBatch()</span> and <span style="font-family: Courier New,Courier,monospace">removeBatch()</span>.</p> <p>Persons are automatically added or modified when contacts are added to or unlinked from existing persons. You cannot add persons directly.</p><p>When searching for persons, you can filter and sort the search results based on <a href="../tizen/tizen_guide_w.htm#sorting">specific filter attributes</a>.</p></li>
+   <li>Person management <p>You can <a href="../../../../../org.tizen.tutorials/html/web/tizen/social/contact_tutorial_w.htm#Managing_Persons">manage persons</a>, including searching, updating, and deleting, by using the applicable methods of the <span style="font-family: Courier New,Courier,monospace">ContactManager</span> interface. When managing a single person at a time, the operations are handled in a synchronous mode.</p> <p>You can handle multiple persons simultaneously using the applicable batch methods: <span style="font-family: Courier New,Courier,monospace">updateBatch()</span> and <span style="font-family: Courier New,Courier,monospace">removeBatch()</span>.</p> <p>Persons are automatically added or modified when contacts are added to or unlinked from existing persons. You cannot add persons directly.</p><p>When searching for persons, you can filter and sort the search results based on <a href="../tizen/tizen_guide_w.htm#sorting">specific filter attributes</a>.</p></li>
    <li>vCard format conversions <p>You can convert the contacts to <a target="_blank" href="https://tools.ietf.org/html/rfc2426">vCard format</a> or back to <a href="../../../../../org.tizen.tutorials/html/web/tizen/social/contact_tutorial_w.htm#Importing_Contact">import</a> and <a href="../../../../../org.tizen.tutorials/html/web/tizen/social/contact_tutorial_w.htm#Exporting_Contact">export</a> contacts.</p> <p>The vCard (RFC 2426) file format (<span style="font-family: Courier New,Courier,monospace">.vcf</span> or <span style="font-family: Courier New,Courier,monospace">.vcard</span>) is a standard for electronic business cards, which contain contact information, such as name, address, phone numbers, email addresses, URLs, logos, photographs, and audio clips.</p><p>The Contact API supports vCard version 3.0.</p></li>
   </ul>
  
index 84414c7..5044d89 100644 (file)
@@ -16,7 +16,7 @@
 
  <div id="toc-navigation">
     <div id="profile">
-        <p><img alt="Mobile Web" src="../../../images/mobile_s_w.png"/> <img alt="Wearable Web" src="../../../images/wearable_s_w.png"/></p>
+        <p><img alt="Mobile Web" src="../../../images/mobile_s_w.png"/></p>
     </div>
 
     <div id="toc_border"><div id="toc">
@@ -24,7 +24,6 @@
         <ul class="toc">
             <li><a href="../../../../../org.tizen.tutorials/html/web/tizen/ui/inputdevice_tutorial_w.htm">Input Device Tutorial</a></li>
             <li><a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/inputdevice.html">Input Device API for Mobile Web</a></li>
-            <li><a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/inputdevice.html">Input Device API for Wearable Web</a></li>
             </ul>
     </div></div>
 </div>
 <h1>Input Device</h1>
   <p>Tizen enables you to manage input device keys.</p>
   
-  <p>The Input Device API is mandatory for both Tizen mobile and wearable profiles, which means that it is supported in all mobile and wearable devices. All mandatory APIs are supported on the Tizen Emulators.</p>
+<p>This feature is supported in mobile applications only.</p> 
 
   <p>The main features of the Input Device API include:</p>
   <ul>
    <li>Gathering a list of supported keys
      <p>You can <a href="../../../../../org.tizen.tutorials/html/web/tizen/ui/inputdevice_tutorial_w.htm#getkeys">get a list of all supported keys</a>
-      using the <span style="font-family: Courier New,Courier,monospace">InputDeviceManager</span> interface (in <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/inputdevice.html#InputDeviceManager">mobile</a> and <a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/inputdevice.html#InputDeviceManager">wearable</a> applications).</p> </li>
+      using the <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/inputdevice.html#InputDeviceManager">InputDeviceManager</a> interface.</p> </li>
    <li>Getting key information by its name
      <p>You can <a href="../../../../../org.tizen.tutorials/html/web/tizen/ui/inputdevice_tutorial_w.htm#getkeyinfo">gather information about the key by its name</a>
-     using the <span style="font-family: Courier New,Courier,monospace">InputDeviceManager</span> interface and <span style="font-family: Courier New,Courier,monospace">InputDeviceKey</span> object (in <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/inputdevice.html#InputDeviceKey">mobile</a> and <a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/inputdevice.html#InputDeviceKey">wearable</a> applications).</p> </li>
+     using the <span style="font-family: Courier New,Courier,monospace">InputDeviceManager</span> interface and <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/inputdevice.html#InputDeviceKey">InputDeviceKey</a> object.</p> </li>
    <li>Registering and unregistering key events
         <p>When you want to react to Input Device key presses, <a href="../../../../../org.tizen.tutorials/html/web/tizen/ui/inputdevice_tutorial_w.htm#reg_unreg">register the applicable key</a> using the <span style="font-family: Courier New,Courier,monospace">InputDeviceManager</span> interface. After registering the input device key, the application receives a DOM keyboard event when the key is pressed or released. When the events are no longer needed, unregister the key.</p>
         <p>The application cannot register the mandatory keys (<strong>ArrowLeft</strong>, <strong>ArrowRight</strong>, <strong>ArrowUp</strong>, <strong>ArrowDown</strong>, <strong>Enter</strong>, and <strong>Back</strong>).</p></li>
index ffd232a..d6f34cd 100644 (file)
   <p>The main UI features are:</p>
      <ul>
         <li><a href="badge_w.htm">Badge</a> <p>Allows you to create and update badges on the home screen.</p></li>
-        <li><a href="noti_w.htm">Notification</a> <p>Allows you to create and display different types of notifications.</p></li>
-        <li><a href="inputdevice_w.htm">Input Device</a> <p>Allows you to manage input keys in the application.</p></li>        
+        <li><a href="noti_w.htm">Notification</a> <p>Allows you to create and display different types of notifications.</p></li>        
 </ul>
         
+<p>The following guides apply in <strong>mobile applications only</strong>:</p>
+<ul>
+        <li><a href="inputdevice_w.htm">Input Device</a> <p>Allows you to manage input keys in the application.</p></li>
+</ul>   
+        
 <script type="text/javascript" src="../../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../../scripts/showhide.js"></script>
 </div></div></div>
index 1631aad..2bd6610 100644 (file)
@@ -65,7 +65,7 @@
 </li>
 </ul>
 
-<p>You can manage multiple SVG element easily by <a href="../../../../../org.tizen.tutorials/html/web/w3c/graphics/svg_tutorial_w.htm#group">grouping them together</a>. You can also <a href="../../../../../org.tizen.tutorials/html/web/w3c/graphics/svg_tutorial_w.htm">animate SVG elements</a> and <a href="../../../../../org.tizen.tutorials/html/web/w3c/graphics/svg_tutorial_w.htm#control">control them through scripting</a>. For more information on using SVG, see <a href="http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/" target="_blank">Scalable Vector Graphics (SVG) Tiny 1.2 Specification</a>.</p>
+<p>You can manage multiple SVG element easily by <a href="../../../../../org.tizen.tutorials/html/web/w3c/graphics/svg_tutorial_w.htm#group">grouping them together</a>. You can also <a href="../../../../../org.tizen.tutorials/html/web/w3c/graphics/svg_tutorial_w.htm#animate">animate SVG elements</a> and <a href="../../../../../org.tizen.tutorials/html/web/w3c/graphics/svg_tutorial_w.htm#control">control them through scripting</a>. For more information on using SVG, see <a href="http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/" target="_blank">Scalable Vector Graphics (SVG) Tiny 1.2 Specification</a>.</p>
   
  
 <script type="text/javascript" src="../../../scripts/jquery.zclip.min.js"></script>
index fe92ee9..a0518b6 100644 (file)
@@ -37,7 +37,7 @@
 <p>The main features of the getUserMedia API include:</p>\r
 <ul>\r
 <li>Retrieving multimedia streams\r
-<p>You can use the <span style="font-family: Courier New,Courier,monospace">navigator.webkitGetUserMedia()</span> method to request user access to retrieve the multimedia streams of local devices, such as camera. The method returns the media as a JSON object.</p> </li>\r
+<p>You can use the <span style="font-family: Courier New,Courier,monospace">navigator.webkitGetUserMedia()</span> method to request user access to <a href="../../../../../org.tizen.tutorials/html/web/w3c/media/getusermedia_tutorial_w.htm#access">retrieve the multimedia streams</a> of local devices, such as camera. The method returns the media as a JSON object.</p> </li>\r
 <li>Capturing media\r
 <p>You can capture <a href="../../../../../org.tizen.tutorials/html/web/w3c/media/getusermedia_tutorial_w.htm#capture">media content</a> and transform it to various formats.</p>\r
 \r
index d456229..e20bd9e 100644 (file)
@@ -52,6 +52,8 @@
 </li>\r
 <li>Retrieving progress state\r
 <p>You can <a href="../../../../../org.tizen.tutorials/html/web/w3c/media/video_audio_tutorial_w.htm#display">retrieve and display the download progress state</a> using the <span style="font-family: Courier New,Courier,monospace">Progress</span> media event, which is triggered when information related to the progress of a media object loading media contents is updated.</p></li>\r
+<li>Resizing the video screen\r
+<p>You can <a href="../../../../../org.tizen.tutorials/html/web/w3c/media/video_audio_tutorial_w.htm#resize">resize the video screen</a> to offer different viewing options for the user.</p></li>\r
 <li>Checking supported media formats\r
 <p>You can <a href="../../../../../org.tizen.tutorials/html/web/w3c/media/video_audio_tutorial_w.htm#check">check whether the media data can be played</a> using the <span style="font-family: Courier New,Courier,monospace">canPlayType()</span> method. Basically, the MIME type must be set in the Web server in a format that is supported in Tizen. If a non-supported MIME type is used, you can <a href="../../../../../org.tizen.tutorials/html/web/w3c/media/video_audio_tutorial_w.htm#handle">handle exceptions</a> in advance.</p>\r
 <p>Tizen supports the following media formats: </p>\r
index 8fbe344..e2af65c 100644 (file)
                        <topic href="html/web/tizen/input_output/filesystem_w.htm" label="Filesystem"></topic>
                        <topic href="html/web/tizen/input_output/message_port_w.htm" label="Message Port"></topic>                                      
                </topic>
-               <topic href="html/web/tizen/multimedia/multimedia_guide_w.htm" label="Multimedia">                              
-                       <topic href="html/web/tizen/multimedia/media_controller_w.htm" label="Media Controller"></topic>
+               <topic href="html/web/tizen/multimedia/multimedia_guide_w.htm" label="Multimedia">
                        <topic href="html/web/tizen/multimedia/media_key_w.htm" label="Media Key"></topic>
-                       <topic href="html/web/tizen/multimedia/sound_w.htm" label="Sound"></topic>                                      
+                       <topic href="html/web/tizen/multimedia/sound_w.htm" label="Sound"></topic>
+                       <topic href="html/web/tizen/multimedia/media_controller_w.htm" label="Media Controller"></topic>
                </topic>        
                <topic href="html/web/tizen/system/system_guide_w.htm" label="System">                                  
                        <topic href="html/web/tizen/system/ham_w.htm" label="Human Activity Monitor"></topic>
                <topic href="html/native/context/history_n.htm" label="Contextual History"></topic>                     
        </topic>
        <topic href="html/native/graphics/graphics_guide_n.htm" label="Graphics">
-               <topic href="html/native/graphics/opengles_n.htm" label="OpenGL ES"></topic>
+               <topic href="html/native/graphics/opengles_n.htm" label="OpenGL ES">
+                       <topic href="html/native/graphics/creating_opengles_n.htm" label="Creating OpenGL ES Applications"></topic>
+                       <topic href="html/native/graphics/polygon_mesh_n.htm" label="Polygon Mesh in OpenGL ES"></topic>
+                       <topic href="html/native/graphics/vertex_shader_n.htm" label="Vertex Shader"></topic>
+                       <topic href="html/native/graphics/assembly_n.htm" label="Primitive Assembly and Rasterization"></topic>
+                       <topic href="html/native/graphics/texturing_n.htm" label="Texturing"></topic>
+                       <topic href="html/native/graphics/fragment_shader_n.htm" label="Fragment Shader"></topic>
+                       <topic href="html/native/graphics/output_merging_n.htm" label="Output Merging"></topic>
+                       <topic href="html/native/graphics/interactive_ui_n.htm" label="Interactive UI"></topic>
+                       <topic href="html/native/graphics/adv_rendering_n.htm" label="Advanced Rendering"></topic>
+                       <topic href="html/native/graphics/adv_performance_n.htm" label="Advanced Performance"></topic>
+               </topic>
                <topic href="html/native/graphics/tbm_n.htm" label="TBM Surface"></topic>
                <topic href="html/native/graphics/cairo_n.htm" label="Cairo"></topic>
                <topic href="html/native/graphics/hw_acceleration_n.htm" label="Hardware Acceleration"></topic>
        </topic>
        <topic href="html/native/location/location_guide_n.htm" label="Location">
-               <topic href="html/native/location/location_n.htm" label="Location"></topic>
+               <topic href="html/native/location/location_n.htm" label="Location Manager"></topic>
                <topic href="html/native/location/geofence_n.htm" label="Geofence"></topic>
                <topic href="html/native/location/maps_n.htm" label="Maps Service"></topic>
        </topic>
                <topic href="html/native/multimedia/camera_n.htm" label="Camera"></topic>
                <topic href="html/native/multimedia/image_util_n.htm" label="Image Util"></topic>
                <topic href="html/native/multimedia/media_codecs_n.htm" label="Media Codec"></topic>
+               <topic href="html/native/multimedia/media_keys_n.htm" label="Media key"></topic>                
                <topic href="html/native/multimedia/media_tools_n.htm" label="Media Tool"></topic>                                      
                <topic href="html/native/multimedia/metadata_extractor_n.htm" label="Metadata Extractor"></topic>
                <topic href="html/native/multimedia/openal_n.htm" label="OpenAL"></topic>
        <topic href="html/native/system/system_guide_n.htm" label="System">                     
                <topic href="html/native/system/device_n.htm" label="Device"></topic>
                <topic href="html/native/system/dlog_n.htm" label="dlog"></topic>
-               <topic href="html/native/system/media_keys_n.htm" label="Media key"></topic>
                <topic href="html/native/system/runtime_info_n.htm" label="Runtime information"></topic>
                <topic href="html/native/system/sensors_n.htm" label="Sensor"></topic>
                <topic href="html/native/system/sysinfo_n.htm" label="System Information"></topic>
                <topic href="html/native/system/settings_n.htm" label="System Settings"></topic>
                <topic href="html/native/system/storage_n.htm" label="Storage"></topic>
+               <topic href="html/native/system/feedback_n.htm" label="Feedback"></topic>       
                <topic href="html/native/system/t-trace_n.htm" label="T-trace"></topic> 
        </topic>
        <topic href="html/native/telephony/telephony_guide_n.htm" label="Telephony">
index d768f63..ac1d019 100644 (file)
Binary files a/org.tizen.sampledescriptions/html/images/files_sharing_sequence.png and b/org.tizen.sampledescriptions/html/images/files_sharing_sequence.png differ
index 6510f16..d3c1f13 100644 (file)
Binary files a/org.tizen.sampledescriptions/html/images/stop_watch_0.png and b/org.tizen.sampledescriptions/html/images/stop_watch_0.png differ
diff --git a/org.tizen.sampledescriptions/html/images/stream_player_application_view.png b/org.tizen.sampledescriptions/html/images/stream_player_application_view.png
new file mode 100644 (file)
index 0000000..629aae5
Binary files /dev/null and b/org.tizen.sampledescriptions/html/images/stream_player_application_view.png differ
diff --git a/org.tizen.sampledescriptions/html/images/stream_player_application_workflow.png b/org.tizen.sampledescriptions/html/images/stream_player_application_workflow.png
new file mode 100644 (file)
index 0000000..ecb4aeb
Binary files /dev/null and b/org.tizen.sampledescriptions/html/images/stream_player_application_workflow.png differ
diff --git a/org.tizen.sampledescriptions/html/images/stream_player_display_section.png b/org.tizen.sampledescriptions/html/images/stream_player_display_section.png
new file mode 100644 (file)
index 0000000..e331392
Binary files /dev/null and b/org.tizen.sampledescriptions/html/images/stream_player_display_section.png differ
diff --git a/org.tizen.sampledescriptions/html/images/stream_player_layout_structure.png b/org.tizen.sampledescriptions/html/images/stream_player_layout_structure.png
new file mode 100644 (file)
index 0000000..a4dd70e
Binary files /dev/null and b/org.tizen.sampledescriptions/html/images/stream_player_layout_structure.png differ
diff --git a/org.tizen.sampledescriptions/html/images/stream_player_options_section.png b/org.tizen.sampledescriptions/html/images/stream_player_options_section.png
new file mode 100644 (file)
index 0000000..ee5b1f1
Binary files /dev/null and b/org.tizen.sampledescriptions/html/images/stream_player_options_section.png differ
diff --git a/org.tizen.sampledescriptions/html/images/stream_player_playback_options_section.png b/org.tizen.sampledescriptions/html/images/stream_player_playback_options_section.png
new file mode 100644 (file)
index 0000000..2b9d672
Binary files /dev/null and b/org.tizen.sampledescriptions/html/images/stream_player_playback_options_section.png differ
diff --git a/org.tizen.sampledescriptions/html/images/stream_player_state_changes.png b/org.tizen.sampledescriptions/html/images/stream_player_state_changes.png
new file mode 100644 (file)
index 0000000..e28a553
Binary files /dev/null and b/org.tizen.sampledescriptions/html/images/stream_player_state_changes.png differ
diff --git a/org.tizen.sampledescriptions/html/images/stream_player_toolbar_section.png b/org.tizen.sampledescriptions/html/images/stream_player_toolbar_section.png
new file mode 100644 (file)
index 0000000..f3b3ed0
Binary files /dev/null and b/org.tizen.sampledescriptions/html/images/stream_player_toolbar_section.png differ
index 2ccfcfb..d89a11c 100644 (file)
                        <li><a href="mobile_n/attach_panel_sd_mn.htm">Attach Panel</a></li>
                        <li><a href="mobile_n/badge_sd_mn.htm">Badge</a></li>
                        <li><a href="mobile_n/bluetoothchat_sd_mn.htm">Bluetooth Chat</a></li>
+                       <li><a href="mobile_n/bluetooth_le_collector_sd_mn.htm">Bluetooth LE Collector</a></li>
                        <li><a href="mobile_n/bundle_sd_mn.htm">Bundle</a></li>
                        <li><a href="mobile_n/cairo_basic_sd_mn.htm">Cairo Basic</a></li>
                        <li><a href="mobile_n/cairo_evasgl_sd_mn.htm">Cairo EvasGL</a></li>
                        <li><a href="mobile_n/evas_gl_sd_mn.htm">EvasGLCube</a></li>
                        <li><a href="mobile_n/event_sd_mn.htm">Event</a></li>
                        <li><a href="mobile_n/file_manager_sd_mn.htm">File Manager</a></li>
+                       <li><a href="mobile_n/files_sharing_sd_mn.htm">Files Sharing</a></li>
+                       <li><a href="mobile_n/files_sharing_server_sd_mn.htm">Files Sharing Server</a></li>
+                       <li><a href="mobile_n/lbs_geofence_sd_mn.htm">Geofence</a></li>                 
                        <li><a href="mobile_n/glview11_cube_sd_mn.htm">GLView11Cube</a></li>
                        <li><a href="mobile_n/glview_cube_sd_mn.htm">GLViewCube</a></li>
                        <li><a href="mobile_n/glview_shader_sd_mn.htm">GLViewShader</a></li>
                        <li><a href="mobile_n/internationalization_sd_mn.htm">Internationalization</a></li>
                        <li><a href="mobile_n/launchonevent_sd_mn.htm">LaunchOnEventServiceApp</a></li>
                        <li><a href="mobile_n/layout_transitions_sd_mn.htm">Layout Transitions</a></li>
-                       <li><a href="mobile_n/lbs_geofence_sd_mn.htm">LBS Geofence</a></li>
-                       <li><a href="mobile_n/lbs_maps_sd_mn.htm">LBS Maps</a></li>
                        <li><a href="mobile_n/oauth_sd_mn.htm">LibOauth</a></li>
                        <li><a href="mobile_n/lockscreen_sd_mn.htm">Lockscreen</a></li>
+                       <li><a href="mobile_n/lbs_maps_sd_mn.htm">Maps</a></li>                 
                        <li><a href="mobile_n/mediaapp_sd_mn.htm">Media App</a></li>
                        <li><a href="mobile_n/mediacontroller_client_sd_mn.htm">Media-controller-client</a></li>
                        <li><a href="mobile_n/mediacontroller_server_sd_mn.htm">Media-controller-server</a></li>
                        <li><a href="mobile_n/simple_home_sd_mn.htm">Simple Homescreen</a></li>
                        <li><a href="mobile_n/sketch_sd_mn.htm">Sketch</a></li>
                        <li><a href="mobile_n/stopwatch_sd_mn.htm">Stopwatch</a></li>
+                       <li><a href="mobile_n/stop_watch_sd_mn.htm">Stop Watch</a></li>
+                       <li><a href="mobile_n/stream_player_sd_mn.htm">Stream-player</a></li>
                        <li><a href="mobile_n/syncadapterapp_sd_mn.htm">Sync Adapter App</a></li>
                        <li><a href="mobile_n/syncadapterserviceapp_sd_mn.htm">Sync Adapter Service App</a></li>
                        <li><a href="mobile_n/systeminfo_sd_mn.htm">System Info</a></li>
                        <li><a href="wearable_n/cairo_evasgl_sd_wn.htm">(Circle) Cairo EvasGL</a></li>
                        <li><a href="wearable_n/circlecircular_camera_sd_wn.htm">(Circle) Circular Camera</a></li>
                        <li><a href="wearable_n/circleemail_sd_wn.htm">(Circle) Email</a></li>
+                       <li><a href="wearable_n/circlemusic_sd_wn.htm">(Circle) Music</a></li>
                        <li><a href="wearable_n/circlerotarytimer_sd_wn.htm">(Circle) Rotary Timer</a></li>
                        <li><a href="wearable_n/circlesensors_sd_wn.htm">(Circle) Sensors</a></li>
                        <li><a href="wearable_n/circlesettingtime_sd_wn.htm">(Circle) Setting Time</a></li>
                        <li><a href="wearable_n/circlesettings_sd_wn.htm">(Circle) Settings</a></li>
+                       <li><a href="wearable_n/settings_sd_wn.htm">(Circle) System Settings UI</a></li>
                        <li><a href="wearable_n/rectemail_sd_wn.htm">(Rectangle) Email</a></li>
                        <li><a href="wearable_n/rectsettings_sd_wn.htm">(Rectangle) Settings</a></li>
                        <li><a href="wearable_n/rectuidialer_sd_wn.htm">(Rectangle) UI Dialer</a></li>
                        <li><a href="wearable_n/rectwidgetviewer_sd_wn.htm">(Rectangle) Widget Viewer</a></li>
+                       <li><a href="wearable_n/alarm_widget_sd_wn.htm">Alarm Widget</a></li>
                        <li><a href="wearable_n/ambientweather_sd_wn.htm">Ambient Weather</a></li>
                        <li><a href="wearable_n/analog_watch_sd_wn.htm">Analog Watch</a></li>
+                       <li><a href="wearable_n/bluetooth_le_service_sd_wn.htm">Bluetooth LE Service</a></li>
                        <li><a href="wearable_n/digital_watch_sd_wn.htm">Digital-Watch</a></li>
                        <li><a href="wearable_n/evas_gl_sd_wn.htm">EvasGLCube</a></li>  
                        <li><a href="wearable_n/glview11_cube_sd_wn.htm">GLView11Cube</a></li>
                        <li><a href="wearable_n/glview_cube_sd_wn.htm">GLViewCube</a></li>
-                       <li><a href="wearable_n/glview_shader_sd_wn.htm">GLViewShader</a></li>                          
+                       <li><a href="wearable_n/glview_shader_sd_wn.htm">GLViewShader</a></li>
+                       <li><a href="wearable_n/new_briefing_widget_sd_wn.htm">News Briefing Widget</a></li>                    
+                       <li><a href="wearable_n/scheduler_widget_sd_wn.htm">Scheduler Widget</a></li>
+                       <li><a href="wearable_n/taskmanager_sd_wn.htm">Task-manager</a></li>
                        <li><a href="wearable_n/widget_animation_sd_wn.htm">Widget Animation</a></li>
+                       <li><a href="wearable_n/worldclock_widget_sd_wn.htm">World Clock Widget</a></li>
                </ul>
                </li>           
        </ul>
index 6096eba..822e790 100644 (file)
@@ -135,6 +135,7 @@ recurring_alarm_set(appdata_s *appdata)
 &nbsp;&nbsp;&nbsp;if (TRACE_ERROR_IF(ret, &quot;Function app_control_set_operation() failed.&quot;)) 
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app_control_destroy(app_control);
+
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
 &nbsp;&nbsp;&nbsp;}
 
@@ -142,6 +143,7 @@ recurring_alarm_set(appdata_s *appdata)
 &nbsp;&nbsp;&nbsp;if (TRACE_ERROR_IF(ret, &quot;Function app_control_set_app_id() failed.&quot;)) 
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app_control_destroy(app_control);
+
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
 &nbsp;&nbsp;&nbsp;}
 
@@ -188,6 +190,7 @@ ontime_alarm_set(appdata_s *appdata)
 &nbsp;&nbsp;&nbsp;if (TRACE_ERROR_IF(ret, &quot;Function app_control_set_operation() failed.&quot;)) 
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app_control_destroy(app_control);
+
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
 &nbsp;&nbsp;&nbsp;}
 
@@ -195,6 +198,7 @@ ontime_alarm_set(appdata_s *appdata)
 &nbsp;&nbsp;&nbsp;if (TRACE_ERROR_IF(ret, &quot;Function app_control_set_app_id() failed.&quot;)) 
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app_control_destroy(app_control);
+
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
 &nbsp;&nbsp;&nbsp;}
 
@@ -248,11 +252,10 @@ app_control(app_control_h app_control, void *data)
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recurring_alarm_invoked(app_control, appdata);
 &nbsp;&nbsp;&nbsp;} 
-&nbsp;&nbsp;&nbsp;else
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!strncmp(APP_CONTROL_OPERATION_ALARM_ONTIME, operation, strlen(APP_CONTROL_OPERATION_ALARM_ONTIME))) 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ontime_alarm_invoked(app_control, appdata);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;else if (!strncmp(APP_CONTROL_OPERATION_ALARM_ONTIME, operation, strlen(APP_CONTROL_OPERATION_ALARM_ONTIME))) 
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ontime_alarm_invoked(app_control, appdata);
+&nbsp;&nbsp;&nbsp;}
 
 &nbsp;&nbsp;&nbsp;free(operation);
 }
index 538de76..36d2d29 100644 (file)
@@ -1841,7 +1841,7 @@ model_bundle_keyval_type_get(const bundle_keyval_t *kv, int *type)
 &nbsp;&nbsp;&nbsp;// This function is used within the callback function invoked by the bundle_foreach() function
 &nbsp;&nbsp;&nbsp;// If the returned value is non-negative, it points to the value type. Otherwise, the error code is returned
 &nbsp;&nbsp;&nbsp;*type = bundle_keyval_get_type((bundle_keyval_t*)kv);
-&nbsp;&nbsp;&nbsp;int ret = get_last_result() ;
+&nbsp;&nbsp;&nbsp;int ret = get_last_result();
 &nbsp;&nbsp;&nbsp;// Error handling
 
 &nbsp;&nbsp;&nbsp;return true;
index 55066f6..cdebac3 100644 (file)
@@ -123,10 +123,10 @@ get_frequently_used_apps(void *data EINA_UNUSED, Evas_Object * obj EINA_UNUSED,
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Get an attribute: Total count of use
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context_history_record_get_int(record_h, CONTEXT_HISTORY_TOTAL_COUNT, &amp;total_count);
 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Get an attribute : Total duration of use
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Get an attribute: Total duration of use
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context_history_record_get_int(record_h, CONTEXT_HISTORY_TOTAL_DURATION, &amp;total_duration);
 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Get an attribute : Last time of use
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Get an attribute: Last time of use
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context_history_record_get_int(record_h, CONTEXT_HISTORY_LAST_TIME, &amp;last_time);
 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Destroy the record handle
index edb6a49..88ed047 100644 (file)
@@ -244,7 +244,7 @@ l_img_paths = data_available_images_get();
 c = eina_list_count(l_img_paths);
 
 // (2)
-for (i = 0 ; i &lt; c; i++)
+for (i = 0; i &lt; c; i++)
 {
 &nbsp;&nbsp;&nbsp;elm_genlist_item_append(genlist, s_info.list_it_class, eina_list_nth(l_img_paths, i), 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
@@ -319,7 +319,7 @@ static Evas_Object
 <p class="figure">Figure: Container item structure</p>
 <p align="center"><img alt="Container item structure" src="../images/drag_and_drop_container_item.png" /></p>
 
-<h4>Drap and Drop Operation</h4>
+<h4>Drag and Drop Operation</h4>
 
 <p>To start the drag and drop operation, the <span style="font-family: Courier New,Courier,monospace">longpressed</span> smart callback is used on the <span style="font-family: Courier New,Courier,monospace">elm_gengrid</span> and <span style="font-family: Courier New,Courier,monospace">elm_genlist</span> components. This callback is invoked when the user moves the mouse pointer above the container item, presses the left mouse button, and holds it for 0.5 seconds.</p>
 
index 64c9fe8..48eda8f 100644 (file)
@@ -256,7 +256,7 @@ list_view_add(app_data *app, Evas_Object *parent, const char *path, const char *
 &nbsp;&nbsp;&nbsp;data-&gt;list_view.app = app;
 &nbsp;&nbsp;&nbsp;data-&gt;list_view.navi = parent;
 &nbsp;&nbsp;&nbsp;data-&gt;list_view.curr_path = (dir_name) ? common_util_strconcat(path, &quot;/&quot;, dir_name, NULL)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  : strdup(path);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: strdup(path);
 &nbsp;&nbsp;&nbsp;data-&gt;list_view.is_root = model_utils_is_root_path(data-&gt;list_view.curr_path);
 
 &nbsp;&nbsp;&nbsp;data-&gt;file_list = NULL;
index 0ea0845..6264cba 100644 (file)
@@ -23,7 +23,7 @@
                <p><img alt="Mobile native" src="../images/mobile_s_n.png"/></p>
        </div>
   <h1>Maps Sample Overview</h1>
-<p>The Maps application demonstrates how to use map services, such as geocoding, place search, and routing, using the <a href="../../../org.tizen.native.mobile.apireference/group__CAPI__MAPS__SERVICE__MODULE.html">Map Service</a> API.</p>
+<p>The Maps application demonstrates how to use map services, such as geocoding, place search, and routing, using the <a href="../../../org.tizen.native.mobile.apireference/group__CAPI__MAPS__SERVICE__MODULE.html">Maps Service</a> API.</p>
 <p>The following figure illustrates the main view of the Maps application.</p>
        <p class="figure">Figure: Maps main view</p>
        <p align="center"><img alt="Maps main view" src="../images/lbs_maps.png" />
@@ -118,7 +118,7 @@ MapLocationView(Evas_Object *view_layout)
 
 &nbsp;&nbsp;&nbsp;app_get_resource(MAP_VIEW_EDJ_FILE, edj_path, (int)PATH_MAX);
 
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;edj_path : %s&quot;, edj_path);
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;edj_path: %s&quot;, edj_path);
 
 &nbsp;&nbsp;&nbsp;elm_layout_file_set(view_layout, edj_path, &quot;map-view&quot;);
 &nbsp;&nbsp;&nbsp;evas_object_size_hint_weight_set(view_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -132,7 +132,7 @@ MapLocationView(Evas_Object *view_layout)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to create map object&quot;);
 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;}
 
@@ -243,7 +243,7 @@ create_search_view(Evas_Object *parent)
 
 &nbsp;&nbsp;&nbsp;app_get_resource(SEARCH_VIEW_EDJ_FILE, edj_path, (int)PATH_MAX);
 
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;edj_path : %s&quot;, edj_path);
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;edj_path: %s&quot;, edj_path);
 
 &nbsp;&nbsp;&nbsp;m_search_view_layout = elm_layout_add(parent);
 &nbsp;&nbsp;&nbsp;elm_layout_file_set(m_search_view_layout, edj_path, &quot;result-view&quot;);
@@ -795,7 +795,7 @@ request_place(maps_service_h maps, double lat, double lon, char *search_keyword,
 &nbsp;&nbsp;&nbsp;else 
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Keyword search
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;poi search keyword : %s&quot;, search_keyword);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;poi search keyword: %s&quot;, search_keyword);
 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret = maps_place_filter_set_place_name(filter, search_keyword); // Keyword search. No POI category search
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ret != MAPS_ERROR_NONE) 
@@ -827,7 +827,7 @@ request_place(maps_service_h maps, double lat, double lon, char *search_keyword,
 &nbsp;&nbsp;&nbsp;else 
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__request_id = request_id;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;request_id : %d&quot;, __request_id);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;request_id: %d&quot;, __request_id);
 &nbsp;&nbsp;&nbsp;}
 
 &nbsp;&nbsp;&nbsp;EXIT:
@@ -947,12 +947,12 @@ request_route(maps_service_h maps, double src_lat, double src_lon,
 
 &nbsp;&nbsp;&nbsp;if (error == MAPS_ERROR_NONE) 
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;request_id : %d&quot;, request_id);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;request_id: %d&quot;, request_id);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__route_request_id = request_id;
 &nbsp;&nbsp;&nbsp;} 
 &nbsp;&nbsp;&nbsp;else 
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;Route Service Request Failed ::  [%d]&quot;, error);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;Route Service Request Failed: [%d]&quot;, error);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__route_request_id = ROUTE_REQ_ID_IDLE;
 &nbsp;&nbsp;&nbsp;}
 
@@ -1029,7 +1029,7 @@ __maps_route_segment_cb(int index, int total, maps_route_segment_h segment, void
 {
 &nbsp;&nbsp;&nbsp;if (!segment) 
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;critical error : FAILED&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;critical error: FAILED&quot;);
 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
 &nbsp;&nbsp;&nbsp;}
@@ -1042,7 +1042,7 @@ __maps_route_segment_cb(int index, int total, maps_route_segment_h segment, void
 &nbsp;&nbsp;&nbsp;maps_coordinates_get_longitude(origin, &amp;(segment_origin.longitude));
 &nbsp;&nbsp;&nbsp;maps_coordinates_destroy(origin);
 
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;Segment Origin Lat : %f, Lon : %f&quot;, 
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;Segment Origin Lat: %f, Lon: %f&quot;, 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;segment_origin.latitude, segment_origin.longitude);
 
 &nbsp;&nbsp;&nbsp;// Segment destination coordinates
@@ -1051,7 +1051,7 @@ __maps_route_segment_cb(int index, int total, maps_route_segment_h segment, void
 &nbsp;&nbsp;&nbsp;maps_coordinates_get_longitude(destination, &amp;(segment_destination.longitude));
 &nbsp;&nbsp;&nbsp;maps_coordinates_destroy(destination);
 
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;Segment Destination Lat : %f, Lon : %f&quot;, 
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;Segment Destination Lat: %f, Lon: %f&quot;, 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;segment_destination.latitude, segment_destination.longitude);
 
 &nbsp;&nbsp;&nbsp;// Segment maneuvers information
@@ -1088,17 +1088,17 @@ __parse_route_data(maps_route_h route, int index, int total, void *user_data)
 &nbsp;&nbsp;&nbsp;// Change everything to KM (by default)
 &nbsp;&nbsp;&nbsp;if (dist_unit == MAPS_DISTANCE_UNIT_M) 
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;distance : %.5f m&quot;, distance);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;distance: %.5f m&quot;, distance);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;distance = distance / 1000; // Convert the distance into KM
 &nbsp;&nbsp;&nbsp;} 
 &nbsp;&nbsp;&nbsp;else if (dist_unit == MAPS_DISTANCE_UNIT_KM) 
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;distance : %.5f km&quot;, distance);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;distance: %.5f km&quot;, distance);
 &nbsp;&nbsp;&nbsp;}
 
 &nbsp;&nbsp;&nbsp;// Get the total duration
 &nbsp;&nbsp;&nbsp;maps_route_get_total_duration(route, &amp;duration);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;duration : %ld sec&quot;, duration);
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;duration: %ld sec&quot;, duration);
 &nbsp;&nbsp;&nbsp;duration = (duration + 30) / 60; // Convert the duration to minutes
 
 &nbsp;&nbsp;&nbsp;(*route_result) = (route_s *)malloc(sizeof(route_s));
@@ -1138,7 +1138,7 @@ __maps_service_search_route_cb(maps_error_e error, int request_id, int index,
 
 &nbsp;&nbsp;&nbsp;__parse_route_data(route, index, total, (void *) user_data);
 
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;distance :: %f&quot;, (*route_result)-&gt;__distance);
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;distance: %f&quot;, (*route_result)-&gt;__distance);
 
 &nbsp;&nbsp;&nbsp;on_route_result();
 
index f7647c9..c0e590c 100644 (file)
@@ -359,4 +359,4 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga
 </script>
 
 </body>
-</html>
+</html>
\ No newline at end of file
index c0ed2bb..378fe8e 100644 (file)
 <p>Obtain the needed client IDs and secrets from the respective resource owners. For example, the Google client ID and secret can be obtained from the <strong>Developers Console</strong> as follows:</p>
 <ol>
 <li>Go to <a href="https://console.developers.google.com/project" target="_blank">Developers Console</a>, sign in to your Google account, and click <strong>Create project</strong>.</li>
-<li>In the <strong>New Project</strong> dialog box, put a <strong>name of your project</strong> for the OAuth2 sample and click <strong>Create</strong>.</li>
-<li>Select the <strong>Enable and manage APIs</strong> on dashboard &gt; <strong>Credentials</strong> on left tab &gt; <strong>OAuth consent screen</strong> on upper tab.</li>
-<li>Put <strong>product name</strong> by using your project's and click <strong>Save</strong>.</li>
-<li>Click the <strong>New credentials</strong> from the drop down box and select <strong>OAuth client ID</strong>.</li>
-<li>Choice the <strong>Application type</strong> as <strong>Web application</strong>.</li>
-<li>Put the <strong>Name</strong> as a valid name for <strong>your client</strong>.</li>
-<li>In order to set a new <strong>Authorized redirect URIs</strong> in creation of Google ID and secret, you need to put it as <strong>OAUTH2_REDIRECT_URL</strong> in <strong>oauth_provider_configs.h</strong> .<br><pre class="prettyprint">/*All apps are registered with this redirection url*/<br>#define OAUTH2_REDIRECT_URL "dummy_redirect_url" /*Developer has to provide the redirect url*/</pre>You have to replace <strong>"dummy_redirect_url"</strong> with any valid URI and can set <strong>Authorized redirect URIs</strong> by using that.<br>Then, you can finish the process of generation for creating client ID and secret.</li>
+<li>In the <strong>New Project</strong> dialog box, enter the name of your project for the OAuth2 sample and click <strong>Create</strong>.</li>
+<li>Select the <strong>Enable and manage APIs</strong> on the dashboard, then <strong>Credentials</strong> on left tab, and then <strong>OAuth consent screen</strong> on the upper tab.</li>
+<li>Enter the product name by using your project name and click <strong>Save</strong>.</li>
+<li>In the drop-down box, select <strong>New credentials &gt; OAuth client ID</strong>.</li>
+<li>Select <strong>Web application</strong> as the <strong>Application type</strong>.</li>
+<li>Enter a valid name for <strong>your client</strong> in the <strong>Name</strong> field.</li>
+<li>In order to set new <strong>Authorized redirect URIs</strong> when creating the Google ID and secret, enter the redirection URL as <span style="font-family: Courier New,Courier,monospace">OAUTH2_REDIRECT_URL</span> in the <span style="font-family: Courier New,Courier,monospace">oauth_provider_configs.h</span> file:
+<pre class="prettyprint">// All applications are registered with this redirection URL
+#define OAUTH2_REDIRECT_URL &quot;dummy_redirect_url&quot; 
+// You must provide the redirect URL
+</pre>
+<p>Replace <span style="font-family: Courier New,Courier,monospace">dummy_redirect_url</span> with a valid URI in the file. On the web site, set the URI to the <strong>Authorized redirect URIs</strong> field and finalize the client ID and secret generation process.</p></li>
 </ol>
 </li>
 </ul>
index 0c0a277..a8e9852 100644 (file)
@@ -66,7 +66,7 @@ static void _createBlackNotes(void *data)
 
 &nbsp;&nbsp;&nbsp;const int black_buttons_count = 6;
 
-&nbsp;&nbsp;&nbsp;for (int i = 0 ; i &lt; black_buttons_count ; i++)
+&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; black_buttons_count; i++)
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;note_struct *note = (note_struct*) calloc(1, sizeof(note_struct));
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETM_IF(!note, &quot;note is NULL&quot;);
index f77cf98..58d54cb 100644 (file)
@@ -29,7 +29,7 @@
 <p>The following figure illustrates the main views of the Scheduler application and the Details event view.
 </p>
 
-<p class="figure">Figure : Scheduler main views</p> 
+<p class="figure">Figure: Scheduler main views</p> 
 <p align="center"><img alt="Scheduler main views" src="../images/scheduler_main.png" /></p> 
 
 <p>Each form contains appropriate UI components to enter required data, such as the event title, date and time, time zone, location, recurrence, priority, and sensitivity and buttons to create or save events.</p>
index 50d8fce..2442340 100644 (file)
@@ -221,7 +221,7 @@ page_count = page_scroller_page_count_get(page_scroller);
 box = box_create(page_scroller);
 
 // Create and append the indexes to the box component
-for (i = 0 ; i &lt; page_count; i++) 
+for (i = 0; i &lt; page_count; i++) 
 {
 &nbsp;&nbsp;&nbsp;elm_box_pack_end(box, indice_create(box));
 }
index 3630fac..45bfaf0 100644 (file)
        <div id="profile">
                <p><img alt="Mobile native" src="../images/mobile_s_n.png"/></p>
        </div>
-
+       
   <h1>Mobile Native Sample Descriptions</h1>
-
    <p>To access general information about the native sample functionality and the content of the sample source files, click the sample name in the following tables.</p>
-
-
+   
+   
    <table border="1">
    <caption>
      Table: Mobile native samples in the Tizen SDK
      <td><a href="bluetoothchat_sd_mn.htm">Bluetooth Chat</a></td>
      <td>Demonstrates how you can send and receive data between 2 devices.</td>
        </tr>
-       <tr>
+    <tr>
      <td><a href="bluetooth_le_collector_sd_mn.htm">Bluetooth LE Collector</a></td>
-     <td>Demonstrates how you can implement advertised data collection via Bluetooth Low Energy adapter.</td>
-       </tr>
+     <td>Demonstrates how you can implement advertised data collection through the Bluetooth Low Energy (LE) adapter.</td>
+    </tr>
     <tr>
      <td><a href="bundle_sd_mn.htm">Bundle</a></td>
      <td>Demonstrates how you can manipulate bundle objects.</td>
      <td>Demonstrates how you can implement a complex view using EFL UI components and containers.</td>
     </tr>
        <tr>
-     <td><a href="files_sharing_sd_mn.htm">Files Sharing</a></td>
-     <td>Demonstrates how you can implement a Files Sharing application using Bluetooth OPP protocol.</td>
-    </tr>
+        <td><a href="files_sharing_sd_mn.htm">Files Sharing</a></td>
+        <td>Demonstrates how you can implement a file sharing application using the Bluetooth OPP protocol.</td>
+       </tr>
        <tr>
-     <td><a href="files_sharing_server_sd_mn.htm">Files Sharing</a></td>
-     <td>Demonstrates how you can implement a Files Sharing Server application that receives files from other devices using Bluetooth OPP protocol.</td>
-    </tr>
+        <td><a href="files_sharing_server_sd_mn.htm">Files Sharing Server</a></td>
+        <td>Demonstrates how you can receive files using the Bluetooth OPP protocol.</td>
+       </tr>
+       <tr>
+     <td><a href="lbs_geofence_sd_mn.htm">Geofence</a></td>
+     <td>Demonstrates how you can manage fences and places.</td>
+    </tr>      
        <tr>
      <td><a href="glview11_cube_sd_mn.htm">GLView11Cube</a></td>
      <td>Demonstrates how you can use ElmGLView to create a 3D cube on the screen.</td>
      <td><a href="layout_transitions_sd_mn.htm">Layout Transitions</a></td>
      <td>Demonstrates how you can implement an animated transition between different application views.</td>
     </tr>
-       <tr> 
-     <td><a href="lbs_geofence_sd_mn.htm">Geofence</a></td> 
-     <td>Demonstrates how you can manage fences and places.</td>
-    </tr>
-       <tr> 
-     <td><a href="lbs_maps_sd_mn.htm">Maps</a></td> 
-     <td>Demonstrates how you can use map services, such as geocode, place search, and routing.</td>
-    </tr>
        <tr>
      <td><a href="oauth_sd_mn.htm">LibOauth</a></td>
      <td>Demonstrates how you can  get access tokens from various resource owners, such as Twitter and Tumblr, who use the OAuth protocol RFC5849.</td>
      <td>Demonstrates how you can implement a screen locking mechanism.</td>
     </tr>
        <tr>
+     <td><a href="lbs_maps_sd_mn.htm">Maps</a></td>
+     <td>Demonstrates how you can use map services, such as geocode, place search, and routing.</td>
+    </tr>      
+       <tr>
      <td><a href="mediaapp_sd_mn.htm">Media App</a></td>
      <td>Demonstrates how you can develop media handling applications with the ability to manage different media sources.</td>
     </tr>
      <td><a href="piano_sd_mn.htm">Piano</a></td>
      <td>Demonstrates how you can implement a complex view using EFL UI components with different EDC styles.</td>
     </tr>
-    <tr>
-     <td><a href="power_manager_sd_mn.htm">Power Manager</a></td>
-     <td>Demonstrates how you can use System and App Control API to monitor and change device's settings (battery level, screen brightness, Wi-Fi, GPS, Bluetooth).</td>
-    </tr>
+       <tr>
+        <td><a href="power_manager_sd_mn.htm">Power Manager</a></td>
+        <td>Demonstrates how you can monitor and change device settings, such as battery level, screen brightness, Wi-Fi, GPS, and Bluetooth.</td>
+       </tr>
        <tr>
      <td><a href="preference_sd_mn.htm">Preference</a></td>
      <td>Demonstrates how you can work with custom preferences.</td>
      <td>Demonstrates how you can implement a complex view using recursive composition of the standard EFL components.</td>
     </tr>
        <tr>
-     <td><a href="radio_sd_mn.htm">Radio</a></td>
-     <td>Demonstrates how you can create an application utilizing Radio API.</td>
-    </tr>
+        <td><a href="radio_sd_mn.htm">Radio</a></td>
+        <td>Demonstrates how you can create a radio application using the <a href="../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__RADIO__MODULE.html">Radio</a> API.</td>
+        </tr>
        <tr>
         <td><a href="resource_management_sd_mn.htm">Resource Management</a></td>
         <td>Demonstrates how you can use the <a href="../../..//org.tizen.native.mobile.apireference/group__CAPI__RESOURCE__MANAGER__MODULE.html">Resource Manager</a> API together with the SDK&#39;s Resource Manager tool to benefit from task automation.</td>
     <td><a href="scroller_index_sd_mn.htm">Scroller Index</a></td>
      <td>Demonstrates how you can implement an animated index connected with an Elm scroller component.</td>
     </tr>
-
        <tr>
      <td><a href="selfcamera_sd_mn.htm">SelfCamera</a></td>
      <td>Demonstrates how you can use the front camera in your application.</td>
        <tr>
      <td><a href="stopwatch_sd_mn.htm">Stopwatch</a></td>
      <td>Demonstrates how you can implement a complex view using recursive composition of the standard EFL UI components and containers in a component hierarchy.</td>
-    </tr>
+    </tr>      
        <tr>
-     <td><a href="stop_watch_sd_mn.htm">Stop watch application</a></td>
+     <td><a href="stop_watch_sd_mn.htm">Stop Watch</a></td>
      <td>Demonstrates how you can implement a simple stop watch application.</td>
     </tr>
-       <tr>
-     <td><a href="stream-player-mn.html">Stream Player</a></td>
-     <td>Demonstrates how you can implement the audio/video player using the Player API. The sample supports both local and online media resources.</td>
+               <tr>
+     <td><a href="stream_player_sd_mn.htm">Stream-player</a></td>
+     <td>Demonstrates how you can implement an audio and video player using the <a href="../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">Player</a> API. The sample supports both local and online media resources.</td>
     </tr>
        <tr>
         <td><a href="syncadapterapp_sd_mn.htm">Sync Adapter App</a></td>
     </tr>
        <tr>
      <td><a href="voice_control_sd_mn.htm">Voice Control</a></td>
-     <td>Demonstrates how you can use the <a href=".../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__VOICE__CONTROL__MODULE.html">Voice Control</a> API to initialize, deinitialize, add, and remove voice commands.</td>
+     <td>Demonstrates how you can use the <a href="../../../org.tizen.native.mobile.apireference/group__CAPI__UIX__VOICE__CONTROL__MODULE.html">Voice control</a> API to initialize, deinitialize, add, and remove voice commands.</td>
     </tr>
        <tr>
      <td><a href="voice_control_elm_sd_mn.htm">Voice Control for EFL Components</a></td>
     </tr>
        <tr>
      <td><a href="ui_setting_sd_mn.htm">[UI Sample] Setting</a></td>
-     <td>Demonstrates how you can implement a Settings application with pop-up menus and different views through EFL UI components and containers. </td>
+     <td>Demonstrates how you can implement a Settings application with pop-up menus and different views through EFL UI components and containers.</td>
     </tr>
    </tbody>
   </table>
-
-
 <script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../scripts/showhide.js"></script>
 </div></div></div>
index bdc8ed2..c1317e1 100644 (file)
@@ -28,7 +28,7 @@
 <p>The Service Adaptor sample demonstrates how you can download files from a cloud storage using the <a href="../../../org.tizen.native.mobile.apireference/group__SERVICE__ADAPTOR__MODULE.html">Service Adaptor</a> API.</p>
 <p>The following figure illustrates the main views of the Service Adaptor application.</p>
 
-<p class="figure">Figure : Service Adaptor main views</p>
+<p class="figure">Figure: Service Adaptor main views</p>
 <p align="center"><img alt="Service Adaptor main views" src="../images/service_adaptor_main.png" /> <img alt="Service Adaptor main views" src="../images/service_adaptor_file_list.png" /> <img alt="Service Adaptor main views" src="../images/service_adaptor_file_details.png" /></p>
 <p align="center"><img alt="Service Adaptor main views" src="../images/service_adaptor_file_download.png" /> <img alt="Service Adaptor main views" src="../images/service_adaptor_download_progress.png" /> <img alt="Service Adaptor main views" src="../images/service_adaptor_download_complete.png" /></p>
 
@@ -95,7 +95,7 @@ static bool
 _plugin_iterator_cb(char *plugin_uri, int service_mask, void *user_data)
 {
 &nbsp;&nbsp;&nbsp;Evas_Object *list = (Evas_Object *)user_data;
-&nbsp;&nbsp;&nbsp;log_debug(&quot;plugin uri : %s, masked : &lt;auth(%d), storage(%d)&gt;&quot;, plugin_uri,
+&nbsp;&nbsp;&nbsp;log_debug(&quot;plugin uri: %s, masked: &lt;auth(%d), storage(%d)&gt;&quot;, plugin_uri,
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SERVICE_PLUGIN_SERVICE_AUTH &amp; service_mask), (SERVICE_PLUGIN_SERVICE_STORAGE &amp; service_mask));
 &nbsp;&nbsp;&nbsp;if ((service_mask &amp; SERVICE_PLUGIN_SERVICE_AUTH) &amp;&amp; (service_mask &amp; SERVICE_PLUGIN_SERVICE_STORAGE)) 
 &nbsp;&nbsp;&nbsp;{
diff --git a/org.tizen.sampledescriptions/html/mobile_n/stream-player-mn.html b/org.tizen.sampledescriptions/html/mobile_n/stream-player-mn.html
deleted file mode 100644 (file)
index 465670d..0000000
+++ /dev/null
@@ -1,775 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-       <meta http-equiv="X-UA-Compatible" content="IE=9" />
-       <link rel="stylesheet" type="text/css" href="../css/styles.css" />
-       <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
-       <script type="text/javascript" src="../scripts/snippet.js"></script>
-       <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
-       <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
-       <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
-       <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
-       <title>Stream-Player Sample Overview</title>
-</head>
-
-<body class="no-toc" onload="prettyPrint()" style="overflow: auto;">
-
-<div id="toc-navigation"></div>
-
-<div id="container"><div id="contents"><div class="content">
-       <div id="profile">
-               <p><img alt="Mobile native" src="../images/mn_icon.png"/></p>
-       </div>
-
-<!-- ********************************************************************************** -->
-
-       <h1>Stream-Player Sample Overview</h1>
-       <p>This sample demonstrates how to use the Player API to play audio and video files as well as stream media files from the Web.</p>
-
-       <p>The figure below illustrates the application's view.</p>
-       <p class="figure">Figure 1: Stream-Player application's screen</p>
-<p id="app-screenshot" style="text-align:center;">
-       <img alt="Application screen" height="364" hspace="20" src="../images/stream-player/stream-player-application-view.png" />
-</p>
-
-<p>The sample application's user interface consists of a single view divided into the following sections:</p>
-<ul>
-       <li>Toolbar - Allows the user to choose a file to be played, display information about the file, or capture a screenshot from the played video;</li>
-       <li>Option Panel - Allows the user to set the volume level, switch the mute option or switch the looping mode;</li>
-       <li>Playback options area - Allows the user to set the play, pause and stop options. It also allows to use the seek and playback rate options;</li>
-       <li>Display / Album art area - The played video or album art of a music file is displayed here. Note that if the music file does not provide any album art, a musical note image is displayed instead.</li>
-</ul>
-
-
-<p class="figure">Figure 2: Stream-Player layout structure</p>
-<p id="layout-structure" style="text-align:center;">
-       <img alt="Stream-Player layout structure" height="550" hspace="80" src="../images/stream-player/stream-player-layout-structure.png" />
-</p>
-
-<p>The application's workflow can be divided into the following pipelines:</p>
-<ul>
-       <li>application initialization;</li>
-       <li>local file playback;</li>
-       <li>online file playback.</li>
-</ul>
-
-
-<p class="figure">Figure 3: Stream-Player application workflow</p>
-<p id="stream-player-application-workflow" style="text-align:center;">
-       <img alt="Stream-Player application workflow" height="550" hspace="80" src="../images/stream-player/stream-player-application-workflow.png" />
-</p>
-
-<h3>Prerequisites</h3>
-<p>To ensure proper application execution, the following privileges must be set:</p>
-<ul>
-       <li>http://tizen.org/privilege/network.get;</li>
-       <li>http://tizen.org/privilege/mediastorage;</li>
-       <li>http://tizen.org/privilege/internet;</li>
-       <li>http://tizen.org/privilege/network.set;</li>
-       <li>http://tizen.org/privilege/content.write;</li>
-       <li>http://tizen.org/privilege/appmanager.launch;</li>
-       <li>http://tizen.org/privilege/network.profile;</li>
-       <li>http://tizen.org/privilege/externalstorage.</li>
-</ul>
-
-
-<!-- ********************************************************************************** -->
-
-<h2>Implementation</h2>
-<h3>Type Definitions</h3>
-<p> The <span style="font-family: Courier New,Courier,monospace">view_info_s</span> structure contains references to objects created by the view module.</p>
-<pre class="prettyprint">
-struct view_info_s {
-&nbsp;&nbsp;&nbsp;Evas_Object *win;
-&nbsp;&nbsp;&nbsp;Evas_Object *conform;
-&nbsp;&nbsp;&nbsp;Evas_Object *grid;
-&nbsp;&nbsp;&nbsp;Evas_Object *button_panel;
-&nbsp;&nbsp;&nbsp;Evas_Object *pause_play_btn;
-&nbsp;&nbsp;&nbsp;Evas_Object *toolbar;
-&nbsp;&nbsp;&nbsp;Evas_Object *progress_panel;
-&nbsp;&nbsp;&nbsp;Evas_Object *seek_slider;
-&nbsp;&nbsp;&nbsp;Evas_Object *playback_rate_slider;
-&nbsp;&nbsp;&nbsp;Evas_Object *buffer_progress_bar;
-&nbsp;&nbsp;&nbsp;Evas_Object *option_panel;
-&nbsp;&nbsp;&nbsp;Evas_Object *mute_check;
-&nbsp;&nbsp;&nbsp;Evas_Object *display;
-&nbsp;&nbsp;&nbsp;Evas_Object *album_art;
-&nbsp;&nbsp;&nbsp;Evas_Object *current_popup;
-&nbsp;&nbsp;&nbsp;Eina_Bool play_btn_play_mode_on;
-&nbsp;&nbsp;&nbsp;int found_storage_id;
-&nbsp;&nbsp;&nbsp;Eina_Stringshare *video_path;
-&nbsp;&nbsp;&nbsp;Eina_Stringshare *audio_path;
-&nbsp;&nbsp;&nbsp;Eina_Stringshare *stream_uri;
-&nbsp;&nbsp;&nbsp;Eina_Bool use_stream_album_art;
-&nbsp;&nbsp;&nbsp;Ecore_Timer *progress_timer;
-};
-</pre>
-
-<p>The <span style="font-family: Courier New,Courier,monospace">player_s</span> structure contains the objects used in the model.</p>
-<pre class="prettyprint">
-struct player_s {
-&nbsp;&nbsp;&nbsp;player_h player;
-&nbsp;&nbsp;&nbsp;Evas_Object *display;
-&nbsp;&nbsp;&nbsp;struct player_callback_s callbacks;
-};
-</pre>
-
-
-<p>The <span style="font-family: Courier New,Courier,monospace">player_callback_s</span> structure contains pointers to callback functions used to send information from the model to the view.</p>
-
-<pre class="prettyprint">
-struct player_callback_s {
-&nbsp;&nbsp;&nbsp;Player_Status_Changed_cb_t player_status_changed_cb;
-&nbsp;&nbsp;&nbsp;Player_Progress_Changed_cb_t player_progress_changed_cb;
-&nbsp;&nbsp;&nbsp;Player_Progress_End_cb_t player_progress_end_cb;
-&nbsp;&nbsp;&nbsp;Player_Screen_cb_t player_screen_cb;
-&nbsp;&nbsp;&nbsp;Player_Message_cb_t player_msg_cb;
-&nbsp;&nbsp;&nbsp;Player_Buffer_progress_cb_t player_buffer_progress_cb;
-};
-</pre>
-
-<p>The following callbacks are provided:</p>
-<ul>
-       <li><span style="font-family: Courier New,Courier,monospace">Player_Status_Changed_cb_t</span> - invoked when the player's state changes;</li>
-       <li><span style="font-family: Courier New,Courier,monospace">Player_Progress_Changed_cb_t</span> - invoked when there is a change in the playback progress e.g. after the user moves the seek slider;</li>
-       <li><span style="font-family: Courier New,Courier,monospace">Player_Progress_End_cb_t</span> - invoked when the playback ends. Note that the function is not invoked when the loop mode is used;</li>
-       <li><span style="font-family: Courier New,Courier,monospace">Player_Screen_cb_t</span> - invoked when a screenshot is taken;</li>
-       <li><span style="font-family: Courier New,Courier,monospace">Player_Message_cb_t</span> - invoked when a text message should be displayed, e.g an error popup;</li>
-       <li><span style="font-family: Courier New,Courier,monospace">Player_Buffer_progress_cb_t</span> - invoked when an online file buffer progress changes.</li>
-</ul>
-
-<!-- ********************************************************************************** -->
-<h3>Application Initialization</h3>
-<p>The entire application life-cycle is implemented in the main.c file, using the common Tizen application structure:</p>
-
-<pre class="prettyprint">
-int main(int argc, char *argv[])
-{
-&nbsp;&nbsp;&nbsp;int ret = 0;
-
-&nbsp;&nbsp;&nbsp;ui_app_lifecycle_callback_s event_callback = {0,};
-&nbsp;&nbsp;&nbsp;app_event_handler_h handlers[5] = {NULL, };
-
-&nbsp;&nbsp;&nbsp;event_callback.create = __app_create;
-&nbsp;&nbsp;&nbsp;event_callback.terminate = __app_terminate;
-
-&nbsp;&nbsp;&nbsp;ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, __ui_app_lang_changed, NULL);
-
-&nbsp;&nbsp;&nbsp;ret = ui_app_main(argc, argv, &event_callback, NULL);
-&nbsp;&nbsp;&nbsp;// Error handling
-}
-</pre>
-
-<p>The Stream-Player application's initialization is done within the <span style="font-family: Courier New,Courier,monospace">__app_create()</span> callback function where the <span style="font-family: Courier New,Courier,monospace">player_model_init()</span> function is responsible for the model's initialization. The <span style="font-family: Courier New,Courier,monospace">view_create_base_gui()</span> function is used to initialize the view module. On the application's termination, the <span style="font-family: Courier New,Courier,monospace">__app_terminate()</span> callback function is invoked, and all resources allocated within the model are freed.</p>
-
-<!-- ********************************************************************************** -->
-
-<h3 id="view">View</h3>
-<p>The entire application's GUI is implemented using Elementary widgets and containers. The application's layout is shown in Figure 2. As mentioned above, the application's layout is divided into the following sections:</p>
-<ul>
-       <li>Toolbar section,</li>
-       <li>Display section,</li>
-       <li>Playback options section,</li>
-       <li>Options section.</li>
-</ul>
-<p>Note that every section listed above (except for the display) is implemented using an Elementary <span style="font-family: Courier New,Courier,monospace">Box</span> container, filled with Elementary widgets. This box is then packed into a <span style="font-family: Courier New,Courier,monospace">grid</span> container.</p>
-
-
-<table>
-       <caption>Table: Base view creation code snippets and figures</caption>
-       <colgroup>
-               <col width="25%"></col>
-               <col width="50%"></col>
-               <col width="25%"></col>
-       </colgroup>
-       <tbody>
-               <tr>
-                       <th>Description</th>
-                       <th>Code snippet</th>
-                       <th>Figure</th>
-               </tr>
-
-               <tr>
-                       <td>The toolbar section is created using the <span style="font-family: Courier New,Courier,monospace">__create_toolbar()</span> function. The toolbar contains five buttons, created using the <span style="font-family: Courier New,Courier,monospace">__create_button()</span> function. The functions provide the user with access to both video and audio files as well as the ability to stream online files. The last two buttons allow the user to capture a screenshot of the displayed video and display information about current file.</td>
-                       <td>
-                               <pre class="prettyprint">
-static Eina_Bool __create_toolbar(void)
-{
-&nbsp;&nbsp;&nbsp;s_info.toolbar = elm_box_add(s_info.grid);
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;elm_box_padding_set(s_info.toolbar, 10, 0);
-&nbsp;&nbsp;&nbsp;elm_box_horizontal_set(s_info.toolbar, EINA_TRUE);
-
-&nbsp;&nbsp;&nbsp;elm_grid_pack(s_info.grid,  s_info.toolbar,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TOOLBAR_GEOMETRY_X, TOOLBAR_GEOMETRY_Y,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TOOLBAR_GEOMETRY_W, TOOLBAR_GEOMETRY_H);
-
-&nbsp;&nbsp;&nbsp;if (!__create_button(s_info.toolbar,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EINA_FALSE,  0.1, EVAS_HINT_EXPAND,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AUDIO_FILE_PATH, __toolbar_file_open_cb, (void*)EINA_FALSE))
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;
-&nbsp;&nbsp;&nbsp;if (!__create_button(s_info.toolbar,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EINA_FALSE,  0.1, EVAS_HINT_EXPAND,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VIDEO_FILE_PATH, __toolbar_file_open_cb, (void*)EINA_TRUE))
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;
-&nbsp;&nbsp;&nbsp;if (!__create_uri_entry())
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;
-&nbsp;&nbsp;&nbsp;if (!__create_button(s_info.toolbar,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EINA_FALSE, 0.1, EVAS_HINT_EXPAND,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCREENSHOT_ICON_FILE, __screen_capture_btn_clicked_cb, NULL))
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (!__create_button(s_info.toolbar,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EINA_FALSE, 0.1, EVAS_HINT_EXPAND,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INFO_ICON_FILE, __info_display_btn_clicked_cb, NULL))
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;evas_object_show(s_info.toolbar);
-&nbsp;&nbsp;&nbsp;return EINA_TRUE;
-}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
-                       </td>
-                       <td>
-                               <p style="text-align:center;">
-                                       <img alt="stream-player-toolbar-section" src="../images/stream-player/view/stream-player-toolbar-section.png" />
-                               </p>
-                       </td>
-               </tr>
-
-               <tr id="display-section-layout">
-                       <td>
-                               The display section is made of two stacked objects:
-                               <ul>
-                                       <li>The Display (top object) - used to display the played video file;</li>
-                                       <li>The album art (bottom object) - used to display the file's album art.</li>
-                               </ul>
-                               <p>The user can tap the display to turn pause on/off.</p>
-                       </td>
-                       <td>
-                               <pre class="prettyprint">
-static Eina_Bool __add_display(void)
-{
-&nbsp;&nbsp;&nbsp;if (!s_info.grid)
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;s_info.display = evas_object_image_add(evas_object_evas_get(s_info.grid));
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;evas_object_image_filled_set(s_info.display, EINA_TRUE);
-&nbsp;&nbsp;&nbsp;evas_object_event_callback_add(s_info.display,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EVAS_CALLBACK_MOUSE_DOWN, __display_clicked_cb, NULL);
-&nbsp;&nbsp;&nbsp;elm_grid_pack(s_info.grid, s_info.display,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DISPLAY_GEOMETRY_X, DISPLAY_GEOMETRY_Y,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DISPLAY_GEOMETRY_W, DISPLAY_GEOMETRY_H);
-&nbsp;&nbsp;&nbsp;evas_object_show(s_info.display);
-&nbsp;&nbsp;&nbsp;return EINA_TRUE;
-}
-
-static Eina_Bool __add_album_art(void)
-{
-&nbsp;&nbsp;&nbsp;if (!s_info.grid) {
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;s_info.album_art = elm_image_add(s_info.grid);
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;evas_object_event_callback_add(s_info.display,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EVAS_CALLBACK_MOUSE_DOWN, __display_clicked_cb, NULL);
-&nbsp;&nbsp;&nbsp;elm_grid_pack(s_info.grid, s_info.album_art,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DISPLAY_GEOMETRY_X, DISPLAY_GEOMETRY_Y,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DISPLAY_GEOMETRY_W, DISPLAY_GEOMETRY_H);
-&nbsp;&nbsp;&nbsp;return EINA_TRUE;
-}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
-                       </td>
-                       <td>
-                               <p style="text-align:center;">
-                                       <img alt="stream-player-display-section" src="../images/stream-player/view/stream-player-display-section.png" />
-                               </p>
-                       </td>
-               </tr>
-
-               <tr id="playback-options-section-layout">
-                       <td>The playback options section is created from the following objects:
-                               <ul>
-                                       <li>Elm_Slider - used to set seek position;</li>
-                                       <li>Elm_Button - used to stop the playback;</li>
-                                       <li>Elm_Button - used to toggle the pause mode;</li>
-                               </ul>
-
-                               <p>The Player API does not provide a callback to be invoked when playback progress changes. In order to update the progress slider, an <span style="font-family: Courier New,Courier,monospace">Ecore_Timer</span> is used. The current playback position is read using the <span style="font-family: Courier New,Courier,monospace">player_model_get_progress()</span> function. Check <a href="#model-playback-control">playback-controls</a> for details.</p>
-                       </td>
-                       <td>
-                               <pre class="prettyprint">
-static Eina_Bool __create_button_panel(void)
-{
-&nbsp;&nbsp;&nbsp;s_info.button_panel = elm_box_add(s_info.grid);
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;evas_object_size_hint_weight_set(s_info.button_panel,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-&nbsp;&nbsp;&nbsp;evas_object_size_hint_align_set(s_info.button_panel,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EVAS_HINT_FILL, EVAS_HINT_FILL);
-&nbsp;&nbsp;&nbsp;elm_box_horizontal_set(s_info.button_panel, EINA_TRUE);
-
-&nbsp;&nbsp;&nbsp;elm_grid_pack(s_info.grid,  s_info.button_panel,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BUTTON_PANEL_GEOMETRY_X, BUTTON_PANEL_GEOMETRY_Y,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BUTTON_PANEL_GEOMETRY_W, BUTTON_PANEL_GEOMETRY_H);
-
-&nbsp;&nbsp;&nbsp;if (!__create_button(s_info.button_panel,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EINA_TRUE, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BTN_ICON_STOP, __button_stop_clicked_cb, NULL))
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;s_info.pause_play_btn = __create_button(s_info.button_panel,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EINA_TRUE, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BTN_ICON_PLAY, __button_pause_play_clicked_cb, NULL);
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;
-&nbsp;&nbsp;&nbsp;evas_object_show(s_info.button_panel);
-&nbsp;&nbsp;&nbsp;return EINA_TRUE;
-}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
-                       </td>
-                       <td>
-                               <p style="text-align:center;">
-                                       <img alt="stream-player-playback-options-section" src="../images/stream-player/view/stream-player-playback-options-section.png" />
-                               </p>
-                       </td>
-               </tr>
-
-               <tr>
-                       <td>The playback options section is created from the following objects:
-                               <ul>
-                                       <li>Elm_Slider - used to set the volume level;</li>
-                                       <li>Elm_Checkbox - used to set the mute mode;</li>
-                                       <li>Elm_Checkbox - used to set the loop mode;</li>
-                               </ul>
-                       </td>
-                       <td>
-                               <pre class="prettyprint">
-static Eina_Bool __add_option_panel(void)
-{
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;s_info.option_panel = elm_box_add(s_info.grid);
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;elm_grid_pack(s_info.grid, s_info.option_panel,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOUND_PANEL_GEOMETRY_X, SOUND_PANEL_GEOMETRY_Y,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOUND_PANEL_GEOMETRY_W, SOUND_PANEL_GEOMETRY_H);
-
-&nbsp;&nbsp;&nbsp;if (!__add_option_panel_icon(SOUND_ICON_FILE))
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (!__add_sound_slider())
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;
-&nbsp;&nbsp;&nbsp;if (!__add_option_panel_icon(MUTE_ICON_FILE))
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;s_info.mute_check = __add_option_panel_check(__sound_mute_check_changed_cb);
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (!__add_option_panel_icon(LOOP_ICON_FILE))
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (!__add_option_panel_check(__playback_looping_changed_cb))
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;evas_object_show(s_info.option_panel);
-&nbsp;&nbsp;&nbsp;return EINA_TRUE;
-}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
-                       </td>
-                       <td>
-                               <p style="text-align:center;">
-                                       <img alt="stream-player-options-section" src="../images/stream-player/view/stream-player-options-section.png" />
-                               </p>
-                       </td>
-               </tr>
-       </tbody>
-</table>
-
-<!-- ********************************************************************************** -->
-
-<h5>Information popup</h5>
-<p>The information popup displays a text message with all information about a file gathered by the <a href="model-file-information">model</a>. The function below generates the message.</p>
-<pre class="prettyprint">
-static char *__get_stream_info(void)
-{
-&nbsp;&nbsp;&nbsp;// Variables declaration
-
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, "===== Stream info =====");
-
-&nbsp;&nbsp;&nbsp;__append_content_info(PLAYER_CONTENT_INFO_ALBUM,  msg, "Album: ");
-&nbsp;&nbsp;&nbsp;__append_content_info(PLAYER_CONTENT_INFO_ARTIST, msg, "Artist: ");
-&nbsp;&nbsp;&nbsp;__append_content_info(PLAYER_CONTENT_INFO_AUTHOR, msg, "Author: ");
-&nbsp;&nbsp;&nbsp;__append_content_info(PLAYER_CONTENT_INFO_GENRE,  msg, "Genre: ");
-&nbsp;&nbsp;&nbsp;__append_content_info(PLAYER_CONTENT_INFO_TITLE,  msg, "Title: ");
-&nbsp;&nbsp;&nbsp;__append_content_info(PLAYER_CONTENT_INFO_YEAR,   msg, "Year: ");
-
-&nbsp;&nbsp;&nbsp;player_model_get_codec(&audio_codec, &video_codec);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, "CODECS Audio: %s; Video: %s", audio_codec, video_codec);
-&nbsp;&nbsp;&nbsp;__append_underlined_text(msg, "Codecs:");
-&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, "Audio: ", "%s%s", audio_codec, NEW_LINE);
-&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, "Video: ", "%s%s", video_codec, NEW_LINE);
-&nbsp;&nbsp;&nbsp;free(audio_codec);
-&nbsp;&nbsp;&nbsp;free(video_codec);
-
-&nbsp;&nbsp;&nbsp;player_model_get_audio_stream_info(&sample_rate, &channel, &bit_rate);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, "AUDIO STREAM INFO: sample rate: %d; channel: %d; bit rate: %d", sample_rate, channel, bit_rate);
-&nbsp;&nbsp;&nbsp;__append_underlined_text(msg, "Audio stream info:");
-&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, "Sample rate: ", "%d%s", sample_rate, NEW_LINE);
-&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, "Channel: ", "%d%s", channel, NEW_LINE);
-&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, "Bit rate: ", "%d%s", bit_rate, NEW_LINE);
-
-&nbsp;&nbsp;&nbsp;player_model_get_video_stream_info(&fps, &bit_rate);
-&nbsp;&nbsp;&nbsp;player_model_get_video_size(&width, &height);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, "VIDEO STREAM INFO: FPS: %d; bit_rate: %d; size=[%d, %d]", fps, bit_rate, width, height);
-&nbsp;&nbsp;&nbsp;__append_underlined_text(msg, "Video stream info:");
-&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, "FPS: ", "%d%s", fps, NEW_LINE);
-&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, "Bit rate: ", "%d%s", bit_rate, NEW_LINE);
-&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, "Size: ", "%d x %d", width, height);
-
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, "===== Stream info =====");
-
-&nbsp;&nbsp;&nbsp;eina_strbuf_replace_all(msg, "&", "&amp;amp;"); //Every '&' character has to be replaced with '&amp;amp;'
-&nbsp;&nbsp;&nbsp;ret = eina_strbuf_string_steal(msg);
-&nbsp;&nbsp;&nbsp;eina_strbuf_free(msg);
-
-&nbsp;&nbsp;&nbsp;return ret;
-}
-</pre>
-<p>The text part of the popup uses tags similar to the HTML's ones. This can used to bold or underline parts of the text.</p>
-<pre class="prettyprint">
-static inline Eina_Stringshare *__bold_text(char *txt)
-{
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;return eina_stringshare_printf("&ltfont_weight=bold>%s&lt/font_weight&gt", txt); //&ltfont_weight=bold>%s&lt/font_weight> %s will be bolded
-}
-
-static inline void __append_bolded_text(Eina_Strbuf *msg, char *key, char *format, ...)
-{
-&nbsp;&nbsp;&nbsp;va_list args;
-&nbsp;&nbsp;&nbsp;Eina_Stringshare *bolded = __bold_text(key);
-&nbsp;&nbsp;&nbsp;va_start(args, format);
-&nbsp;&nbsp;&nbsp;eina_strbuf_append(msg, bolded);
-&nbsp;&nbsp;&nbsp;eina_strbuf_append_vprintf(msg, format, args);
-&nbsp;&nbsp;&nbsp;eina_stringshare_del(bolded);
-&nbsp;&nbsp;&nbsp;va_end(args);
-}
-
-static inline Eina_Stringshare *__underline_text(const char *txt, const char *color)
-{
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;return eina_stringshare_printf("&ltunderline=on underline_color=%s&gt%s&lt/underline&gt", color ? color : "#000000", txt);
-&nbsp;&nbsp;&nbsp;//"&ltunderline=on underline_color=%s&gt%s&lt/underline&gt %s will be underlined. Note that the default color of the underline is white.
-}
-
-static inline void __append_underlined_text(Eina_Strbuf *msg, const char *txt)
-{
-&nbsp;&nbsp;&nbsp;Eina_Stringshare *underlined = __underline_text(txt, "#000000");
-&nbsp;&nbsp;&nbsp;eina_strbuf_append_printf(msg, "%s%s", underlined, NEW_LINE);
-&nbsp;&nbsp;&nbsp;eina_stringshare_del(underlined);
-}
-</pre>
-<p>Refer to the links below for information about the tags:</p>
-<ul>
-       <li><a href="https://developer.tizen.org/ko/development/ui-practices/native-application/efl/graphical-objects/evas-objects?langredirect=1#block">Textblock</a>;</li>
-       <li><a href="https://developer.tizen.org/ko/development/ui-practices/native-application/efl/fonts?langredirect=1">Fonts</a>.</li>
-</ul>
-
-<!-- ********************************************************************************** -->
-
-<h3>Model</h3>
-
-<p>The image below describes the typical state changes of the player.</p>
-<p class="figure">Figure 4: Stream-Player state changes</p>
-<p id="state-changes" style="text-align:center;">
-       <img alt="Stream-Player state changes" height="550" hspace="80" src="../images/stream-player/stream-player-state-changes.png" />
-</p>
-
-<h5>Initialization</h5>
-
-<pre class="prettyprint">
-void player_model_init(Player_Status_Changed_cb_t player_status_changed_cb,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Player_Progress_Changed_cb_t player_progress_changed_cb,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Player_Progress_End_cb_t player_progress_end_cb,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Player_Screen_cb_t player_screen_cb,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Player_Message_cb_t player_msg_cb,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Player_Buffer_progress_cb_t player_buffer_progress_cb)
-{
-&nbsp;&nbsp;&nbsp;int error_code = player_create(&s_info.player);
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;s_info.callbacks.player_status_changed_cb = player_status_changed_cb;
-&nbsp;&nbsp;&nbsp;s_info.callbacks.player_progress_changed_cb = player_progress_changed_cb;
-&nbsp;&nbsp;&nbsp;s_info.callbacks.player_progress_end_cb = player_progress_end_cb;
-&nbsp;&nbsp;&nbsp;s_info.callbacks.player_screen_cb = player_screen_cb;
-&nbsp;&nbsp;&nbsp;s_info.callbacks.player_msg_cb = player_msg_cb;
-&nbsp;&nbsp;&nbsp;s_info.callbacks.player_buffer_progress_cb = player_buffer_progress_cb;
-
-&nbsp;&nbsp;&nbsp;if (player_set_interrupted_cb(s_info.player, __player_interrupted_cb, NULL) != PLAYER_ERROR_NONE) {
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (player_set_completed_cb(s_info.player, __player_completed_cb, NULL) != PLAYER_ERROR_NONE) {
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (player_set_error_cb(s_info.player, __player_error_cb, NULL) != PLAYER_ERROR_NONE)
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (player_set_buffering_cb(s_info.player, __player_buffering_cb, NULL) != PLAYER_ERROR_NONE)
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (player_set_progressive_download_message_cb(s_info.player, __progressive_download_message_cb, NULL) != PLAYER_ERROR_NONE)
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (player_set_video_stream_changed_cb(s_info.player, __video_stream_changed_cb, NULL) != PLAYER_ERROR_NONE)
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (player_set_media_stream_buffer_status_cb (s_info.player,  PLAYER_STREAM_TYPE_AUDIO, __media_stream_buffer_status_cb, (void *)PLAYER_STREAM_TYPE_AUDIO) != PLAYER_ERROR_NONE)
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (player_set_media_stream_buffer_status_cb (s_info.player, PLAYER_STREAM_TYPE_VIDEO, __media_stream_buffer_status_cb, (void *)PLAYER_STREAM_TYPE_VIDEO) != PLAYER_ERROR_NONE)
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (player_set_media_stream_seek_cb(s_info.player, PLAYER_STREAM_TYPE_AUDIO, __media_stream_seek_cb, (void *)PLAYER_STREAM_TYPE_AUDIO) != PLAYER_ERROR_NONE)
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (player_set_media_stream_seek_cb(s_info.player, PLAYER_STREAM_TYPE_VIDEO, __media_stream_seek_cb, (void *)PLAYER_STREAM_TYPE_VIDEO) != PLAYER_ERROR_NONE)
-&nbsp;&nbsp;&nbsp;// Error handling
-}
-</pre>
-
-<p>First of all, a player object has to be created using the <span style="font-family: Courier New,Courier,monospace">player_create()</span> function. If the player is created successfully, we can set all required player callbacks. Check the <a href="https://developer.tizen.org/development/api-references/native-application?redirect=https%3A//developer.tizen.org/dev-guide/2.4.0/org.tizen.native.mobile.apireference/index.html">API documentation</a> for callback's details. Also, the <span style="font-family: Courier New,Courier,monospace">view</span> module callbacks are assigned here.</p>
-
-<h5>Playing a file</h5>
-
-<pre class="prettyprint">
-player_error_e player_model_play_file(const char *file_path)
-{
-&nbsp;&nbsp;&nbsp;// Variables declaration
-
-&nbsp;&nbsp;&nbsp;if (!s_info.player)
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (!s_info.display)
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;player_model_set_mute(EINA_FALSE);
-
-&nbsp;&nbsp;&nbsp;error_code = player_get_state(s_info.player, &state);
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;if (state != PLAYER_STATE_IDLE)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (state != PLAYER_STATE_IDLE) {
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, "Setting player state to idle");
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error_code = player_unprepare(s_info.player);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;}
-
-&nbsp;&nbsp;&nbsp;error_code = player_set_uri(s_info.player, file_path);
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;error_code = player_set_display(s_info.player, PLAYER_DISPLAY_TYPE_EVAS, GET_DISPLAY(s_info.display));
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;error_code = player_prepare(s_info.player);
-&nbsp;&nbsp;&nbsp;if (error_code != PLAYER_ERROR_NONE)
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;error_code = player_start(s_info.player);
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;return PLAYER_ERROR_NONE;
-}
-</pre>
-
-<p>The function above is used to play a given file. Note that there is no difference between a video or audio local file and an online file when it comes to the implementation. Only a correct URI is required. Note that if the player state is different than <span style="font-family: Courier New,Courier,monospace">PLAYER_STATE_IDLE</span>, the <span style="font-family: Courier New,Courier,monospace">player_state_unprepare()</span> has to be called first. If not, the previously loaded file will be played instead of the given one. Also, the mute mode has to be turned off before the new file is loaded. After that, the player is ready to load a new file. The file can be loaded using the <span style="font-family: Courier New,Courier,monospace">player_set_uri()</span> function. Also, the <span style="font-family: Courier New,Courier,monospace">Evas_Object</span> used as the display object can now be set using the <span style="font-family: Courier New,Courier,monospace">player_set_display()</span> function. Finally, the player can be set to <span style="font-family: Courier New,Courier,monospace">PLAYER_STATE_READY</span> state using <span style="font-family: Courier New,Courier,monospace"> player_prepare()</span> function and the playback can be started by invoking the <span style="font-family: Courier New,Courier,monospace">player_start()</span> function.</p>
-
-<!-- ********************************************************************************** -->
-
-<h5 id="model-playback-control">Playback control</h5>
-<p>The Player API provides the following basic playback control options:</p>
-<ul>
-       <li>play,</li>
-       <li>pause,</li>
-       <li>stop.</li>
-</ul>
-
-<p>The options above change the state of the player (refer the Figure 4 for details) and can be accessed by the user using the <a href="#playback-options-section-layout">playback options section</a> widgets. There is also a seek option available. The view part provides the user with a slider to adjust the playback's progress. Note that the <span style="font-family: Courier New,Courier,monospace">player_get_duration()</span> function can be used to get the length of the file and set the maximum value of the mentioned slider.</p>
-
-<p>Apart from the basic playback control options, the following features are also implemented:</p>
-<ul>
-       <li>mute - set using the <span style="font-family: Courier New,Courier,monospace">player_set_mute()</span> function;</li>
-       <li>loop - set using the <span style="font-family: Courier New,Courier,monospace">player_set_looping()</span> function;</li>
-       <li>volume - set using the <span style="font-family: Courier New,Courier,monospace">player_set_volume()</span> function. The sound of the player can be set independently from the system volume settings.</li>
-</ul>
-<p>Note that when the loop mode is on, the <span style="font-family: Courier New,Courier,monospace">__player_completed_cb</span> callback function is <b>not</b> invoked.</p>
-
-<h5>Other functionalities</h5>
-<p>Some of the multimedia files provide an album art image that can be displayed during the playback. To display such an image, the <span style="font-family: Courier New,Courier,monospace">player_get_album_art()</span> function has to be invoked. Raw image data is provided after a succesful call. The data can be later passed to <span style="font-family: Courier New,Courier,monospace">elm_image_memfile_set()</span> function to create an image object that will be set in the display section./p>
-<p>During the playback of a video file (local or online) a screenshot can be taken at any moment using the <span style="font-family: Courier New,Courier,monospace">player_capture_video()</span> function. If the capture is successful, the <span style="font-family: Courier New,Courier,monospace">__video_captured_cb()</span> callback function is invoked with the image size and raw data as its parameters. Then, an image file is generated using <span style="font-family: Courier New,Courier,monospace">image_util_encode_jpeg()</span> function. The image is saved in the internal storage of the device, in the Images folder. To get the correct path to the file, <span style="font-family: Courier New,Courier,monospace">__get_storage_path()</span> and <span style="font-family: Courier New,Courier,monospace">__get_storage_path_cb()</span> functions listed below are used.</p>
-
-<pre class="prettyprint">
-static bool __get_storage_path_cb(int storage_id, storage_type_e type, storage_state_e state, const char *path, void *user_data)
-{
-&nbsp;&nbsp;&nbsp;if (type == STORAGE_TYPE_INTERNAL) // Check if the storage type is internal
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_info.found_storage_id = storage_id; // Save the internal storage key
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false; // Stop iterating
-&nbsp;&nbsp;&nbsp;}
-
-&nbsp;&nbsp;&nbsp;return true; // Continue interating
-}
-</pre>
-<pre class="prettyprint">
-static char *__get_storage_path(storage_directory_e dir)
-{
-&nbsp;&nbsp;&nbsp;// Variables declaration
-
-&nbsp;&nbsp;&nbsp;error_code = storage_foreach_device_supported(__get_storage_path_cb, NULL); //iterate each available storages
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;error_code = storage_get_directory(s_info.found_storage_id, dir, &path); //get the path to the storage
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;return path;
-}
-</pre>
-<p>Note that to get access to the storage of the device, the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/mediastorage</span> privilege must be set. In order to display the image in the gallery application, it has to be added to the media content database using the <span style="font-family: Courier New,Courier,monospace">__insert_image_info_to_db()</span> function.</p>
-<pre class="prettyprint">
-static void __insert_image_info_to_db(const char *path)
-{
-&nbsp;&nbsp;&nbsp;int ret = media_content_connect();
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;ret = media_content_scan_file(path);
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;ret = media_content_disconnect();
-&nbsp;&nbsp;&nbsp;// Error handling
-}
-</pre>
-
-<!-- ********************************************************************************** -->
-
-<p id="model-file-information">Another feature of the sample application is file's information displaying. Multimedia files provide information about their content which can be accessed using the Player API. The data include:</p>
-<ul>
-       <li>album name,</li>
-       <li>artist name,</li>
-       <li>author name,</li>
-       <li>genre,</li>
-       <li>title,</li>
-       <li>year,</li>
-       <li>audio codec name,</li>
-       <li>video codec name,</li>
-       <li>audio sample rate,</li>
-       <li>audio channel,</li>
-       <li>audio bit rate,</li>
-       <li>video frames per second,</li>
-       <li>video bit rate,</li>
-       <li>video size.</li>
-</ul>
-<p>The functions below are used to get the file's information.</p>
-<pre class="prettyprint">
-char *player_model_get_content_info(player_content_info_e key)
-{
-&nbsp;&nbsp;&nbsp;char *value = NULL;
-
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;player_get_content_info(s_info.player, key, &value);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, "player_model_content_info_get(%d) == %s", key, value);
-&nbsp;&nbsp;&nbsp;return value;
-}
-
-void player_model_get_codec(char **audio_codec, char **video_codec)
-{
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;player_get_codec_info(s_info.player, audio_codec, video_codec);
-}
-
-void player_model_get_audio_stream_info(int *sample_rate, int *channel, int *bit_rate)
-{
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;player_get_audio_stream_info(s_info.player, sample_rate, channel, bit_rate);
-}
-
-void player_model_get_video_stream_info(int *fps, int *bit_rate)
-{
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;player_get_video_stream_info(s_info.player, fps, bit_rate);
-}
-
-void player_model_get_video_size(int *width, int *height)
-{
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;player_get_video_size(s_info.player, width, height);
-}
-</pre>
-<p>Note that not every file provides all the mentioned data.</p>
-
-<h5>Device orientation</h5>
-<p>When the device orientation changes, the <span style="font-family: Courier New,Courier,monospace">player_model_set_orientation()</span> function is invoked.</p>
-<pre class="prettyprint">
-void player_model_set_orientation(Eina_Bool is_horizontal)
-{
-&nbsp;&nbsp;&nbsp;if (is_horizontal) {
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_set_display_mode(s_info.player, PLAYER_DISPLAY_MODE_FULL_SCREEN);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_set_display_rotation(s_info.player, PLAYER_DISPLAY_ROTATION_NONE);
-&nbsp;&nbsp;&nbsp;} else {
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_set_display_mode(s_info.player, PLAYER_DISPLAY_MODE_ORIGIN_OR_LETTER);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_set_display_rotation(s_info.player, PLAYER_DISPLAY_ROTATION_NONE);
-&nbsp;&nbsp;&nbsp;}
-}
-</pre>
-<p> The function changes the display mode of the player object. The layout of the application is changed as well - the display section is streched to cover the whole screen while other sections are hidden.</p>
-
-<!-- ********************************************************************************** -->
-<h5>Player deinitialization</h5>
-<p>The function below is used deinitialize and destroy the player object.</p>
-<pre class="prettyprint">
-void player_model_deinit(void)
-{
-&nbsp;&nbsp;&nbsp;// Error handling
-&nbsp;&nbsp;&nbsp;error_code = player_stop(s_info.player);
-&nbsp;&nbsp;&nbsp;// Error handling
-
-&nbsp;&nbsp;&nbsp;error_code = player_unprepare(s_info.player);
-&nbsp;&nbsp;&nbsp;// Error handling and callbacks deinitialization
-
-&nbsp;&nbsp;&nbsp;error_code = player_destroy(s_info.player);
-&nbsp;&nbsp;&nbsp;// Error handling
-}
-</pre>
-<p>Note that any working playback should be stopped and the player should be put into the <span style="font-family: Courier New,Courier,monospace">PLAYER_STATE_IDLE</span> state before it can be destroyed.</p>
-
-<!-- ********************************************************************************** -->
-
-<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
-<script type="text/javascript" src="../scripts/showhide.js"></script>
-</div></div></div>
-
-<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
-
-<div id="footer">
-<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
-</div>
-
-<script type="text/javascript">
-var _gaq = _gaq || [];
-_gaq.push(['_setAccount', 'UA-25976949-1']);
-_gaq.push(['_trackPageview']);
-(function() {
-var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-})();
-</script>
-
-</body>
-</html>
diff --git a/org.tizen.sampledescriptions/html/mobile_n/stream_player_sd_mn.htm b/org.tizen.sampledescriptions/html/mobile_n/stream_player_sd_mn.htm
new file mode 100644 (file)
index 0000000..57208c1
--- /dev/null
@@ -0,0 +1,836 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
+       <script type="text/javascript" src="../scripts/snippet.js"></script>
+       <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
+       <title>Stream-player Sample Overview</title>
+</head>
+
+<body class="no-toc" onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation"></div>
+
+<div id="container"><div id="contents"><div class="content">
+       <div id="profile">
+               <p><img alt="Mobile native" src="../images/mobile_s_n.png"/></p>
+       </div>
+
+
+       <h1>Stream-player Sample Overview</h1>
+       <p>The Stream-player sample application demonstrates how to play audio and video files as well as stream media files from the Web using the <a href="../../../org.tizen.native.mobile.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html">Player</a> API.</p>
+
+       <p>The following figure illustrates the application view.</p>
+       <p class="figure">Figure: Stream-player screen</p>
+<p align="center">
+       <img alt="Stream-player screen" src="../images/stream_player_application_view.png" />
+</p>
+
+<p>The application opens with the main screen. To play a file, select it using the applicable buttons on the toolbar at the top of the screen, and click the <strong>Play</strong> icon button at the bottom.</p>
+
+<p>The application user interface consists of a single view divided into following sections:</p>
+       <ul>
+               <li>Toolbar: Allows you to choose a file to be played, display information about the file, or capture a screenshot from the played video.</li>
+               <li>Display area: The played video or album art of a music file is displayed here. Note that if the music file does not provide any album art, a musical note image is displayed instead.</li>
+               <li>Option area: Allows you to set the volume level, and select the mute option and looping mode.</li>
+               <li>Playback options area: Allows you to set the play, pause and stop options. You can also use the seek and playback rate options.</li>
+       </ul>
+
+
+<p class="figure">Figure: Stream-player layout structure</p>
+<p align="center">
+       <img alt="Stream-player layout structure" src="../images/stream_player_layout_structure.png" />
+</p>
+
+<p>The application workflow can be divided into the following pipelines:</p>
+       <ul>
+               <li>Application initialization</li>
+               <li>Local file playback</li>
+               <li>Online file playback</li>
+       </ul>
+
+<p class="figure">Figure: Stream-player workflow</p>
+<p align="center">
+       <img alt="Stream-player workflow" src="../images/stream_player_application_workflow.png" />
+</p>
+
+<h2>Prerequisites</h2>
+<p>To ensure proper application execution, the following privileges must be set:</p>
+       <ul>
+               <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/network.get</span></li>
+               <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/mediastorage</span></li>
+               <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/internet</span></li>
+               <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/network.set</span></li>
+               <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/content.write</span></li>
+               <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/appmanager.launch</span></li>
+               <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/network.profile</span></li>
+               <li><span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/externalstorage</span></li>
+       </ul>
+
+
+<h2>Implementation</h2>
+<h3>Type Definitions</h3>
+<p> The <span style="font-family: Courier New,Courier,monospace">view_info_s</span> structure contains references to objects created by the view module:</p>
+<pre class="prettyprint">
+struct 
+view_info_s 
+{
+&nbsp;&nbsp;&nbsp;Evas_Object *win;
+&nbsp;&nbsp;&nbsp;Evas_Object *conform;
+&nbsp;&nbsp;&nbsp;Evas_Object *grid;
+&nbsp;&nbsp;&nbsp;Evas_Object *button_panel;
+&nbsp;&nbsp;&nbsp;Evas_Object *pause_play_btn;
+&nbsp;&nbsp;&nbsp;Evas_Object *toolbar;
+&nbsp;&nbsp;&nbsp;Evas_Object *progress_panel;
+&nbsp;&nbsp;&nbsp;Evas_Object *seek_slider;
+&nbsp;&nbsp;&nbsp;Evas_Object *playback_rate_slider;
+&nbsp;&nbsp;&nbsp;Evas_Object *buffer_progress_bar;
+&nbsp;&nbsp;&nbsp;Evas_Object *option_panel;
+&nbsp;&nbsp;&nbsp;Evas_Object *mute_check;
+&nbsp;&nbsp;&nbsp;Evas_Object *display;
+&nbsp;&nbsp;&nbsp;Evas_Object *album_art;
+&nbsp;&nbsp;&nbsp;Evas_Object *current_popup;
+&nbsp;&nbsp;&nbsp;Eina_Bool play_btn_play_mode_on;
+&nbsp;&nbsp;&nbsp;int found_storage_id;
+&nbsp;&nbsp;&nbsp;Eina_Stringshare *video_path;
+&nbsp;&nbsp;&nbsp;Eina_Stringshare *audio_path;
+&nbsp;&nbsp;&nbsp;Eina_Stringshare *stream_uri;
+&nbsp;&nbsp;&nbsp;Eina_Bool use_stream_album_art;
+&nbsp;&nbsp;&nbsp;Ecore_Timer *progress_timer;
+};
+</pre>
+
+<p>The <span style="font-family: Courier New,Courier,monospace">player_s</span> structure contains the objects used in the model:</p>
+<pre class="prettyprint">
+struct 
+player_s 
+{
+&nbsp;&nbsp;&nbsp;player_h player;
+&nbsp;&nbsp;&nbsp;Evas_Object *display;
+&nbsp;&nbsp;&nbsp;struct player_callback_s callbacks;
+};
+</pre>
+
+
+<p>The <span style="font-family: Courier New,Courier,monospace">player_callback_s</span> structure contains pointers to callback functions used to send information from the model to the view:</p>
+
+<pre class="prettyprint">
+struct 
+player_callback_s 
+{
+&nbsp;&nbsp;&nbsp;// Invoked when the player&#39;s state changes
+&nbsp;&nbsp;&nbsp;Player_Status_Changed_cb_t player_status_changed_cb;
+&nbsp;&nbsp;&nbsp;// Invoked when there is a change in the playback progress, such as after the user moves the seek slider
+&nbsp;&nbsp;&nbsp;Player_Progress_Changed_cb_t player_progress_changed_cb;
+&nbsp;&nbsp;&nbsp;// Invoked when the playback ends
+&nbsp;&nbsp;&nbsp;// Function is not invoked when the loop mode is used
+&nbsp;&nbsp;&nbsp;Player_Progress_End_cb_t player_progress_end_cb;
+&nbsp;&nbsp;&nbsp;// Invoked when a screenshot is taken
+&nbsp;&nbsp;&nbsp;Player_Screen_cb_t player_screen_cb;
+&nbsp;&nbsp;&nbsp;// Invoked when a text message must be displayed, such as an error popup
+&nbsp;&nbsp;&nbsp;Player_Message_cb_t player_msg_cb;
+&nbsp;&nbsp;&nbsp;// Invoked when an online file buffer progress changes
+&nbsp;&nbsp;&nbsp;Player_Buffer_progress_cb_t player_buffer_progress_cb;
+};
+</pre>
+
+<h3>Application Initialization</h3>
+<p>The entire application life-cycle is implemented in the <span style="font-family: Courier New,Courier,monospace">main.c</span> file, using the common Tizen application structure:</p>
+
+<pre class="prettyprint">
+int 
+main(int argc, char *argv[])
+{
+&nbsp;&nbsp;&nbsp;int ret = 0;
+
+&nbsp;&nbsp;&nbsp;ui_app_lifecycle_callback_s event_callback = {0,};
+&nbsp;&nbsp;&nbsp;app_event_handler_h handlers[5] = {NULL,};
+
+&nbsp;&nbsp;&nbsp;event_callback.create = __app_create;
+&nbsp;&nbsp;&nbsp;event_callback.terminate = __app_terminate;
+
+&nbsp;&nbsp;&nbsp;ui_app_add_event_handler(&amp;handlers[APP_EVENT_LANGUAGE_CHANGED], 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;APP_EVENT_LANGUAGE_CHANGED, __ui_app_lang_changed, NULL);
+
+&nbsp;&nbsp;&nbsp;ret = ui_app_main(argc, argv, &amp;event_callback, NULL);
+&nbsp;&nbsp;&nbsp;// Error handling
+}
+</pre>
+
+<p>The Stream-player application initialization is done within the <span style="font-family: Courier New,Courier,monospace">__app_create()</span> callback function:</p>
+<ul><li>The <span style="font-family: Courier New,Courier,monospace">player_model_init()</span> function is responsible for the model&#39;s initialization</li>
+<li>The <span style="font-family: Courier New,Courier,monospace">view_create_base_gui()</span> function is used to initialize the view module.</li>
+</ul> 
+<p>On the application&#39;s termination, the <span style="font-family: Courier New,Courier,monospace">__app_terminate()</span> callback function is invoked, and all resources allocated within the model are freed.</p>
+
+
+<h3 id="view">View</h3>
+
+<p>The entire application UI is implemented using Elementary components and containers. As mentioned above, the application layout is divided into the toolbar, display area, playback options area, and option area sections.</p>
+
+<p>All the sections (except for the display) are implemented using an Elementary <span style="font-family: Courier New,Courier,monospace">Box</span> container, filled with Elementary components. The boxes are then packed into a <span style="font-family: Courier New,Courier,monospace">grid</span> container.</p>
+
+
+<table>
+       <caption>Table: Base view creation code snippets and figures</caption>
+       <tbody>
+               <tr>
+                       <th>Description</th>
+                       <th>Code snippet</th>
+                       <th>Figure</th>
+               </tr>
+
+               <tr>
+                       <td>The toolbar section is created using the <span style="font-family: Courier New,Courier,monospace">__create_toolbar()</span> function. 
+                       <p>The toolbar contains 5 buttons, created using the <span style="font-family: Courier New,Courier,monospace">__create_button()</span> function. The buttons provide you with access to both video and audio files as well as the ability to stream online files. The last 2 buttons allow the user to capture a screenshot of the displayed video and display information about current file.</p></td>
+                       <td>
+                               <pre class="prettyprint">
+static Eina_Bool 
+__create_toolbar(void)
+{
+&nbsp;&nbsp;&nbsp;s_info.toolbar = elm_box_add(s_info.grid);
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;elm_box_padding_set(s_info.toolbar, 10, 0);
+&nbsp;&nbsp;&nbsp;elm_box_horizontal_set(s_info.toolbar, EINA_TRUE);
+
+&nbsp;&nbsp;&nbsp;elm_grid_pack(s_info.grid,  s_info.toolbar,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TOOLBAR_GEOMETRY_X, TOOLBAR_GEOMETRY_Y,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TOOLBAR_GEOMETRY_W, TOOLBAR_GEOMETRY_H);
+
+&nbsp;&nbsp;&nbsp;if (!__create_button(s_info.toolbar,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EINA_FALSE,  0.1, EVAS_HINT_EXPAND,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AUDIO_FILE_PATH, __toolbar_file_open_cb, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void*)EINA_FALSE))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp;if (!__create_button(s_info.toolbar,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EINA_FALSE,  0.1, EVAS_HINT_EXPAND,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VIDEO_FILE_PATH, __toolbar_file_open_cb, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void*)EINA_TRUE))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp;if (!__create_uri_entry())
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp;if (!__create_button(s_info.toolbar, EINA_FALSE, 0.1, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EVAS_HINT_EXPAND, SCREENSHOT_ICON_FILE, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__screen_capture_btn_clicked_cb, NULL))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;if (!__create_button(s_info.toolbar, EINA_FALSE, 0.1, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EVAS_HINT_EXPAND, INFO_ICON_FILE, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__info_display_btn_clicked_cb, NULL))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;evas_object_show(s_info.toolbar);
+
+&nbsp;&nbsp;&nbsp;return EINA_TRUE;
+}
+</pre>
+                       </td>
+                       <td>
+                               <p align="center">
+                                       <img alt="Stream-player-toolbar-section" src="../images/stream_player_toolbar_section.png" />
+                               </p>
+                       </td>
+               </tr>
+
+               <tr id="display-section-layout">
+                       <td>
+                               The display area section is made of 2 stacked objects:
+                               <ul>
+                                       <li>Display (top object): Used to display the played video file.</li>
+                                       <li>Album art (bottom object): Used to display the file&#39;s album art.</li>
+                               </ul>
+                               <p>The user can tap the display to switch pause on or off.</p>
+                       </td>
+                       <td>
+                               <pre class="prettyprint">
+static Eina_Bool 
+__add_display(void)
+{
+&nbsp;&nbsp;&nbsp;if (!s_info.grid)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;s_info.display = evas_object_image_add(evas_object_evas_get(s_info.grid));
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;evas_object_image_filled_set(s_info.display, EINA_TRUE);
+&nbsp;&nbsp;&nbsp;evas_object_event_callback_add(s_info.display,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EVAS_CALLBACK_MOUSE_DOWN, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__display_clicked_cb, NULL);
+&nbsp;&nbsp;&nbsp;elm_grid_pack(s_info.grid, s_info.display,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DISPLAY_GEOMETRY_X, DISPLAY_GEOMETRY_Y,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DISPLAY_GEOMETRY_W, DISPLAY_GEOMETRY_H);
+&nbsp;&nbsp;&nbsp;evas_object_show(s_info.display);
+
+&nbsp;&nbsp;&nbsp;return EINA_TRUE;
+}
+
+static Eina_Bool 
+__add_album_art(void)
+{
+&nbsp;&nbsp;&nbsp;if (!s_info.grid) 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;s_info.album_art = elm_image_add(s_info.grid);
+&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;evas_object_event_callback_add(s_info.display,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EVAS_CALLBACK_MOUSE_DOWN, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__display_clicked_cb, NULL);
+&nbsp;&nbsp;&nbsp;elm_grid_pack(s_info.grid, s_info.album_art,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DISPLAY_GEOMETRY_X, DISPLAY_GEOMETRY_Y,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DISPLAY_GEOMETRY_W, DISPLAY_GEOMETRY_H);
+
+&nbsp;&nbsp;&nbsp;return EINA_TRUE;
+}
+</pre>
+                       </td>
+                       <td>
+                               <p align="center">
+                                       <img alt="Stream-player-display-section" src="../images/stream_player_display_section.png" />
+                               </p>
+                       </td>
+               </tr>
+
+               <tr id="playback-options-section-layout">
+                       <td>The playback options area section is created from the following objects:
+                               <ul>
+                                       <li><span style="font-family: Courier New,Courier,monospace">Elm_Slider</span>: Used to set the seek position.</li>
+                                       <li><span style="font-family: Courier New,Courier,monospace">Elm_Button</span>: Used to stop the playback.</li>
+                                       <li><span style="font-family: Courier New,Courier,monospace">Elm_Button</span>: Used to toggle the pause mode.</li>
+                               </ul>
+                               <p>The Player API does not provide a callback to be invoked when playback progress changes. In order to update the progress slider, an <span style="font-family: Courier New,Courier,monospace">Ecore_Timer</span> is used. The current playback position is read using the <span style="font-family: Courier New,Courier,monospace">player_model_get_progress()</span> function. See <a href="#model-playback-control">Playback Control</a> for details.</p>
+                       </td>
+                       <td>
+                       
+       
+                               <pre class="prettyprint">
+static Eina_Bool 
+__create_button_panel(void)
+{
+&nbsp;&nbsp;&nbsp;s_info.button_panel = elm_box_add(s_info.grid);
+&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;evas_object_size_hint_weight_set(s_info.button_panel,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+&nbsp;&nbsp;&nbsp;evas_object_size_hint_align_set(s_info.button_panel,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EVAS_HINT_FILL, EVAS_HINT_FILL);
+&nbsp;&nbsp;&nbsp;elm_box_horizontal_set(s_info.button_panel, EINA_TRUE);
+
+&nbsp;&nbsp;&nbsp;elm_grid_pack(s_info.grid,  s_info.button_panel,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BUTTON_PANEL_GEOMETRY_X, BUTTON_PANEL_GEOMETRY_Y,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BUTTON_PANEL_GEOMETRY_W, BUTTON_PANEL_GEOMETRY_H);
+
+&nbsp;&nbsp;&nbsp;if (!__create_button(s_info.button_panel,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EINA_TRUE, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BTN_ICON_STOP, __button_stop_clicked_cb, NULL))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;s_info.pause_play_btn = __create_button(s_info.button_panel,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EINA_TRUE, EVAS_HINT_EXPAND, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EVAS_HINT_EXPAND, BTN_ICON_PLAY, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__button_pause_play_clicked_cb, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp;evas_object_show(s_info.button_panel);
+
+&nbsp;&nbsp;&nbsp;return EINA_TRUE;
+}
+</pre>
+                       </td>
+                       <td>
+                               <p align="center">
+                                       <img alt="Stream-player-playback-options-section" src="../images/stream_player_playback_options_section.png" />
+                               </p>
+                       </td>
+               </tr>
+
+               <tr>
+                       <td>The option area section is created from the following objects:
+                               <ul>
+                                       <li><span style="font-family: Courier New,Courier,monospace">Elm_Slider</span>: Used to set the volume level.</li>
+                                       <li><span style="font-family: Courier New,Courier,monospace">Elm_Checkbox</span>: Used to set the mute mode.</li>
+                                       <li><span style="font-family: Courier New,Courier,monospace">Elm_Checkbox</span>: Used to set the loop mode.</li>
+                               </ul>
+                       </td>
+                       <td>
+                               <pre class="prettyprint">
+static Eina_Bool 
+__add_option_panel(void)
+{
+&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;s_info.option_panel = elm_box_add(s_info.grid);
+&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;elm_grid_pack(s_info.grid, s_info.option_panel,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOUND_PANEL_GEOMETRY_X, SOUND_PANEL_GEOMETRY_Y,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOUND_PANEL_GEOMETRY_W, SOUND_PANEL_GEOMETRY_H);
+
+&nbsp;&nbsp;&nbsp;if (!__add_option_panel_icon(SOUND_ICON_FILE))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;if (!__add_sound_slider())
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp;if (!__add_option_panel_icon(MUTE_ICON_FILE))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;s_info.mute_check = __add_option_panel_check(__sound_mute_check_changed_cb);
+&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;if (!__add_option_panel_icon(LOOP_ICON_FILE))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;if (!__add_option_panel_check(__playback_looping_changed_cb))
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;evas_object_show(s_info.option_panel);
+
+&nbsp;&nbsp;&nbsp;return EINA_TRUE;
+}
+</pre>
+                       </td>
+                       <td>
+                               <p align="center">
+                                       <img alt="Stream-player-options-section" src="../images/stream_player_options_section.png" />
+                               </p>
+                       </td>
+               </tr>
+       </tbody>
+</table>
+
+<h3>Information Popup</h3>
+
+<p>The information popup displays a text message with all <a href="#model-file-information">information about a file gathered by the model</a>. The following function generates the message.</p>
+
+<pre class="prettyprint">
+static char* 
+__get_stream_info(void)
+{
+&nbsp;&nbsp;&nbsp;// Variable declaration
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;===== Stream info =====&quot;);
+
+&nbsp;&nbsp;&nbsp;__append_content_info(PLAYER_CONTENT_INFO_ALBUM,  msg, &quot;Album: &quot;);
+&nbsp;&nbsp;&nbsp;__append_content_info(PLAYER_CONTENT_INFO_ARTIST, msg, &quot;Artist: &quot;);
+&nbsp;&nbsp;&nbsp;__append_content_info(PLAYER_CONTENT_INFO_AUTHOR, msg, &quot;Author: &quot;);
+&nbsp;&nbsp;&nbsp;__append_content_info(PLAYER_CONTENT_INFO_GENRE,  msg, &quot;Genre: &quot;);
+&nbsp;&nbsp;&nbsp;__append_content_info(PLAYER_CONTENT_INFO_TITLE,  msg, &quot;Title: &quot;);
+&nbsp;&nbsp;&nbsp;__append_content_info(PLAYER_CONTENT_INFO_YEAR,   msg, &quot;Year: &quot;);
+
+&nbsp;&nbsp;&nbsp;player_model_get_codec(&amp;audio_codec, &amp;video_codec);
+
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;CODECS Audio: %s; Video: %s&quot;, audio_codec, video_codec);
+
+&nbsp;&nbsp;&nbsp;__append_underlined_text(msg, &quot;Codecs:&quot;);
+&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, &quot;Audio: &quot;, &quot;%s%s&quot;, audio_codec, NEW_LINE);
+&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, &quot;Video: &quot;, &quot;%s%s&quot;, video_codec, NEW_LINE);
+
+&nbsp;&nbsp;&nbsp;free(audio_codec);
+&nbsp;&nbsp;&nbsp;free(video_codec);
+
+&nbsp;&nbsp;&nbsp;player_model_get_audio_stream_info(&amp;sample_rate, &amp;channel, &amp;bit_rate);
+
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;AUDIO STREAM INFO: sample rate: %d; channel: %d; bit rate: %d&quot;, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sample_rate, channel, bit_rate);
+
+&nbsp;&nbsp;&nbsp;__append_underlined_text(msg, &quot;Audio stream info:&quot;);
+&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, &quot;Sample rate: &quot;, &quot;%d%s&quot;, sample_rate, NEW_LINE);
+&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, &quot;Channel: &quot;, &quot;%d%s&quot;, channel, NEW_LINE);
+&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, &quot;Bit rate: &quot;, &quot;%d%s&quot;, bit_rate, NEW_LINE);
+
+&nbsp;&nbsp;&nbsp;player_model_get_video_stream_info(&amp;fps, &amp;bit_rate);
+&nbsp;&nbsp;&nbsp;player_model_get_video_size(&amp;width, &amp;height);
+
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;VIDEO STREAM INFO: FPS: %d; bit_rate: %d; size=[%d, %d]&quot;, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fps, bit_rate, width, height);
+
+&nbsp;&nbsp;&nbsp;__append_underlined_text(msg, &quot;Video stream info:&quot;);
+&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, &quot;FPS: &quot;, &quot;%d%s&quot;, fps, NEW_LINE);
+&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, &quot;Bit rate: &quot;, &quot;%d%s&quot;, bit_rate, NEW_LINE);
+&nbsp;&nbsp;&nbsp;__append_bolded_text(msg, &quot;Size: &quot;, &quot;%d x %d&quot;, width, height);
+
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;===== Stream info =====&quot;);
+
+&nbsp;&nbsp;&nbsp;eina_strbuf_replace_all(msg, &quot;&amp;&quot;, &quot;&amp;amp;amp;&quot;); // Every &#39;&amp;&#39; character has to be replaced with &#39;&amp;amp;amp;&#39;
+
+&nbsp;&nbsp;&nbsp;ret = eina_strbuf_string_steal(msg);
+&nbsp;&nbsp;&nbsp;eina_strbuf_free(msg);
+
+&nbsp;&nbsp;&nbsp;return ret;
+}
+</pre>
+
+<p>The text part of the popup uses elements similar to HTML elements. They can used to bold or underline parts of the text.</p>
+<pre class="prettyprint">
+static inline Eina_Stringshare* 
+__bold_text(char *txt)
+{
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;// &lt;font_weight=bold&gt;%s&lt;/font_weight&gt; %s is bolded
+&nbsp;&nbsp;&nbsp;return eina_stringshare_printf(&quot;&lt;font_weight=bold&gt;%s&lt;/font_weight&gt;&quot;, txt); 
+}
+
+static inline void 
+__append_bolded_text(Eina_Strbuf *msg, char *key, char *format, ...)
+{
+&nbsp;&nbsp;&nbsp;va_list args;
+&nbsp;&nbsp;&nbsp;Eina_Stringshare *bolded = __bold_text(key);
+&nbsp;&nbsp;&nbsp;va_start(args, format);
+&nbsp;&nbsp;&nbsp;eina_strbuf_append(msg, bolded);
+&nbsp;&nbsp;&nbsp;eina_strbuf_append_vprintf(msg, format, args);
+&nbsp;&nbsp;&nbsp;eina_stringshare_del(bolded);
+&nbsp;&nbsp;&nbsp;va_end(args);
+}
+
+static inline Eina_Stringshare* 
+__underline_text(const char *txt, const char *color)
+{
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;return eina_stringshare_printf(&quot;&lt;underline=on underline_color=%s&gt;%s&lt;/underline&gt;&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color ? color : &quot;#000000&quot;, txt);
+&nbsp;&nbsp;&nbsp;// &quot;&lt;underline=on underline_color=%s&gt;%s&lt;/underline&gt; %s is underlined
+&nbsp;&nbsp;&nbsp;// Note that the default color of the underline is white
+}
+
+static inline void 
+__append_underlined_text(Eina_Strbuf *msg, const char *txt)
+{
+&nbsp;&nbsp;&nbsp;Eina_Stringshare *underlined = __underline_text(txt, &quot;#000000&quot;);
+&nbsp;&nbsp;&nbsp;eina_strbuf_append_printf(msg, &quot;%s%s&quot;, underlined, NEW_LINE);
+&nbsp;&nbsp;&nbsp;eina_stringshare_del(underlined);
+}
+</pre>
+<p>For more information about the elements, see <a href="../../../org.tizen.ui.practices/html/native/efl/evas_objects_n.htm#block">Textblock</a> and <a href="../../../org.tizen.ui.practices/html/native/efl/font_setting_n.htm">Fonts</a>.</p>
+
+<h3 id="model">Model</h3>
+
+
+<p>The following image describes the typical state changes of the player.</p>
+
+<p class="figure">Figure: Stream-player state changes</p>
+<p align="center">
+       <img alt="Stream-player state changes" src="../images/stream_player_state_changes.png" />
+</p>
+
+<h4>Initialization</h4>
+
+
+<p>First of all, a player object has to be created using the <span style="font-family: Courier New,Courier,monospace">player_create()</span> function. If the player is created successfully, you can set all required player callbacks. Check the Player API documentation for the callback details. Also, the <span style="font-family: Courier New,Courier,monospace">view</span> module callbacks are assigned here.</p>
+
+<pre class="prettyprint">
+void 
+player_model_init(Player_Status_Changed_cb_t player_status_changed_cb,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Player_Progress_Changed_cb_t player_progress_changed_cb,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Player_Progress_End_cb_t player_progress_end_cb,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Player_Screen_cb_t player_screen_cb,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Player_Message_cb_t player_msg_cb,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Player_Buffer_progress_cb_t player_buffer_progress_cb)
+{
+&nbsp;&nbsp;&nbsp;int error_code = player_create(&amp;s_info.player);
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;s_info.callbacks.player_status_changed_cb = player_status_changed_cb;
+&nbsp;&nbsp;&nbsp;s_info.callbacks.player_progress_changed_cb = player_progress_changed_cb;
+&nbsp;&nbsp;&nbsp;s_info.callbacks.player_progress_end_cb = player_progress_end_cb;
+&nbsp;&nbsp;&nbsp;s_info.callbacks.player_screen_cb = player_screen_cb;
+&nbsp;&nbsp;&nbsp;s_info.callbacks.player_msg_cb = player_msg_cb;
+&nbsp;&nbsp;&nbsp;s_info.callbacks.player_buffer_progress_cb = player_buffer_progress_cb;
+
+&nbsp;&nbsp;&nbsp;if (player_set_interrupted_cb(s_info.player, __player_interrupted_cb, NULL) != PLAYER_ERROR_NONE) 
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (player_set_completed_cb(s_info.player, __player_completed_cb, NULL) != PLAYER_ERROR_NONE) 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (player_set_error_cb(s_info.player, __player_error_cb, NULL) != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (player_set_buffering_cb(s_info.player, __player_buffering_cb, NULL) != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (player_set_progressive_download_message_cb(s_info.player, __progressive_download_message_cb, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL) != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (player_set_video_stream_changed_cb(s_info.player, __video_stream_changed_cb, NULL) != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (player_set_media_stream_buffer_status_cb(s_info.player,  PLAYER_STREAM_TYPE_AUDIO, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__media_stream_buffer_status_cb, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void *)PLAYER_STREAM_TYPE_AUDIO) != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (player_set_media_stream_buffer_status_cb(s_info.player, PLAYER_STREAM_TYPE_VIDEO, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__media_stream_buffer_status_cb, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void *)PLAYER_STREAM_TYPE_VIDEO) != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (player_set_media_stream_seek_cb(s_info.player, PLAYER_STREAM_TYPE_AUDIO, __media_stream_seek_cb, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void *)PLAYER_STREAM_TYPE_AUDIO) != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (player_set_media_stream_seek_cb(s_info.player, PLAYER_STREAM_TYPE_VIDEO, __media_stream_seek_cb, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void *)PLAYER_STREAM_TYPE_VIDEO) != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+
+
+<h4>Playing a File</h4>
+
+<p>The <span style="font-family: Courier New,Courier,monospace">player_model_play_file()</span> function is used to play a given file. There is no difference between a local video or audio file and an online file, when it comes to the implementation. Only a correct URI is required.</p>
+
+<ol>
+<li>If the player state is different than <span style="font-family: Courier New,Courier,monospace">PLAYER_STATE_IDLE</span>, the <span style="font-family: Courier New,Courier,monospace">player_state_unprepare()</span> function has to be called first.
+<p>If not, the previously loaded file is played instead of the given one.</p></li>
+<li>The mute mode has to be switched off before the new file is loaded.</li>
+<li>The player is now ready to load a new file.
+<p>The new file can be loaded using the <span style="font-family: Courier New,Courier,monospace">player_set_uri()</span> function.</p></li>
+<li>The <span style="font-family: Courier New,Courier,monospace">Evas_Object</span> used as the display object can be set using the <span style="font-family: Courier New,Courier,monospace">player_set_display()</span> function.</li>
+<li>The player can be set to the <span style="font-family: Courier New,Courier,monospace">PLAYER_STATE_READY</span> state using <span style="font-family: Courier New,Courier,monospace"> player_prepare()</span> function and the playback can be started by invoking the <span style="font-family: Courier New,Courier,monospace">player_start()</span> function.</li>
+</ol>
+
+<pre class="prettyprint">
+player_error_e 
+player_model_play_file(const char *file_path)
+{
+&nbsp;&nbsp;&nbsp;// Variables declaration
+&nbsp;&nbsp;&nbsp;if (!s_info.player)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;if (!s_info.display)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;player_model_set_mute(EINA_FALSE);
+&nbsp;&nbsp;&nbsp;error_code = player_get_state(s_info.player, &amp;state);
+&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;if (state != PLAYER_STATE_IDLE) 
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;Setting player state to idle&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error_code = player_unprepare(s_info.player);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;error_code = player_set_uri(s_info.player, file_path);
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;error_code = player_set_display(s_info.player, PLAYER_DISPLAY_TYPE_EVAS, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GET_DISPLAY(s_info.display));
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;error_code = player_prepare(s_info.player);
+&nbsp;&nbsp;&nbsp;if (error_code != PLAYER_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;error_code = player_start(s_info.player);
+&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;return PLAYER_ERROR_NONE;
+}
+</pre>
+
+
+
+<h4 id="model-playback-control">Playback Control</h4>
+
+<p>The Player API provides the basic playback control options: play, pause, and stop.</p>
+
+<p>The options change the state of the player and can be accessed by the user using the <a href="#playback-options-section-layout">playback options section</a> components. There is also a seek option available. The view part provides the user with a slider to adjust the playback progress. Note that the <span style="font-family: Courier New,Courier,monospace">player_get_duration()</span> function can be used to get the length of the file and set the maximum value of the mentioned slider.</p>
+
+<p>Apart from the basic playback control options, the following features are also implemented:</p>
+
+<ul>
+ <li>Mute: Set using the <span style="font-family: Courier New,Courier,monospace">player_set_mute()</span> function.</li>
+ <li>Loop: Set using the <span style="font-family: Courier New,Courier,monospace">player_set_looping()</span> function.
+ <p>When the loop mode is on, the <span style="font-family: Courier New,Courier,monospace">__player_completed_cb</span> callback function is not invoked.</p></li>
+ <li>Volume: Set using the <span style="font-family: Courier New,Courier,monospace">player_set_volume()</span> function. The sound of the player can be set independently from the system volume settings.</li>
+</ul>
+
+
+<h4>Other Functionalities</h4>
+
+<p>Some of the multimedia files provide an album art image that can be displayed during the playback. To display such an image, the <span style="font-family: Courier New,Courier,monospace">player_get_album_art()</span> function has to be invoked. Raw image data is provided after a successful call. The data can be later passed to the <span style="font-family: Courier New,Courier,monospace">elm_image_memfile_set()</span> function to create an image object that is set in the display section.</p>
+
+<p>During the playback of a video file (local or online), a screenshot can be taken at any moment using the <span style="font-family: Courier New,Courier,monospace">player_capture_video()</span> function. If the capture is successful, the <span style="font-family: Courier New,Courier,monospace">__video_captured_cb()</span> callback function is invoked with the image size and raw data as its parameters. Then, an image file is generated using the <span style="font-family: Courier New,Courier,monospace">image_util_encode_jpeg()</span> function. The image is saved in the internal storage of the device, in the <span style="font-family: Courier New,Courier,monospace">Images</span> folder. To get the correct path to the file, use the <span style="font-family: Courier New,Courier,monospace">__get_storage_path()</span> and <span style="font-family: Courier New,Courier,monospace">__get_storage_path_cb()</span> functions.</p>
+
+<pre class="prettyprint">
+static bool 
+__get_storage_path_cb(int storage_id, storage_type_e type, storage_state_e state, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const char *path, void *user_data)
+{
+&nbsp;&nbsp;&nbsp;if (type == STORAGE_TYPE_INTERNAL) // Check if the storage type is internal
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_info.found_storage_id = storage_id; // Save the internal storage key
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false; // Stop iterating
+&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;return true; // Continue iterating
+}
+
+static char* 
+__get_storage_path(storage_directory_e dir)
+{
+&nbsp;&nbsp;&nbsp;// Variable declaration
+&nbsp;&nbsp;&nbsp;// Iterate each available storage
+&nbsp;&nbsp;&nbsp;error_code = storage_foreach_device_supported(__get_storage_path_cb, NULL); 
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;// Get the path to the storage
+&nbsp;&nbsp;&nbsp;error_code = storage_get_directory(s_info.found_storage_id, dir, &amp;path); 
+
+&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;return path;
+}
+</pre>
+<p>To get access to the storage of the device, the <span style="font-family: Courier New,Courier,monospace">http://tizen.org/privilege/mediastorage</span> privilege must be set. To display the image in the gallery application, it has to be added to the media content database using the <span style="font-family: Courier New,Courier,monospace">__insert_image_info_to_db()</span> function.</p>
+<pre class="prettyprint">
+static void 
+__insert_image_info_to_db(const char *path)
+{
+&nbsp;&nbsp;&nbsp;int ret = media_content_connect();
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;ret = media_content_scan_file(path);
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;ret = media_content_disconnect();
+&nbsp;&nbsp;&nbsp;// Error handling
+}
+</pre>
+
+<p id="model-file-information">Another feature of the sample application is displaying the file information. Multimedia files provide information about their content, and it can be accessed using the Player API. The data include:</p>
+<ul>
+ <li>Album name</li>
+ <li>Artist name</li>
+ <li>Author name</li>
+ <li>Genre</li>
+ <li>Title</li>
+ <li>Year</li>
+ <li>Audio codec name</li>
+ <li>Video codec name</li>
+ <li>Audio sample rate</li>
+ <li>Audio channel</li>
+ <li>Audio bit rate</li>
+ <li>Video frames per second</li>
+ <li>Video bit rate</li>
+ <li>Video size</li>
+</ul>
+
+<p>The following functions are used to get the file information.</p>
+
+<pre class="prettyprint">
+char* 
+player_model_get_content_info(player_content_info_e key)
+{
+&nbsp;&nbsp;&nbsp;char *value = NULL;
+
+&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;player_get_content_info(s_info.player, key, &amp;value);
+
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;player_model_content_info_get(%d) == %s&quot;, key, value);
+
+&nbsp;&nbsp;&nbsp;return value;
+}
+
+void 
+player_model_get_codec(char **audio_codec, char **video_codec)
+{
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;player_get_codec_info(s_info.player, audio_codec, video_codec);
+}
+
+void 
+player_model_get_audio_stream_info(int *sample_rate, int *channel, int *bit_rate)
+{
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;player_get_audio_stream_info(s_info.player, sample_rate, channel, bit_rate);
+}
+
+void 
+player_model_get_video_stream_info(int *fps, int *bit_rate)
+{
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;player_get_video_stream_info(s_info.player, fps, bit_rate);
+}
+
+void 
+player_model_get_video_size(int *width, int *height)
+{
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;player_get_video_size(s_info.player, width, height);
+}
+</pre>
+
+<p>All files do not provide all the mentioned data.</p>
+
+
+<h4>Device Orientation</h4>
+
+<p>When the device orientation changes, the <span style="font-family: Courier New,Courier,monospace">player_model_set_orientation()</span> function is invoked.</p>
+
+<pre class="prettyprint">
+void 
+player_model_set_orientation(Eina_Bool is_horizontal)
+{
+&nbsp;&nbsp;&nbsp;if (is_horizontal) 
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_set_display_mode(s_info.player, PLAYER_DISPLAY_MODE_FULL_SCREEN);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_set_display_rotation(s_info.player, PLAYER_DISPLAY_ROTATION_NONE);
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;else
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_set_display_mode(s_info.player, PLAYER_DISPLAY_MODE_ORIGIN_OR_LETTER);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_set_display_rotation(s_info.player, PLAYER_DISPLAY_ROTATION_NONE);
+&nbsp;&nbsp;&nbsp;}
+}
+</pre>
+<p>The function changes the display mode of the player object. The layout of the application is changed as well: the display section is streched to cover the whole screen while other sections are hidden.</p>
+
+
+
+<h4>Player Deinitialization</h4>
+
+<p>The following function deinitializes and destroys the player object.</p>
+
+<pre class="prettyprint">
+void 
+player_model_deinit(void)
+{
+&nbsp;&nbsp;&nbsp;// Error handling
+&nbsp;&nbsp;&nbsp;error_code = player_stop(s_info.player);
+&nbsp;&nbsp;&nbsp;// Error handling
+
+&nbsp;&nbsp;&nbsp;error_code = player_unprepare(s_info.player);
+&nbsp;&nbsp;&nbsp;// Error handling and callbacks deinitialization
+
+&nbsp;&nbsp;&nbsp;error_code = player_destroy(s_info.player);
+&nbsp;&nbsp;&nbsp;// Error handling
+}
+</pre>
+
+<p>Any on-going playback must be stopped and the player must be put into the <span style="font-family: Courier New,Courier,monospace">PLAYER_STATE_IDLE</span> state before it can be destroyed.</p>
+
+
+<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../scripts/showhide.js"></script>
+</div></div></div>
+
+<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+
+</body>
+</html>
index 8ea3220..ac436d6 100644 (file)
@@ -549,7 +549,7 @@ sync_adapter_sample_foreach_sync_job_cb(account_h account, const char *sync_job_
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;strcpy(list_of_sync_jobs[temp_idx], sync_job_info);
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;copy to list_of_sync_jobs[%d] : %s&quot;, temp_idx, list_of_sync_jobs[temp_idx]);
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;copy to list_of_sync_jobs[%d]: %s&quot;, temp_idx, list_of_sync_jobs[temp_idx]);
 
 &nbsp;&nbsp;&nbsp;cnt_sync_jobs++;
 
@@ -564,7 +564,7 @@ on_manage_sync_jobs_cb(void *data, Evas_Object *obj, void *event_info)
 &nbsp;&nbsp;&nbsp;for (idx = 0; idx &lt; MAX_NUM; idx++) 
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (list_of_sync_jobs[idx][0] != &#39;\0&#39;)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;after copying to list_of_sync_jobs[%d] : %s&quot;, idx, list_of_sync_jobs[idx]);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;after copying to list_of_sync_jobs[%d]: %s&quot;, idx, list_of_sync_jobs[idx]);
 &nbsp;&nbsp;&nbsp;}
 
 &nbsp;&nbsp;&nbsp;itc = elm_genlist_item_class_new();
index 88c6479..7fd8792 100644 (file)
@@ -81,7 +81,7 @@ _idler_cb(void *data)
 {
 &nbsp;&nbsp;&nbsp;struct context *ctx = data;
 
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;IDLER: executing idler callback while in idle state. (count : %d)&quot;, ctx-&gt;count);
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;IDLER: executing idler callback while in idle state. (count: %d)&quot;, ctx-&gt;count);
 
 &nbsp;&nbsp;&nbsp;ctx-&gt;count++;
 
index d6b7210..ab00cd7 100644 (file)
@@ -162,7 +162,7 @@ add: function Model_saveAlarm(exercise)
 }
 
 /* Saves the exercises in the local storage */
-updateStorage: function () 
+updateStorage: function() 
 {
 &nbsp;&nbsp;&nbsp;try 
 &nbsp;&nbsp;&nbsp;{
@@ -254,7 +254,7 @@ if (reqAppControl)
 &lt;tizen:app-control&gt;
 &lt;tizen:src name=&quot;index.html&quot;/&gt;
 &lt;tizen:operation name=&quot;http://tizen.org/appcontrol/operation/exercise&quot;/&gt;
-&gt;/tizen:app-control&lt;
+&lt;/tizen:app-control&gt;
 </pre>
 <p>To remove an alarm, its ID is required.</p>
 <pre class="prettyprint">
diff --git a/org.tizen.sampledescriptions/html/wearable_n/music_sd_wn.htm b/org.tizen.sampledescriptions/html/wearable_n/music_sd_wn.htm
deleted file mode 100644 (file)
index 12e08d0..0000000
+++ /dev/null
@@ -1,371 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-       <meta http-equiv="X-UA-Compatible" content="IE=9" />
-       <link rel="stylesheet" type="text/css" href="../css/styles.css" />
-       <link rel="stylesheet" type="text/css" href="../css/snippet.css" />
-       <script type="text/javascript" src="../scripts/snippet.js"></script>    
-       <script type="text/javascript" src="../scripts/jquery.util.js" charset="utf-8"></script>
-       <script type="text/javascript" src="../scripts/common.js" charset="utf-8"></script>
-       <script type="text/javascript" src="../scripts/core.js" charset="utf-8"></script>
-       <script type="text/javascript" src="../scripts/search.js" charset="utf-8"></script>
-
-       <title>(Circle) Music Sample Overview</title>  
-</head>
-
-<body class="no-toc" onload="prettyPrint()" style="overflow: auto;">
-
-<div id="toc-navigation">
-
-<div id="container"><div id="contents"><div class="content">
-
-       <div id="profile">
-               <p><img alt="Wearable native" src="../images/wearable_s_n.png"/></p>
-       </div>
-       
-</div> 
-
-
-<h1>(Circle) Music Sample Overview</h1> 
-
-<p>The Music sample appliction shows you how to create a music application. Especially, it demonstrates how to draw the UI for a music player.</p>
-<p>The following figure illustrates the main screen of the Music sample application.</p>
-<p class="figure">Figure: (Circle) Music main views</p>
-<p align="center"><img src="../images/music_wearable_sd.png" alt="Music main view" /></p>
-
-<p>This sample consists of the view and main operation parts.</p> 
-
-<h2>View</h2> 
-
-<p>The <span style="font-family: Courier New,Courier,monospace">view_create()</span> function creates the widget view frame consisting of window, text parts, image parts, and so on.</p>
-<pre class="prettyprint">
-view_create(context, w, h);
-</pre>
-<p>The following figure illustrates the view frame.</p>
-<p class="figure">Figure: Music view frame</p>
-<p align="center"><img src="../images/music_structure_wearable_sd.png" alt="Music view frame" /></p>
-
-<p>To create the parts:</p>
-
-<ul>
-<li>Text
-<p>You can fill out text parts with the part name and the text using the <span style="font-family: Courier New,Courier,monospace">view_set_text()</span> function.</p>
-<p>Implement the <span style="font-family: Courier New,Courier,monospace">data_get_music_title()</span> function to create the text to use. Then, call the <span style="font-family: Courier New,Courier,monospace">view_set_text()</span> function with the part name and text you obtained.</p>
-<p>In this example, the text to use is <span style="font-family: Courier New,Courier,monospace">txt</span> and the part name to fill out is <span style="font-family: Courier New,Courier,monospace">txt.title</span>.</p>
-<pre class="prettyprint">
-txt = data_get_music_title(0);
-view_set_text(wid, &quot;txt.title&quot;, txt);
-</pre>
-</li>
-<li>Image
-<p>You can create an image object using the <span style="font-family: Courier New,Courier,monospace">view_set_image()</span> function. Pass the part name which you want to draw and the name of image file including its directory path.</p>
-<p>In this example, the part name is <span style="font-family: Courier New,Courier,monospace">sw.icon.device</span> and the icon contains the path of an image file in the <span style="font-family: Courier New,Courier,monospace">images</span> directory.</p>
-<pre class="prettyprint">
-icon = data_get_image(&quot;sw.icon.device&quot;);
-view_set_image(ad-&gt;content, &quot;sw.icon.device&quot;, icon);
-</pre>
-</li>
-<li>Button
-<p>You can create buttons using the <span style="font-family: Courier New,Courier,monospace">view_set_button()</span> function.</p>
-<p>Call the function with the part name, image path, button text, callback function, and user data.</p>
-<p>In this example, the part name is <span style="font-family: Courier New,Courier,monospace">sw.icon.next</span> and the icon contains the path of an image file in the <span style="font-family: Courier New,Courier,monospace">images</span> directory.</p>
-<pre class="prettyprint">
-view_set_button(ad-&gt;content, &quot;sw.icon.next&quot;, icon, NULL, _next_clicked_cb, ad);
-</pre>
-<p>The callback function registered is called when the button is clicked.</p>
-</li>
-<li>Progress bar
-<p>You can create a progress bar using the <span style="font-family: Courier New,Courier,monospace">view_set_prgressbar()</span> function. Pass the part name as a parameter.</p>
-<p>In this example, the part name is <span style="font-family: Courier New,Courier,monospace">sw.progressbar</span>.</p>
-<pre class="prettyprint">
-view_set_prgressbar(ad-&gt;content, &quot;sw.progressbar&quot;);
-</pre> 
-
-<p>You can change value of progressbar using the <span style="font-family: Courier New,Courier,monospace">view_set_progressbar_val()</span> function.</p>
-<p>In this example, the part name is <span style="font-family: Courier New,Courier,monospace">sw.progressbar</span> and the value you want to set.</p>
-<pre class="prettyprint">
-view_set_progressbar_val(ad-&gt;content, &quot;sw.progressbar&quot;, 70);
-</pre>
-</li>
-<li>More button
-<p>You can create a more button using the <span style="font-family: Courier New,Courier,monospace">view_set_more_button()</span> function. Pass the part name as a parameter.</p>
-<pre class="prettyprint">
-view_set_more_button(ad-&gt;content, &quot;sw.more&quot;);
-</pre>
-<p>You can add add items to more button. In this example, the part name is <span style="font-family: Courier New,Courier,monospace">sw.more</span>, and <span style="font-family: Courier New,Courier,monospace">main_txt</span> and <span style="font-family: Courier New,Courier,monospace">sub_txt</span> are displayed when item is selected. The <span style="font-family: Courier New,Courier,monospace">img_path</span> contains the path of image file in the <span style="font-family: Courier New,Courier,monospace">images</span> directory.</p>
-<p>You can also register a callback function and user data.</p>
-<pre class="prettyprint">
-view_add_more_button_item(ad-&gt;content, &quot;sw.more&quot;, main_txt, sub_txt, img_path, _item_clicked_cb, ad);
-</pre>
-</li>
-</ul>
-
-<h2>Main Operation</h2> 
-
-<p>To create the music application:</p>
-<ol>
-<li>Create the music application UI.
-<p>The application starts with the <span style="font-family: Courier New,Courier,monospace">main()</span> function, where the life-cycle callbacks are registered. The <span style="font-family: Courier New,Courier,monospace">app_create()</span> callback function is called first. After that, the <span style="font-family: Courier New,Courier,monospace">view_create()</span> function creates the base UI of the application.</p>
-<pre class="prettyprint">
-static bool
-app_create(void *data)
-{
-&nbsp;&nbsp;&nbsp;// Hook to take necessary actions before main event loop starts
-&nbsp;&nbsp;&nbsp;// Initialize UI resources and application data
-&nbsp;&nbsp;&nbsp;// If this function returns true, the main loop of application starts
-&nbsp;&nbsp;&nbsp;// If this function returns false, the application is terminated
-&nbsp;&nbsp;&nbsp;appdata_s *ad = data;
-&nbsp;&nbsp;&nbsp;char *bg = NULL;
-&nbsp;&nbsp;&nbsp;char *icon = NULL;
-&nbsp;&nbsp;&nbsp;char *txt = NULL;
-&nbsp;&nbsp;&nbsp;int i = 0;
-
-&nbsp;&nbsp;&nbsp;view_create(ad);
-
-&nbsp;&nbsp;&nbsp;bg = data_get_image(&quot;sw.bg&quot;);
-&nbsp;&nbsp;&nbsp;view_set_image(ad-&gt;content, &quot;sw.bg&quot;, bg);
-&nbsp;&nbsp;&nbsp;free(bg);
-
-&nbsp;&nbsp;&nbsp;icon = data_get_image(&quot;sw.icon.vol&quot;);
-&nbsp;&nbsp;&nbsp;view_set_button(ad-&gt;content, &quot;sw.icon.vol&quot;, icon, NULL, _clicked_cb, &quot;volume&quot;);
-&nbsp;&nbsp;&nbsp;view_set_color(ad-&gt;content, &quot;sw.icon.vol&quot;, 250, 250, 250, 255);
-&nbsp;&nbsp;&nbsp;free(icon);
-
-&nbsp;&nbsp;&nbsp;icon = data_get_image(&quot;sw.progressbar.bg&quot;);
-&nbsp;&nbsp;&nbsp;view_set_image(ad-&gt;content, &quot;sw.progressbar.bg&quot;, icon);
-&nbsp;&nbsp;&nbsp;view_set_color(ad-&gt;content, &quot;sw.progressbar.bg&quot;, 0, 87, 107, 255);
-&nbsp;&nbsp;&nbsp;free(icon);
-
-&nbsp;&nbsp;&nbsp;icon = data_get_image(&quot;sw.icon.play&quot;);
-&nbsp;&nbsp;&nbsp;view_set_button(ad-&gt;content, &quot;sw.icon.play&quot;, icon, NULL, _clicked_cb, &quot;play&quot;);
-&nbsp;&nbsp;&nbsp;view_set_color(ad-&gt;content, &quot;sw.icon.play&quot;, 250, 250, 250, 255);
-&nbsp;&nbsp;&nbsp;free(icon);
-
-&nbsp;&nbsp;&nbsp;icon = data_get_image(&quot;sw.icon.prev&quot;);
-&nbsp;&nbsp;&nbsp;view_set_button(ad-&gt;content, &quot;sw.icon.prev&quot;, icon, NULL, _prev_clicked_cb, ad);
-&nbsp;&nbsp;&nbsp;view_set_color(ad-&gt;content, &quot;sw.icon.prev&quot;, 250, 250, 250, 255);
-&nbsp;&nbsp;&nbsp;free(icon);
-
-&nbsp;&nbsp;&nbsp;icon = data_get_image(&quot;sw.icon.next&quot;);
-&nbsp;&nbsp;&nbsp;view_set_button(ad-&gt;content, &quot;sw.icon.next&quot;, icon, NULL, _next_clicked_cb, ad);
-&nbsp;&nbsp;&nbsp;view_set_color(ad-&gt;content, &quot;sw.icon.next&quot;, 250, 250, 250, 255);
-&nbsp;&nbsp;&nbsp;free(icon);
-
-&nbsp;&nbsp;&nbsp;icon = data_get_image(&quot;sw.icon.device&quot;);
-&nbsp;&nbsp;&nbsp;view_set_image(ad-&gt;content, &quot;sw.icon.device&quot;, icon);
-&nbsp;&nbsp;&nbsp;view_set_color(ad-&gt;content, &quot;sw.icon.device&quot;, 250, 250, 250, 255);
-&nbsp;&nbsp;&nbsp;free(icon);
-
-&nbsp;&nbsp;&nbsp;txt = data_get_music_title(0);
-&nbsp;&nbsp;&nbsp;view_set_text(ad-&gt;content, &quot;txt.title&quot;, txt);
-&nbsp;&nbsp;&nbsp;free(txt);
-
-&nbsp;&nbsp;&nbsp;txt = data_get_music_artist(0);
-&nbsp;&nbsp;&nbsp;view_set_text(ad-&gt;content, &quot;txt.artist&quot;, txt);
-&nbsp;&nbsp;&nbsp;free(txt);
-
-&nbsp;&nbsp;&nbsp;evas_object_data_set(ad-&gt;content, &quot;__ALBUM_ORDER__&quot;, (void *)0);
-
-&nbsp;&nbsp;&nbsp;view_set_prgressbar(ad-&gt;content, &quot;sw.progressbar&quot;);
-&nbsp;&nbsp;&nbsp;view_set_color(ad-&gt;content, &quot;sw.progressbar&quot;, 0, 192, 235, 255);
-&nbsp;&nbsp;&nbsp;view_set_progressbar_val(ad-&gt;content, &quot;sw.progressbar&quot;, 70);
-
-&nbsp;&nbsp;&nbsp;view_set_more_button(ad-&gt;content, &quot;sw.more&quot;);
-&nbsp;&nbsp;&nbsp;for ( i = 0; i &lt; 6; i++) 
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view_add_more_button_item(ad-&gt;content,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sw.more&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;more_btn_item[i].main_txt,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;more_btn_item[i].sub_txt,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;more_btn_item[i].img_path,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_more_btn_item_clicked_cb,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad);
-&nbsp;&nbsp;&nbsp;}
-
-&nbsp;&nbsp;&nbsp;return true;
-}
-</pre>
-<p>The <span style="font-family: Courier New,Courier,monospace">view_create()</span> function creates base UI that is composed of window, conformant, and layout components.</p>
-<p>The wearable profile does not support the indicator function, so use a conformant that does not set the indicator mode.</p>
-<pre class="prettyprint">
-void 
-view_create(appdata_s *ad)
-{
-&nbsp;&nbsp;&nbsp;ad-&gt;win = view_create_win();
-&nbsp;&nbsp;&nbsp;if (ad-&gt;win == NULL) 
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;window is NULL.&quot;);
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
-&nbsp;&nbsp;&nbsp;}
-
-&nbsp;&nbsp;&nbsp;ad-&gt;conform = view_create_conformant(ad-&gt;win);
-&nbsp;&nbsp;&nbsp;if (ad-&gt;conform == NULL) 
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to create a conformant&quot;);
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
-&nbsp;&nbsp;&nbsp;}
-
-&nbsp;&nbsp;&nbsp;ad-&gt;content = view_create_layout_for_conformant(ad-&gt;win, ad-&gt;conform, EDJ_FILE, GRP_MAIN, ad);
-&nbsp;&nbsp;&nbsp;if (ad-&gt;content == NULL) 
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_del(ad-&gt;win);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;failed to create a content.&quot;);
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
-&nbsp;&nbsp;&nbsp;}
-
-&nbsp;&nbsp;&nbsp;// Show the window after the base GUI is set up
-&nbsp;&nbsp;&nbsp;evas_object_show(ad-&gt;win);
-}
-</pre>
-<p>When it comes to layout, there are 2 methods to create a layout component. One of them involves creating an edc file that you can customize, and the other uses a premade edc file. This layout is created using a customized edc file.</p>
-
-<pre class="prettyprint">
-Evas_Object*
-view_create_layout_for_conformant(Evas_Object *parent, Evas_Object *conformant, 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const char *file_name, const char *group_name, 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void *user_data)
-{
-&nbsp;&nbsp;&nbsp;Evas_Object *layout = NULL;
-
-&nbsp;&nbsp;&nbsp;layout = view_create_layout(parent, file_name, group_name, user_data);
-&nbsp;&nbsp;&nbsp;if (layout == NULL) 
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;parent is NULL.&quot;);
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;
-&nbsp;&nbsp;&nbsp;}
-
-&nbsp;&nbsp;&nbsp;elm_object_content_set(conformant, layout);
-
-&nbsp;&nbsp;&nbsp;return layout;
-}
-</pre>
-</li>
-<li>Create a more button component with the <span style="font-family: Courier New,Courier,monospace">view_create_more_button()</span> function.
-<pre class="prettyprint">
-void 
-view_set_more_button(Evas_Object *parent, const char *part)
-{
-&nbsp;&nbsp;&nbsp;Evas_Object *more_btn = NULL;
-
-&nbsp;&nbsp;&nbsp;if (parent == NULL) 
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;parent is NULL.&quot;);
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
-&nbsp;&nbsp;&nbsp;}
-
-&nbsp;&nbsp;&nbsp;more_btn = eext_more_option_add(parent);
-&nbsp;&nbsp;&nbsp;if (more_btn == NULL) 
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;more option is NULL.&quot;);
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
-&nbsp;&nbsp;&nbsp;}
-
-&nbsp;&nbsp;&nbsp;// Add the smart callbacks
-&nbsp;&nbsp;&nbsp;evas_object_smart_callback_add(more_btn, &quot;more,option,opened&quot;, _more_option_opened, NULL);
-&nbsp;&nbsp;&nbsp;evas_object_smart_callback_add(more_btn, &quot;more,option,closed&quot;, _more_option_closed, NULL);
-&nbsp;&nbsp;&nbsp;evas_object_smart_callback_add(more_btn, &quot;item,selected&quot;, _item_selected, NULL);
-
-&nbsp;&nbsp;&nbsp;elm_object_part_content_set(parent, part, more_btn);
-}
-</pre>
-<p>You can add items to the more button component using the <span style="font-family: Courier New,Courier,monospace">view_add_more_button_item()</span> function.</p>
-<pre class="prettyprint">
-void 
-view_add_more_button_item(Evas_Object *parent, const char *part, const char *main_txt, 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const char *sub_txt, const char *img_path, 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void (clicked_cb)(void *data, Evas_Object *obj, 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void *event_info), void *user_data)
-{
-&nbsp;&nbsp;&nbsp;Evas_Object *img = NULL;
-&nbsp;&nbsp;&nbsp;Evas_Object *more_btn = NULL;
-&nbsp;&nbsp;&nbsp;char full_path[PATH_MAX] = {0,};
-
-&nbsp;&nbsp;&nbsp;more_btn = elm_object_part_content_get(parent, part);
-&nbsp;&nbsp;&nbsp;if (more_btn == NULL) 
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
-&nbsp;&nbsp;&nbsp;}
-
-&nbsp;&nbsp;&nbsp;// Create the new item
-&nbsp;&nbsp;&nbsp;Eext_Object_Item *item  = eext_more_option_item_append(more_btn);
-
-&nbsp;&nbsp;&nbsp;// Set the text in item text part
-&nbsp;&nbsp;&nbsp;eext_more_option_item_part_text_set(item, &quot;selector,main_text&quot;, main_txt);
-&nbsp;&nbsp;&nbsp;eext_more_option_item_part_text_set(item, &quot;selector,sub_text&quot;, sub_txt);
-
-&nbsp;&nbsp;&nbsp;img = elm_image_add(more_btn);
-&nbsp;&nbsp;&nbsp;_get_resource(img_path, full_path, sizeof(full_path));
-&nbsp;&nbsp;&nbsp;elm_image_file_set(img, full_path, NULL);
-
-&nbsp;&nbsp;&nbsp;// Set the content in item content part
-&nbsp;&nbsp;&nbsp;eext_more_option_item_part_content_set(item, &quot;item,icon&quot;, img);
-
-&nbsp;&nbsp;&nbsp;evas_object_smart_callback_add(more_btn, &quot;item,clicked&quot;, clicked_cb, user_data);
-}
-</pre>
-</li>
-<li>Click the next or previous button. 
-<p>If you click the next or previous button, you can change the music information with the <span style="font-family: Courier New,Courier,monospace">_next_clicked_cb()</span> and <span style="font-family: Courier New,Courier,monospace">_prev_clicked_cb()</span> callbacks.</p>
-<pre class="prettyprint">
-static void 
-_next_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
-&nbsp;&nbsp;&nbsp;appdata_s *ad = data;
-&nbsp;&nbsp;&nbsp;char *bg = NULL;
-&nbsp;&nbsp;&nbsp;char *title = NULL;
-&nbsp;&nbsp;&nbsp;char *artist = NULL;
-&nbsp;&nbsp;&nbsp;int index = 0;
-
-&nbsp;&nbsp;&nbsp;index = (int)evas_object_data_get(ad-&gt;content, &quot;__ALBUM_ORDER__&quot;);
-&nbsp;&nbsp;&nbsp;index = (index + 1) % 2;
-&nbsp;&nbsp;&nbsp;evas_object_data_set(ad-&gt;content, &quot;__ALBUM_ORDER__&quot;, (void *)index);
-
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_DEBUG, LOG_TAG, &quot;next button is clicked(%d)&quot;, index);
-
-&nbsp;&nbsp;&nbsp;bg = data_get_music_album_art(index);
-&nbsp;&nbsp;&nbsp;view_set_image(ad-&gt;content, &quot;sw.bg&quot;, bg);
-&nbsp;&nbsp;&nbsp;free(bg);
-
-&nbsp;&nbsp;&nbsp;title = data_get_music_title(index);
-&nbsp;&nbsp;&nbsp;view_set_text(ad-&gt;content, &quot;txt.title&quot;, title);
-&nbsp;&nbsp;&nbsp;free(title);
-
-&nbsp;&nbsp;&nbsp;artist = data_get_music_artist(index);
-&nbsp;&nbsp;&nbsp;view_set_text(ad-&gt;content, &quot;txt.artist&quot;, artist);
-&nbsp;&nbsp;&nbsp;free(artist);
-}
-</pre>
-</li>
-</ol>
-
-<script type="text/javascript" src="../scripts/jquery.zclip.min.js"></script>
-<script type="text/javascript" src="../scripts/showhide.js"></script>
-</div></div></div>
-
-<a class="top sms" href="#"><img src="../images/btn_top.gif" alt="Go to top" /></a>
-
-<div id="footer">
-<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
-</div>
-
-<script type="text/javascript">
-var _gaq = _gaq || [];
-_gaq.push(['_setAccount', 'UA-25976949-1']);
-_gaq.push(['_trackPageview']);
-(function() {
-var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-})();
-</script>
-
-</body>
-</html>
-
index 665d92d..e886b0f 100644 (file)
@@ -87,6 +87,7 @@
                        <topic href="html/mobile_n/attach_panel_sd_mn.htm" label="Attach Panel"></topic>
                        <topic href="html/mobile_n/badge_sd_mn.htm" label="Badge"></topic>
                        <topic href="html/mobile_n/bluetoothchat_sd_mn.htm" label="Bluetooth Chat"></topic>
+                       <topic href="html/mobile_n/bluetooth_le_collector_sd_mn.htm" label="Bluetooth LE Collector"></topic>
                        <topic href="html/mobile_n/bundle_sd_mn.htm" label="Bundle"></topic>
                        <topic href="html/mobile_n/cairo_basic_sd_mn.htm" label="Cairo Basic"></topic>
                        <topic href="html/mobile_n/cairo_evasgl_sd_mn.htm" label="Cairo EvasGL"></topic>
                        <topic href="html/mobile_n/evas_gl_sd_mn.htm" label="EvasGLCube"></topic>
                        <topic href="html/mobile_n/event_sd_mn.htm" label="Event"></topic>
                        <topic href="html/mobile_n/file_manager_sd_mn.htm" label="File Manager"></topic>
+                       <topic href="html/mobile_n/files_sharing_sd_mn.htm" label="Files Sharing"></topic>
+                       <topic href="html/mobile_n/files_sharing_server_sd_mn.htm" label="Files Sharing Server"></topic>
+                       <topic href="html/mobile_n/lbs_geofence_sd_mn.htm" label="Geofence"></topic>                    
                        <topic href="html/mobile_n/glview11_cube_sd_mn.htm" label="GLView11Cube"></topic>
                        <topic href="html/mobile_n/glview_cube_sd_mn.htm" label="GLViewCube"></topic>
                        <topic href="html/mobile_n/glview_shader_sd_mn.htm" label="GLViewShader"></topic>
                        <topic href="html/mobile_n/internationalization_sd_mn.htm" label="Internationalization"></topic>
                        <topic href="html/mobile_n/launchonevent_sd_mn.htm" label="LaunchOnEventServiceApp"></topic>
                        <topic href="html/mobile_n/layout_transitions_sd_mn.htm" label="Layout Transitions"></topic>
-                       <topic href="html/mobile_n/lbs_geofence_sd_mn.htm" label="LBS Geofence"></topic>
-                       <topic href="html/mobile_n/lbs_maps_sd_mn.htm" label="LBS Maps"></topic>
                        <topic href="html/mobile_n/oauth_sd_mn.htm" label="LibOauth"></topic>
                        <topic href="html/mobile_n/lockscreen_sd_mn.htm" label="Lockscreen"></topic>
+                       <topic href="html/mobile_n/lbs_maps_sd_mn.htm" label="Maps"></topic>                    
                        <topic href="html/mobile_n/mediaapp_sd_mn.htm" label="Media App"></topic>
                        <topic href="html/mobile_n/mediacontroller_client_sd_mn.htm" label="Media-controller-client"></topic>
                        <topic href="html/mobile_n/mediacontroller_server_sd_mn.htm" label="Media-controller-server"></topic>
                        <topic href="html/mobile_n/simple_home_sd_mn.htm" label="Simple Homescreen"></topic>
                        <topic href="html/mobile_n/sketch_sd_mn.htm" label="Sketch"></topic>
                        <topic href="html/mobile_n/stopwatch_sd_mn.htm" label="Stopwatch"></topic>
+                       <topic href="html/mobile_n/stop_watch_sd_mn.htm" label="Stop Watch"></topic>
+                       <topic href="html/mobile_n/stream_player_sd_mn.htm" label="Stream-player"></topic>
                        <topic href="html/mobile_n/syncadapterapp_sd_mn.htm" label="Sync Adapter App"></topic>
                        <topic href="html/mobile_n/syncadapterserviceapp_sd_mn.htm" label="Sync Adapter Service App"></topic>
                        <topic href="html/mobile_n/systeminfo_sd_mn.htm" label="System Info"></topic>
                        <topic href="html/wearable_n/cairo_evasgl_sd_wn.htm" label="(Circle) Cairo EvasGL"></topic>
                        <topic href="html/wearable_n/circlecircular_camera_sd_wn.htm" label="(Circle) Circular Camera"></topic>
                        <topic href="html/wearable_n/circleemail_sd_wn.htm" label="(Circle) Email"></topic>
+                       <topic href="html/wearable_n/circlemusic_sd_wn.htm" label="(Circle) Music"></topic>                     
                        <topic href="html/wearable_n/circlerotarytimer_sd_wn.htm" label="(Circle) Rotary Timer"></topic>
                        <topic href="html/wearable_n/circlesensors_sd_wn.htm" label="(Circle) Sensors"></topic>
                        <topic href="html/wearable_n/circlesettingtime_sd_wn.htm" label="(Circle) Setting Time"></topic>
                        <topic href="html/wearable_n/circlesettings_sd_wn.htm" label="(Circle) Settings"></topic>
+                       <topic href="html/wearable_n/settings_sd_wn.htm" label="(Circle) System Settings UI"></topic>
                        <topic href="html/wearable_n/rectemail_sd_wn.htm" label="(Rectangle) Email"></topic>
                        <topic href="html/wearable_n/rectsettings_sd_wn.htm" label="(Rectangle) Settings"></topic>
                        <topic href="html/wearable_n/rectuidialer_sd_wn.htm" label="(Rectangle) UI Dialer"></topic>
                        <topic href="html/wearable_n/rectwidgetviewer_sd_wn.htm" label="(Rectangle) Widget Viewer"></topic>
+                       <topic href="html/wearable_n/alarm_widget_sd_wn.htm" label="Alarm Widget"></topic>
                        <topic href="html/wearable_n/ambientweather_sd_wn.htm" label="Ambient Weather"></topic>
                        <topic href="html/wearable_n/analog_watch_sd_wn.htm" label="Analog Watch"></topic>
+                       <topic href="html/wearable_n/bluetooth_le_service_sd_wn.htm" label="Bluetooth LE Service"></topic>
                        <topic href="html/wearable_n/digital_watch_sd_wn.htm" label="Digital-Watch"></topic>
                        <topic href="html/wearable_n/evas_gl_sd_wn.htm" label="EvasGLCube"></topic>     
                        <topic href="html/wearable_n/glview11_cube_sd_wn.htm" label="GLView11Cube"></topic>
                        <topic href="html/wearable_n/glview_cube_sd_wn.htm" label="GLViewCube"></topic>
-                       <topic href="html/wearable_n/glview_shader_sd_wn.htm" label="GLViewShader"></topic>                             
+                       <topic href="html/wearable_n/glview_shader_sd_wn.htm" label="GLViewShader"></topic>
+                       <topic href="html/wearable_n/new_briefing_widget_sd_wn.htm" label="News Briefing Widget"></topic>                       
+                       <topic href="html/wearable_n/scheduler_widget_sd_wn.htm" label="Scheduler Widget"></topic>
+                       <topic href="html/wearable_n/taskmanager_sd_wn.htm" label="Task-manager"></topic>
                        <topic href="html/wearable_n/widget_animation_sd_wn.htm" label="Widget Animation"></topic>
+                       <topic href="html/wearable_n/worldclock_widget_sd_wn.htm" label="World Clock Widget"></topic>
                </topic>                
        </topic>
 </toc>
index f246dea..d95ea51 100644 (file)
Binary files a/org.tizen.tutorials/html/images/watchface_project.png and b/org.tizen.tutorials/html/images/watchface_project.png differ
index 4b276d1..55e3757 100644 (file)
@@ -85,9 +85,9 @@
                </li>           
                <li><a href="web/tizen/multimedia/multimedia_tutorials_w.htm">Multimedia</a>
                        <ul>
-                               <li><a href="web/tizen/multimedia/media_controller_tutorial_w.htm">Media Controller</a></li>
                                <li><a href="web/tizen/multimedia/media_key_tutorial_w.htm">Media Key</a></li>
                                <li><a href="web/tizen/multimedia/sound_tutorial_w.htm">Sound</a></li>
+                               <li><a href="web/tizen/multimedia/media_controller_tutorial_w.htm">Media Controller</a></li>                            
                        </ul>
                </li>
                <li><a href="web/tizen/system/system_tutorials_w.htm">System</a>
                <li><a href="native/location/location_tutorials_n.htm">Location</a>
                        <ul>
                                <li><a href="native/location/location_tutorial_n.htm">Location Manager</a></li>
-                               <li><a href="native/location/geofence_tutorial_n.htm">Geofence Manager</a></li>
+                               <li><a href="native/location/geofence_tutorial_n.htm">Geofence</a></li>
                                <li><a href="native/location/maps_tutorial_n.htm">Maps Service</a></li>                         
                        </ul>           
                </li>
                                <li><a href="native/multimedia/camera_tutorial_n.htm">Camera</a></li>
                                <li><a href="native/multimedia/image_util_tutorial_n.htm">Image Util</a></li>
                                <li><a href="native/multimedia/media_codec_tutorial_n.htm">Media Codec</a></li>
+                               <li><a href="native/multimedia/media_key_tutorial_n.htm">Media key</a></li>                             
                                <li><a href="native/multimedia/media_tools_tutorial_n.htm">Media Tool</a></li>
                                <li><a href="native/multimedia/metadata_extractor_tutorial_n.htm">Metadata Extractor</a></li>
                                <li><a href="native/multimedia/openal_tutorial_n.htm">OpenAL</a></li>
                        <ul>
                                <li><a href="native/system/device_tutorial_n.htm">Device</a></li>
                                <li><a href="native/system/dlog_tutorial_n.htm">dlog</a></li>
-                               <li><a href="native/system/media_key_tutorial_n.htm">Media key</a></li>
                                <li><a href="native/system/runtime_tutorial_n.htm">Runtime information</a></li>
                                <li><a href="native/system/sensor_tutorial_n.htm">Sensor</a></li>
                                <li><a href="native/system/sysinfo_tutorial_n.htm">System Information</a></li>
                                <li><a href="native/system/system_setting_tutorial_n.htm">System Settings</a></li>
                                <li><a href="native/system/storage_tutorial_n.htm">Storage</a></li>
+                               <li><a href="native/system/feedback_tutorial_n.htm">Feedback</a></li>   
                                <li><a href="native/system/t-trace_tutorial_n.htm">T-trace</a></li>                     
                        </ul>
                </li>
index 6d64e60..a461277 100644 (file)
@@ -112,27 +112,28 @@ int sync_job_id = -1;
 
 <li>Add an on-demand sync job:
 <pre class="prettyprint">
-result = sync_manager_on_demand_sync_job(account, sync_job_name, SYNC_OPTION_NONE, sync_job_user_data, &amp;sync_job_id);
+result = sync_manager_on_demand_sync_job(account, sync_job_name, SYNC_OPTION_NONE, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sync_job_user_data, &amp;sync_job_id);
 </pre>
 <p>This function can be used with various options, as shown in the following example. The <span style="font-family: Courier New,Courier,monospace">SYNC_OPTION_NO_RETRY</span> option means the sync job is not performed again when it fails. The <span style="font-family: Courier New,Courier,monospace">SYNC_OPTION_EXPEDITED</span> option means the other sync job is operated as soon as possible. The call with the OR structure lets the other sync job operate just once with priority.</p>
-
 <pre class="prettyprint">
-result = sync_manager_on_demand_sync_job(account, sync_job_name2, SYNC_OPTION_NO_RETRY,
-                                        sync_job_user_data, &amp;sync_job_id2);
-result = sync_manager_on_demand_sync_job(account, sync_job_name3, SYNC_OPTION_EXPEDITED,
-                                        sync_job_user_data, &amp;sync_job_id3);
-result = sync_manager_on_demand_sync_job(account, sync_job_name4,
-                                        (SYNC_OPTION_NO_RETRY | SYNC_OPTION_EXPEDITED),
-                                        sync_job_user_data, &amp;sync_job_id4);
+result = sync_manager_on_demand_sync_job(account, sync_job_name2, SYNC_OPTION_NO_RETRY, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sync_job_user_data, &amp;sync_job_id2);
+result = sync_manager_on_demand_sync_job(account, sync_job_name3, SYNC_OPTION_EXPEDITED, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sync_job_user_data, &amp;sync_job_id3);
+result = sync_manager_on_demand_sync_job(account, sync_job_name4, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SYNC_OPTION_NO_RETRY | SYNC_OPTION_EXPEDITED), 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sync_job_user_data, &amp;sync_job_id4);
 </pre>
 <p>This function can also be called like in the following example, because the account handle and user data are not mandatory:</p>
 <pre class="prettyprint">
-result = sync_manager_on_demand_sync_job(NULL, sync_job_name, SYNC_OPTION_NONE,
-                                        sync_job_user_data, &amp;sync_job_id);
-result = sync_manager_on_demand_sync_job(account, sync_job_name2, SYNC_OPTION_NO_RETRY,
-                                        NULL, &amp;sync_job_id2);
-result = sync_manager_on_demand_sync_job(NULL, sync_job_name3, SYNC_OPTION_EXPEDITED,
-                                        NULL, &amp;sync_job_id3);
+result = sync_manager_on_demand_sync_job(NULL, sync_job_name, SYNC_OPTION_NONE, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sync_job_user_data, &amp;sync_job_id);
+result = sync_manager_on_demand_sync_job(account, sync_job_name2, SYNC_OPTION_NO_RETRY, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL, &amp;sync_job_id2);
+result = sync_manager_on_demand_sync_job(NULL, sync_job_name3, SYNC_OPTION_EXPEDITED, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL, &amp;sync_job_id3);
 </pre>
 <p>If the on-demand sync job addition process succeeds, the <span style="font-family: Courier New,Courier,monospace">SYNC_ERROR_NONE</span> value is returned.</p>
 </li>
@@ -155,7 +156,7 @@ sync_adapter_unset_callbacks();
 </pre>
 </li>
 </ol>
-
+               
 <h2 id="periodic_sync" name="periodic_sync">Initializing the Periodic Sync</h2>
 
 <p>To inform periodically a service application of the time to operate a sync job with its sync interval:</p>
@@ -205,52 +206,52 @@ int sync_job_id = -1;
 <li>Add a periodic sync job with an interval as 30 minutes.
 <p>This function operates the sync job with the given period interval.</p>
 <pre class="prettyprint">
-result = sync_manager_add_periodic_sync_job(account, sync_job_name, sync_period,
-                                           SYNC_OPTION_NONE, sync_job_user_data,
-                                           &amp;sync_job_id);
+result = sync_manager_add_periodic_sync_job(account, sync_job_name, sync_period, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_NONE, sync_job_user_data, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id);
 </pre>
 <p>This function can be used with various options, as shown in the following example. The <span style="font-family: Courier New,Courier,monospace">SYNC_OPTION_NO_RETRY</span> option means a sync job is not performed again when it fails. The <span style="font-family: Courier New,Courier,monospace">SYNC_OPTION_EXPEDITED</span> option means another sync job is operated as soon as possible. The call with the OR structure lets the other sync job operate just once with priority.</p>
 <pre class="prettyprint">
-result = sync_manager_add_periodic_sync_job(account, sync_job_name2, sync_period2,
-                                           SYNC_OPTION_NO_RETRY, sync_job_user_data,
-                                           &amp;sync_job_id2);
-result = sync_manager_add_periodic_sync_job(account, sync_job_name3, sync_period3,
-                                           SYNC_OPTION_EXPEDITED, sync_job_user_data,
-                                           &amp;sync_job_id3);
-result = sync_manager_add_periodic_sync_job(account, sync_job_name4, sync_period4,
-                                           (SYNC_OPTION_NO_RETRY | SYNC_OPTION_EXPEDITED),
-                                           sync_job_user_data, &amp;sync_job_id4)
+result = sync_manager_add_periodic_sync_job(account, sync_job_name2, sync_period2, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_NO_RETRY, sync_job_user_data, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id2);
+result = sync_manager_add_periodic_sync_job(account, sync_job_name3, sync_period3, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_EXPEDITED, sync_job_user_data, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id3);
+result = sync_manager_add_periodic_sync_job(account, sync_job_name4, sync_period4, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SYNC_OPTION_NO_RETRY | SYNC_OPTION_EXPEDITED), 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sync_job_user_data, &amp;sync_job_id4);
 </pre>
 <p>This function can also be called like in the following example, because the account handle and user data are not mandatory:</p>
 <pre class="prettyprint">
-result = sync_manager_add_periodic_sync_job(NULL, sync_job_name, sync_period,
-                                           SYNC_OPTION_NONE, sync_job_user_data,
-                                           &amp;sync_job_id);
-result = sync_manager_add_periodic_sync_job(account, sync_job_name2, sync_period2,
-                                           SYNC_OPTION_NO_RETRY, NULL,
-                                           &amp;sync_job_id2);
-result = sync_manager_add_periodic_sync_job(NULL, sync_job_name3, sync_period3,
-                                           SYNC_OPTION_EXPEDITED, NULL,
-                                           &amp;sync_job_id3);
+result = sync_manager_add_periodic_sync_job(NULL, sync_job_name, sync_period, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_NONE, sync_job_user_data, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id);
+result = sync_manager_add_periodic_sync_job(account, sync_job_name2, sync_period2, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_NO_RETRY, NULL, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id2);
+result = sync_manager_add_periodic_sync_job(NULL, sync_job_name3, sync_period3, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_EXPEDITED, NULL, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id3);
 </pre>
 <p>If the periodic sync job addition process succeeds, the <span style="font-family: Courier New,Courier,monospace">SYNC_ERROR_NONE</span> value is returned.</p>
 </li>
 
 <li>The <span style="font-family: Courier New,Courier,monospace">sync_manager_add_periodic_sync_job()</span> function can renew a registered periodic sync job by using the same <span style="font-family: Courier New,Courier,monospace">sync_job_name</span> as before:
 <pre class="prettyprint">
-result = sync_manager_add_periodic_sync_job(account, sync_job_name, sync_period,
-                                           SYNC_OPTION_NONE, sync_job_user_data,
-                                           &amp;sync_job_id);
-result = sync_manager_add_periodic_sync_job(account, sync_job_name, sync_period2,
-                                           SYNC_OPTION_EXPEDITED, sync_job_user_data2,
-                                           &amp;sync_job_id);
+result = sync_manager_add_periodic_sync_job(account, sync_job_name, sync_period, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_NONE, sync_job_user_data, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id);
+result = sync_manager_add_periodic_sync_job(account, sync_job_name, sync_period2, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_EXPEDITED, sync_job_user_data2, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id);
 </pre>
 <p>All the function parameters can be reset except <span style="font-family: Courier New,Courier,monospace">sync_job_name</span> and <span style="font-family: Courier New,Courier,monospace">sync_job_id</span>, which are used to manage a specific sync job.</p>
 </li>
 
 <li>When the periodic sync is no longer needed, remove it with the <span style="font-family: Courier New,Courier,monospace">sync_manager_remove_sync_job()</span> function with its <span style="font-family: Courier New,Courier,monospace">sync_job_id</span>. If you want to stop using the account too, clean up the account handle.
 <p>At the end, unset the sync callbacks and release the resources with the <span style="font-family: Courier New,Courier,monospace">sync_adapter_unset_callbacks()</span> function.</p>
-
 <pre class="prettyprint">
 result = sync_manager_remove_sync_job(sync_job_id);
 
@@ -320,42 +321,47 @@ int sync_job_id = -1;
 <li>Add a data change sync job for the calendar capability.
 <p>The <span style="font-family: Courier New,Courier,monospace">sync_manager_add_data_change_sync_job()</span> function operates a sync job only for a registered capability.</p>
 <pre class="prettyprint">
-result = sync_manager_add_data_change_sync_job(account, sync_capability_calendar,
-                                              SYNC_OPTION_NONE, sync_job_user_data,
-                                              &amp;sync_job_id);
+result = sync_manager_add_data_change_sync_job(account, sync_capability_calendar, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_NONE, sync_job_user_data, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id);
 </pre>
 
 <p>This function can be used with various options, as shown in the following example. The <span style="font-family: Courier New,Courier,monospace">SYNC_OPTION_NO_RETRY</span> option means a sync job is not performed again when it fails. The <span style="font-family: Courier New,Courier,monospace">SYNC_OPTION_EXPEDITED</span> option means another sync job is operated as soon as possible. The call with the OR structure lets the other sync job operate just once with priority.</p>
 <pre class="prettyprint">
-result = sync_manager_add_data_change_sync_job(account, sync_capability_calendar,
-                                              SYNC_OPTION_NO_RETRY, sync_job_user_data, &amp;sync_job_id2);
-result = sync_manager_add_data_change_sync_job(account, sync_capability_contact,
-                                              SYNC_OPTION_EXPEDITED, sync_job_user_data, &amp;sync_job_id3);
-result = sync_manager_add_data_change_sync_job(account, sync_capability_image,
-                                              (SYNC_OPTION_NO_RETRY | SYNC_OPTION_EXPEDITED),
-                                              sync_job_user_data, &amp;sync_job_id4);
+result = sync_manager_add_data_change_sync_job(account, sync_capability_calendar, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_NO_RETRY, sync_job_user_data, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id2);
+result = sync_manager_add_data_change_sync_job(account, sync_capability_contact, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_EXPEDITED, sync_job_user_data, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id3);
+result = sync_manager_add_data_change_sync_job(account, sync_capability_image, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SYNC_OPTION_NO_RETRY | SYNC_OPTION_EXPEDITED), 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sync_job_user_data, &amp;sync_job_id4);
 </pre>
 <p>This function can also be called like in the following example, because the account handle and user data are not mandatory:</p>
 
 <pre class="prettyprint">
 result = sync_manager_add_data_change_sync_job(NULL, sync_capability_music,
-                                              SYNC_OPTION_NONE, sync_job_user_data, &amp;sync_job_id);
-result = sync_manager_add_data_change_sync_job(account, sync_capability_sound,
-                                              SYNC_OPTION_NO_RETRY, NULL, &amp;sync_job_id2);
-result = sync_manager_add_data_change_sync_job(NULL, sync_capability_video,
-                                              SYNC_OPTION_EXPEDITED, NULL, &amp;sync_job_id3);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_NONE, sync_job_user_data, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id);
+result = sync_manager_add_data_change_sync_job(account, sync_capability_sound, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_NO_RETRY, NULL, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id2);
+result = sync_manager_add_data_change_sync_job(NULL, sync_capability_video, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_EXPEDITED, NULL, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id3);
 </pre>
 <p>If the data change sync job addition process succeeds, the <span style="font-family: Courier New,Courier,monospace">SYNC_ERROR_NONE</span> value is returned.</p>
 </li>
 
 <li>The <span style="font-family: Courier New,Courier,monospace">sync_manager_add_data_change_sync_job()</span> function can renew a registered data change sync job by using the same <span style="font-family: Courier New,Courier,monospace">sync_capability</span> as before:
 <pre class="prettyprint">
-result = sync_manager_add_data_change_sync_job(account, sync_capability_calendar,
-                                              SYNC_OPTION_NONE, sync_job_user_data,
-                                              &amp;sync_job_id);
-result = sync_manager_add_data_change_sync_job(account, sync_capability_calendar,
-                                              SYNC_OPTION_EXPEDITED, sync_job_user_data2,
-                                              &amp;sync_job_id);
+result = sync_manager_add_data_change_sync_job(account, sync_capability_calendar, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_NONE, sync_job_user_data, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id);
+result = sync_manager_add_data_change_sync_job(account, sync_capability_calendar, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYNC_OPTION_EXPEDITED, sync_job_user_data2, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;sync_job_id);
 </pre>
 <p>All the function parameters can be reset except <span style="font-family: Courier New,Courier,monospace">sync_capability</span> and <span style="font-family: Courier New,Courier,monospace">sync_job_id</span>, which are used to manage a specific sync job.</p>
 </li>
@@ -400,11 +406,11 @@ result = sync_manager_foreach_sync_job(sync_job_cb, NULL);
 
 <li>Define the <span style="font-family: Courier New,Courier,monospace">sync_job_cb()</span> callback, which is invoked separately for every registered sync job. In the callback, the sync jobs are verified with a corresponding data.
 <pre class="prettyprint">
-bool
-sync_job_cb(account_h account, const char *sync_job_name, const char *sync_capability,
-           int sync_job_id, bundle *sync_job_user_data, void *user_data)
+bool 
+sync_job_cb(account_h account, const char *sync_job_name, const char *sync_capability, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int sync_job_id, bundle *sync_job_user_data, void *user_data)
 {
-&nbsp;&nbsp;&nbsp;// Verify registered sync jobs
+&nbsp;&nbsp;&nbsp;// Verify the registered sync jobs
 }
 </pre>
 </li>
@@ -433,16 +439,18 @@ result = sync_adapter_set_callbacks(on_start_cb, on_cancel_cb);
 
 <li>When the <span style="font-family: Courier New,Courier,monospace">on_start_cb()</span> callback is invoked, the predefined data sync process is performed inside the callback function. The <span style="font-family: Courier New,Courier,monospace">on_cancel_cb()</span> callback works in a similar way and cancels the data sync process.
 <pre class="prettyprint">
-bool
-on_start_cb(account_h account, const char *sync_job_name, const char *sync_capability, bundle *sync_job_user_data)
+bool 
+on_start_cb(account_h account, const char *sync_job_name, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const char *sync_capability, bundle *sync_job_user_data)
 {
-&nbsp;&nbsp;&nbsp;// Start data sync process
+&nbsp;&nbsp;&nbsp;// Start the data sync process
 }
 
-void
-on_cancel_cb(account_h account, const char *sync_job_name, const char *sync_capability, bundle *sync_job_user_data)
+void 
+on_cancel_cb(account_h account, const char *sync_job_name, 
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const char *sync_capability, bundle *sync_job_user_data)
 {
-&nbsp;&nbsp;&nbsp;// Cancel data sync process
+&nbsp;&nbsp;&nbsp;// Cancel the data sync process
 }
 </pre>
 </li>
index 9d367d7..9f2ee97 100644 (file)
@@ -64,7 +64,7 @@
 <h2 id="init" name="init">Initializing the Alarm Functionality</h2>
 
 <p>To initialize the alarm functionality:</p>
-<ol><li>To use the functions and data types of the Alarm API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__ALARM__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__ALARM__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;app_alarm.h&gt;</span> header files in your application:
+<ol><li>To use the functions and data types of the Alarm API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__ALARM__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__ALARM__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;app_alarm.h&gt;</span> header file in your application:
 <pre class="prettyprint">
 #include &lt;app_alarm.h&gt;
 </pre></li>
index 0f3c5ab..2bc0bed 100644 (file)
@@ -93,7 +93,7 @@
 
                        
 <p>To initialize notifications:</p>
-<ol><li>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html">Notification API</a>, include the <span style="font-family: Courier New,Courier,monospace">&lt;notification.h&gt;</span> header file in your application:
+<ol><li>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html">Notification</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;notification.h&gt;</span> header file in your application:
 <pre class="prettyprint">
 #include &lt;notification.h&gt;
 </pre>
@@ -113,7 +113,7 @@ free(shared_path);
  <h2 id="create" name="create">Creating a Notification</h2>
 
 <p>Initialize a notification handle by calling the <span style="font-family: Courier New,Courier,monospace">notification_create()</span> function.</p>
-<p>The parameter is the notification type, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#ga0809cf2728f6e60d54ba8ddf9115aa7db20"><span style="font -family: Courier New,Courier,monospace">_notification_type</span></a> enumeration.</p>
+<p>The parameter is the notification type, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#ga0809cf2728f6e60d54ba8ddf9aa7db20">_notification_type</a> enumeration.</p>
 <pre class="prettyprint">
 notification = notification_create(NOTIFICATION_TYPE_ONGOING);
 if (notification != NULL)
@@ -132,7 +132,7 @@ if (notification != NULL)
 <li id="text">Notification text:
 
 <p>To set the text (title and content string) to display in the notification view, use the <span style="font-family: Courier New,Courier,monospace">notification_set_text()</span> function.</p>
-<p>The second parameter defines the notification type, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#ga1b932c18e0430b4cd3a09da98d1fb41b"><span style="font-family: Courier New,Courier,monospace">_notification_text_type</span></a> enumeration.</p>
+<p>The second parameter defines the notification type, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#ga1b932c18e0430b4cd3a09da98d1fb41b">_notification_text_type</a> enumeration.</p>
 <pre class="prettyprint">
 int ret =0;
 ret = notification_set_text(notification, NOTIFICATION_TEXT_TYPE_TITLE, &quot;text&quot;,
@@ -161,7 +161,7 @@ if (ret != NOTIFICATION_ERROR_NONE)
 <li id="image">Notification image:
 
 <p>To set the image to display in the notification view, use the <span style="font-family: Courier New,Courier,monospace">notification_set_image()</span> function.</p>
-<p>The second parameter defines the notification image type, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#gaa285a3f74abc58d1cb0b78f0bfd09ed5"><span style="font-family: Courier New,Courier,monospace">_notification_image_type</span></a> enumeration.</p>
+<p>The second parameter defines the notification image type, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#gaa285a3f74abc58d1cb0b78f0bfd09ed5">_notification_image_type</a> enumeration.</p>
 <pre class="prettyprint">
 ret = notification_set_image(notification, NOTIFICATION_IMAGE_TYPE_ICON, image_path);
 if (ret != NOTIFICATION_ERROR_NONE)
@@ -174,7 +174,7 @@ if (ret != NOTIFICATION_ERROR_NONE)
 <li id="display">Notification display options:
 
 <p>To set how applications display the notification, use the <span style="font-family: Courier New,Courier,monospace">notification_set_display_applist()</span> function.</p>
-<p>The second parameter defines the notification display option, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#gaf7944456661e023a3bac1f430eb680a2"><span style="font-family: Courier New,Courier,monospace">_notification_display_applist</span></a> enumeration. You can set multiple options with the &quot;|&quot; pipe operation.</p>
+<p>The second parameter defines the notification display option, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#gaf7944456661e023a3bac1f430eb680a2">_notification_display_applist</a> enumeration. You can set multiple options with the &quot;|&quot; pipe operation.</p>
 <pre class="prettyprint">
 ret = notification_set_display_applist(notification,
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY | NOTIFICATION_DISPLAY_APP_TICKER);
@@ -190,7 +190,7 @@ if (ret != NOTIFICATION_ERROR_NONE)
 <p>To set the LED options for a notification, use the <span style="font-family: Courier New,Courier,monospace">notification_set_led()</span> and <span style="font-family: Courier New,Courier,monospace">notification_set_led_time_period()</span> functions:</p>
 <ul>
 <li>
-<p>The <span style="font-family: Courier New,Courier,monospace">notification_set_led()</span> function sets the LED operation. The second parameter defines the LED notification, whose values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#gaa96099d9bff211107f6b200eeb92e1d9"><span style="font-family: Courier New,Courier,monospace">_notification_led_op</span></a> enumeration.</p>
+<p>The <span style="font-family: Courier New,Courier,monospace">notification_set_led()</span> function sets the LED operation. The second parameter defines the LED notification, whose values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#gaa96099d9bff211107f6b200eeb92e1d9">_notification_led_op</a> enumeration.</p>
 </li>
 <li>
 
@@ -214,7 +214,7 @@ if (ret != NOTIFICATION_ERROR_NONE)
 <li id="prop">Notification properties:
 
 <p>To set a notification property, use the <span style="font-family: Courier New,Courier,monospace">notification_set_property()</span> function.</p>
-<p>The second parameter defines the notification property, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#ga70f1e4c6f3d36e09d0a9bdff7d6807c3"><span style="font-family: Courier New,Courier,monospace">_notification_property</span></a> enumeration. You can set multiple properties with the &quot;|&quot; pipe operation.</p>
+<p>The second parameter defines the notification property, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#ga70f1e4c6f3d36e09d0a9bdff7d6807c3">_notification_property</a> enumeration. You can set multiple properties with the &quot;|&quot; pipe operation.</p>
 <pre class="prettyprint">
 ret = notification_set_property(notification, NOTIFICATION_PROP_DISABLE_APP_LAUNCH);
 if (ret != NOTIFICATION_ERROR_NONE)
@@ -228,10 +228,10 @@ if (ret != NOTIFICATION_ERROR_NONE)
 <p>To add a button on the active notification, use the <span style="font-family: Courier New,Courier,monospace">notification_add_button()</span> and <span style="font-family: Courier New,Courier,monospace">notification_set_event_handler()</span> functions:</p>
 <ul>
 <li>
-<p>The <span style="font-family: Courier New,Courier,monospace">notification_add_button()</span> adds the button. The second parameter defines the button index, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#ga2b8eaa47c666ec055def59c32eab419b"><span style="font-family: Courier New,Courier,monospace">_notification_button_index</span></a> enumeration.</p>
+<p>The <span style="font-family: Courier New,Courier,monospace">notification_add_button()</span> adds the button. The second parameter defines the button index, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#ga2b8eaa47c666ec055def59c32eab419b">_notification_button_index</a> enumeration.</p>
 </li>
 <li>
-<p>The <span style="font-family: Courier New,Courier,monospace">notification_set_event_handler()</span> function defines the application control that launches the application at the button click. The third parameter defines the app control handle, whose possible values are listed in the <a href ="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#ga38d5cdc16c56dbe88d821995f82b0799"><span style="font-family: Courier New,Courier,monospace">_notification_event_type</span></a> enumeration.</p>
+<p>The <span style="font-family: Courier New,Courier,monospace">notification_set_event_handler()</span> function defines the application control that launches the application at the button click. The third parameter defines the app control handle, whose possible values are listed in the <a href="../../../../org.tizen.native.mobile.apireference/group__NOTIFICATION__MODULE.html#ga38d5cdc16c56dbe88d821995f82b0799">_notification_event_type</a> enumeration.</p>
 
 <pre class="prettyprint">
 noti_err = notification_add_button(noti, NOTIFICATION_BUTTON_1);
index 9f18f44..3370fd1 100644 (file)
@@ -57,7 +57,7 @@
 
 <ol>
 
-<li><p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__SHORTCUT__MODULE.html">Shortcut API</a>, include the <span style="font-family: Courier New,Courier,monospace">&lt;shortcut_manager.h&gt;</span> header file in your application:</p>
+<li><p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__SHORTCUT__MODULE.html">Shortcut</a> API, include the <span style="font-family: Courier New,Courier,monospace">&lt;shortcut_manager.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;shortcut_manager.h&gt;
 </pre>
index 87af588..5ba1476 100644 (file)
@@ -371,7 +371,7 @@ i18n_udate udate;
 i18n_ucalendar_set_milliseconds(ucalendar, udate);
 </pre>
 <p>To add a specified period to the Ucalendar, use the <span style="font-family: Courier New,Courier,monospace">i18n_ucalendar_add()</span> function.</p>
-<p>Specify the date field to modify (such as year, week, or day) using the <span style="font-family: Courier New,Courier,monospace">i18n_ucalendar_date_fields_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__UCALENDAR__MODULE.html#gaee345f9992035a07732d16d69c41c192">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__UCALENDAR__MODULE.html#gaee345f9992035a07732d16d69c41c192">wearable</a> applications) as the second parameter, and the amount to modify as the third parameter (use a negative value to substract from the existing value).</p>
+<p>Specify the date field to modify (such as year, week, or day) using the <span style="font-family: Courier New,Courier,monospace">i18n_ucalendar_date_fields_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__UCALENDAR__MODULE.html#gaee345f9992035a07732d16d69c41c192">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__UCALENDAR__MODULE.html#gaee345f9992035a07732d16d69c41c192">wearable</a> applications) as the second parameter, and the amount to modify as the third parameter (use a negative value to subtract from the existing value).</p>
 <pre class="prettyprint">i18n_ucalendar_add(ucalendar, I18N_UCALENDAR_HOUR, 3);</pre></li>
 
 <li>To get a date from the Ucalendar, you can use various functions:
@@ -543,7 +543,7 @@ i18n_ulocale_set_default(I18N_ULOCALE_KOREA);</pre></li>
 </pre></li>
 <li>To create a number format, use the <span style="font-family: Courier New,Courier,monospace">i18n_unumber_create()</span> function.
 <p>Define the style as the first parameter using the <span style="font-family: Courier New,Courier,monospace">i18n_unumber_format_style_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__BASE__UTILS__I18N__UNUMBER__MODULE.html#ga4edc8cb72e7f46e05d8cdfe24cf386f1">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__BASE__UTILS__I18N__UNUMBER__MODULE.html#ga4edc8cb72e7f46e05d8cdfe24cf386f1">wearable</a> applications).</p>
-<p>The fourth parameter sets the locale (<span style="font-family: Courier New,Courier,monospace">NULL</span> for default). Some string shortscuts for specific locales are defined in the <span style="font-family: Courier New,Courier,monospace">utils_i18n_types.h</span> header file. For example, <span style="font-family: Courier New,Courier,monospace">I18N_ULOCALE_US</span> is equal to &quot;en_US&quot;.</p>
+<p>The fourth parameter sets the locale (<span style="font-family: Courier New,Courier,monospace">NULL</span> for default). Some string shortcuts for specific locales are defined in the <span style="font-family: Courier New,Courier,monospace">utils_i18n_types.h</span> header file. For example, <span style="font-family: Courier New,Courier,monospace">I18N_ULOCALE_US</span> is equal to &quot;en_US&quot;.</p>
 <pre class="prettyprint">
 i18n_unumber_format_h num_format;
 i18n_unumber_format_style_e format_style = I18N_UNUMBER_CURRENCY;
index c1991a2..bc49b94 100644 (file)
@@ -418,7 +418,7 @@ win_resize_cb(void *data, Evas *e , Evas_Object *obj , void *event_info)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cairo_gl_device_set_thread_aware(ad-&gt;cairo_device, 0);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;surface = (cairo_surface_t *)cairo_gl_surface_create_for_evas_gl(ad-&gt;cairo_device, ad-&gt;evas_gl_surface, 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;evas_gl_config, ad-&gt;width, ad-&gt;height);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;cairo = cairo_create (ad-&gt;surface);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;cairo = cairo_create(ad-&gt;surface);
 &nbsp;&nbsp;&nbsp;}
 }
 </pre>
index 28fbec3..5d46f6d 100644 (file)
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">         
-                <li><a href="#evasgl">EvasGL Tutorial</a>
+                <li>EvasGL
                         <ul class="toc">
-                               <li><a href="#declaration">Declaration of EvasGL Objects</a></li>
-                               <li><a href="#creating">Creating the Elm Window and EvasGL</a></li>
-                               <li><a href="#getapi">Getting OpenGL ES APIs</a></li>
-                               <li><a href="#callbacks">Callbacks</a></li>
-                               <li><a href="#nativeset">Setting a Surface into the Image Object</a></li>
+                               <li><a href="#evasgl">Initializing EvasGL</a></li>
+                           <li><a href="#declaration">Declaring EvasGL Objects</a></li>
+                           <li><a href="#creating">Creating the Elm Window and EvasGL</a></li>
+                           <li><a href="#getapi">Getting OpenGL ES APIs</a></li>
+                           <li><a href="#callbacks">Using Callbacks</a></li>
+                           <li><a href="#nativeset">Setting a Surface into the Image Object</a></li>
                        </ul>
                </li>
                 <li><a href="#ext">Using OpenGL ES Extensions</a></li>
 <h1>OpenGL ES: Using OpenGL ES Graphics</h1>
 
 
-       <p>This tutorial demonstrates how you can handle OpenGL ES graphics with the GLView component EvasGL. Before reading this page, it is recommended to read <a href="../../../../org.tizen.guides/html/native/graphics/opengles_n.htm">OpenGL ES Guide</a> page first.</p>
+       <p>This tutorial demonstrates how you can handle OpenGL ES graphics with the GLView component EvasGL. Before using this tutorial, make sure you are familiar with the basics introduced in the <a href="../../../../org.tizen.guides/html/native/graphics/opengles_n.htm">OpenGL ES</a> guide.</p>
 
 <h2>Warm-up</h2>
 <p>Become familiar with the OpenGL ES API basics by learning about:</p>
 <ul>    
-         <li><a href="#evasgl">EvasGL Tutorial</a>
+         <li>EvasGL 
          <ul>
-               <li><a href="#declaration">Declaration of EvasGL Objects</a>
-               <p>Declare the application data</p></li>
-               <li><a href="#creating">Creating the Elm Window and EvasGL</a>
-               <p>Create a window and a EvasGL</p></li>
-               <li><a href="#getapi">Getting OpenGL ES APIs</a>
-               <p>Get OpenGL ES function pointers</p></li>
-               <li><a href="#callbacks">Callbacks</a>
-               <p>Set callbacks</p></li>
-               <li><a href="#nativeset">Setting a Surface into the Image Object</a>
-               <p>Set a native surface into the image object</p></li>
-         </ul>   </li>
+          <li><a href="#evasgl">Initializing EvasGL</a>
+          <p>Initialize EvasGL for use.</p></li>
+          <li><a href="#declaration">Declaring EvasGL Objects</a>
+          <p>Declare the application data.</p></li>
+          <li><a href="#creating">Creating the Elm Window and EvasGL</a>
+          <p>Create a window and EvasGL.</p></li>
+          <li><a href="#getapi">Getting OpenGL ES APIs</a>
+          <p>Get OpenGL ES function pointers.</p></li>
+          <li><a href="#callbacks">Using Callbacks</a>
+          <p>Set the callbacks.</p></li>
+          <li><a href="#nativeset">Setting a Surface into the Image Object</a>
+          <p>Set a native surface into the image object.</p></li> 
+         </ul>   
+         </li>
          <li><a href="#ext">Using OpenGL ES Extensions</a>
          <p>Check whether an extension is available, and call it.</p></li>
          <li><a href="#evas_ext">Using EvasGL Extensions</a>
          <p>Use client-side rotation when the application is using Direct Rendering.</p></li>
 </ul>
 
-<h2 id="evasgl" name="evasgl">EvasGL Tutorial</h2>
+<h2 id="evasgl" name="evasgl">Initializing EvasGL</h2>
 
-<p>This tutorial assumes that the application uses EvasGL directly instead of using the GLView. (If the application uses a GLView, EvasGL is created internally.)</p>
+<p>The EvasGL use cases assume that the application uses EvasGL directly instead of using the GLView. (If the application uses a GLView, EvasGL is created internally.)</p>
 
-<p>First, you can declare the global variable using the <span style="font-family: Courier New,Courier,monospace">EVAS_GL_GLOBAL_GLES2_DEFINE()</span> macro. Then, create an EvasGL and use <span style="font-family: Courier New,Courier,monospace">EVAS_GL_GLOBAL_GLES2_USE(evasgl, evasgl context)</span>. This is similar to the GLView macro. Both macros help you to call GL functions directly.</p>
-
-<p>Now, you can call GL functions. For more detailed information, see the <span style="font-family: Courier New,Courier,monospace">Evas_GL_GLES2_Helpers.h</span> file.</p>
+<p>To be able to call GL functions directly, first declare the global variable using the <span style="font-family: Courier New,Courier,monospace">EVAS_GL_GLOBAL_GLES2_DEFINE()</span> macro. Then, create an EvasGL and use the <span style="font-family: Courier New,Courier,monospace">EVAS_GL_GLOBAL_GLES2_USE()</span> macro, which is similar to the GLView macro. For more detailed information, see the <span style="font-family: Courier New,Courier,monospace">Evas_GL_GLES2_Helpers.h</span> file.</p>
 
 <pre class="prettyprint">
 #include &lt;app.h&gt;
 #include &lt;Evas_GL_GLES2_Helpers.h&gt;
 
-// This code is to be placed at the beginning of any function using GLES 2.0 APIs
+// This code is placed at the beginning of any function using GLES 2.0 APIs
 // When using this macro, you can call all glFunctions without changing their code
 // For details, see Evas_GL_GLES2_Helpers.h
 EVAS_GL_GLOBAL_GLES2_DEFINE();
 </pre>
 
-<h3 id="declaration" name="declaration">Declaration of EvasGL Objects</h3>
+<h2 id="declaration" name="declaration">Declaring EvasGL Objects</h2>
 
-<p>This is how to define the application data structure to hold all the objects for your EvasGL application:</p>
+<p>To hold all the objects for your EvasGL application, define the application data structure:</p>
 
 <pre class="prettyprint">
 typedef struct appdata
 {
-&nbsp;&nbsp;&nbsp;Evas_Object *win;
-&nbsp;&nbsp;&nbsp;Evas_Object *img;
+&nbsp;&nbsp;&nbsp;Evas_Object *win; // Application window
+&nbsp;&nbsp;&nbsp;Evas_Object *img; // OpenGL ES canvas
 
-&nbsp;&nbsp;&nbsp;Evas_GL *evasgl;
-&nbsp;&nbsp;&nbsp;Evas_GL_Context *ctx;
-&nbsp;&nbsp;&nbsp;Evas_GL_Surface *sfc;
-&nbsp;&nbsp;&nbsp;Evas_GL_Config *cfg;
+&nbsp;&nbsp;&nbsp;Evas_GL *evasgl; // EvasGL object for rendering GL in Evas
+&nbsp;&nbsp;&nbsp;Evas_GL_Context *ctx; // EvasGL context object, a GL rendering context in Evas GL
+&nbsp;&nbsp;&nbsp;Evas_GL_Surface *sfc; // EvasGL surface object, a GL rendering target in Evas GL
+&nbsp;&nbsp;&nbsp;Evas_GL_Config *cfg; // EvasGL surface configuration object for surface creation
 &nbsp;&nbsp;&nbsp;Evas_Coord sfc_w;
 &nbsp;&nbsp;&nbsp;Evas_Coord sfc_h;
 
@@ -115,25 +117,16 @@ typedef struct appdata
 &nbsp;&nbsp;&nbsp;unsigned int vtx_shader;
 &nbsp;&nbsp;&nbsp;unsigned int fgmt_shader;
 &nbsp;&nbsp;&nbsp;unsigned int vbo;
-} appdata_s;</pre>
-
-<ul>
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_Object *win</span>: Application window.</li>
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_Object *img</span>: OpenGL ES canvas.</li>
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_GL *evasgl</span>: EvasGL Object for rendering gl in Evas.</li>
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_GL_Context *ctx</span>: EvasGL Context object, a GL rendering context in Evas GL.</li>
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_GL_Surface *sfc</span>: EvasGL Surface object, a GL rendering target in Evas GL.</li>
-   <li><span style="font-family: Courier New,Courier,monospace">Evas_GL_Config *cfg</span>: EvasGL Surface configuration object for surface creation.</li>
-</ul>
-
-<h3 id="creating" name="creating">Creating the Elm Window and EvasGL</h3>
+} appdata_s;
+</pre>
+<h2 id="creating" name="creating">Creating the Elm Window and EvasGL</h2>
 
 <p>To create the Elm window and EvasGL:</p>
 <ol>
-    <li>Creating a window and a EvasGL.
-        <p>For developing an application with Elementary, you create a window by using the Elementary utility function, <span style="font-family: Courier New,Courier,monospace">elm_win_util_standard_add().</span> To develop a GL application, you have to call <span style="font-family: Courier New,Courier,monospace">elm_config_accel_preference_set()</span> before creating the window. It makes an application use the GPU. See the following code.
-        </p>
-
+    <li>Create a window and EvasGL.
+       <p>For developing an application with Elementary, you create a window by using the Elementary utility function, <span style="font-family: Courier New,Courier,monospace">elm_win_util_standard_add()</span>. To develop a GL application and make the application use the GPU, you must call the <span style="font-family: Courier New,Courier,monospace">elm_config_accel_preference_set()</span> function before creating the window.</p>
 <pre class="prettyprint">
 Evas_Object *win;
 
@@ -146,25 +139,28 @@ elm_config_accel_preference_set(&quot;opengl&quot;);
 ad-&gt;win = elm_win_util_standard_add(&quot;Evas_GL Example&quot;, &quot;Evas_GL Example&quot;);
 </pre>
 
-<p>You can create your EvasGL handler using the <span style="font-family: Courier New,Courier,monospace">evas_gl_new(Evas * e)</span> function. This initializer takes as a parameter the Evas canvas on which OpenGL ES is to be used. When developing an application with Elementary, use the canvas of your window:</p>
-<pre class="prettyprint">ad-&gt;evasgl = evas_gl_new(evas_object_evas_get(ad-&gt;win));</pre>
+<p>You can create the EvasGL handler using the <span style="font-family: Courier New,Courier,monospace">evas_gl_new()</span> function. This initializer takes the Evas canvas on which OpenGL ES is to be used as a parameter. When developing an application with Elementary, use the canvas of your window:</p>
+<pre class="prettyprint">
+ad-&gt;evasgl = evas_gl_new(evas_object_evas_get(ad-&gt;win));
+</pre>
 
-<p>To free the memory allocated to this handler, use the <span style="font-family: Courier New,Courier,monospace">evas_gl_free(Evas_GL *evas_gl)</span> function.</p>
+<p>To free the memory allocated to the handler, use the <span style="font-family: Courier New,Courier,monospace">evas_gl_free()</span> function.</p>
 </li>
+
 <li>Create a surface.
 
-<p>You must allocate a new config object to fill the surface out using the <span style="font-family: Courier New,Courier,monospace">evas_gl_config_new()</span> function. As long as Evas creates a config object for the user, it takes care of the backward compatibility issue. Once you have your config object, you can specify the surface settings:</p>
+<p>You must allocate a new config object to fill out the surface using the <span style="font-family: Courier New,Courier,monospace">evas_gl_config_new()</span> function. As long as Evas creates the config object, it takes care of any backward compatibility issues. Once you have your config object, you can specify the surface settings:</p>
 
 <pre class="prettyprint">
 appdata_s *ad;
 ad-&gt;cfg = evas_gl_config_new();
-ad-&gt;cfg-&gt;color_format = EVAS_GL_RGBA_8888; // Surface Color Format
-ad-&gt;cfg-&gt;depth_bits = EVAS_GL_DEPTH_BIT_24; // Surface Depth Format
-ad-&gt;cfg-&gt;stencil_bits = EVAS_GL_STENCIL_NONE; // Surface Stencil Format
-ad-&gt;cfg-&gt;options_bits = EVAS_GL_OPTIONS_NONE; // Configuration options (here, no extra options)
+ad-&gt;cfg-&gt;color_format = EVAS_GL_RGBA_8888; // Surface color format
+ad-&gt;cfg-&gt;depth_bits = EVAS_GL_DEPTH_BIT_24; // Surface depth format
+ad-&gt;cfg-&gt;stencil_bits = EVAS_GL_STENCIL_NONE; // Surface stencil format
+ad-&gt;cfg-&gt;options_bits = EVAS_GL_OPTIONS_NONE; // Configuration options (here, no extra options are used)
 </pre>
 
-<p>Once we have configured the surface behavior, we must initialize the surface using <span style="font-family: Courier New,Courier,monospace">evas_gl_surface_create(Evas_GL* evas_gl, Evas_GL_Config * cfg, int w, int h)</span>. This function takes the given Evas_GL object as the first parameter and the pixel format, and configuration of the rendering surface as the second parameter. The last two parameters are the width and height of the surface, which we recover directly from the window.</p>
+<p>Once you have configured the surface behavior, you must initialize the surface using the <span style="font-family: Courier New,Courier,monospace">evas_gl_surface_create()</span> function. This function takes the given Evas_GL object as the first parameter and the pixel format, and the configuration of the rendering surface as the second parameter. The last 2 parameters are the width and height of the surface, which you can recover directly from the window.</p>
 
 <pre class="prettyprint">
 Evas_Coord w, h;
@@ -172,11 +168,11 @@ evas_object_geometry_get(ad-&gt;win, NULL, NULL, &amp;w, &amp;h);
 ad-&gt;sfc = evas_gl_surface_create(ad-&gt;evasgl, ad-&gt;cfg, w, h);
 </pre>
 
-<p>To manually delete a GL surface, use the <span style="font-family: Courier New,Courier,monospace">evas_gl_surface_destroy(Evas_GL *evas_gl, Evas_GL_Surface *surf)</span> function.</p></li>
+<p>To manually delete a GL surface, use the <span style="font-family: Courier New,Courier,monospace">evas_gl_surface_destroy()</span> function.</p></li>
 
 <li>Create a context.
 
-<p>Create a context for Evas_GL using the <span style="font-family: Courier New,Courier,monospace">evas_gl_context_create(Evas_GL * evas_gl, Evas_GL_Context * share_ctx)</span> function. You can merge the context with a higher context definition you must pass as a second parameter.</p>
+<p>Create a context for Evas_GL using the <span style="font-family: Courier New,Courier,monospace">evas_gl_context_create()</span> function. You can merge the context with a higher context definition that you must pass as a second parameter.</p>
 
 <pre class="prettyprint">
 ad-&gt;ctx = evas_gl_context_create(ad-&gt;evasgl, NULL);
@@ -188,41 +184,48 @@ ad-&gt;ctx = evas_gl_context_create(ad-&gt;evasgl, NULL);
 EVAS_GL_GLOBAL_GLES2_USE(ad-&gt;evasgl, ad-&gt;ctx);
 </pre>
 
-<p>To delete the context later, use the <span style="font-family: Courier New,Courier,monospace">evas_gl_context_destroy(Evas_GL *evas_gl, Evas_GL_Context *ctx)</span> function. To delete the entire configuration object, use the <span style="font-family: Courier New,Courier,monospace">evas_gl_config_free(Evas_GL_Config *cfg)</span> function instead.</p>
-   </li>
+<p>To delete the context later, use the <span style="font-family: Courier New,Courier,monospace">evas_gl_context_destroy()</span> function. To delete the entire configuration object, use the <span style="font-family: Courier New,Courier,monospace">evas_gl_config_free()</span> function instead.</p>
+</li>
 </ol>
 
-<h3 id="getapi" name="getapi">Getting OpenGL ES APIs</h3>
+<h2 id="getapi" name="getapi">Getting OpenGL ES APIs</h2>
 
-<p>If you want to get the API of OpenGL ES, you can get the API for rendering OpenGL ES with the <span style="font-family: Courier New,Courier,monospace">evas_gl_api_get(Evas_GL *evas_gl_)</span>function. This function returns a structure that contains all the OpenGL ES functions you can use to render in Evas. These functions consist of all the standard OpenGL ES 2.0 functions and any extra ones Evas has decided to provide in addition. If you have your code ported to OpenGL ES 2.0, it is easy to render to Evas.</p>
+<p>If you want to get the OpenGL ES API, you can get the API for rendering OpenGL ES with the <span style="font-family: Courier New,Courier,monospace">evas_gl_api_get()</span> function. This function returns a structure that contains all the OpenGL ES functions you can use to render in Evas. These functions consist of all the standard OpenGL ES 2.0 functions and any extra ones Evas has decided to provide in addition. If you have your code ported to OpenGL ES 2.0, it is easy to render to Evas.</p>
 
-<p>If you already use a global macro, such as <span style="font-family: Courier New,Courier,monospace">EVAS_GL_GLOBAL_GLES2_XXX</span>, you need not get the APIs.</p>
+<p>If you already use a global macro, such as <span style="font-family: Courier New,Courier,monospace">EVAS_GL_GLOBAL_GLES2_XXX()</span>, you need not get the APIs.</p>
 
 <pre class="prettyprint">
 Evas_GL_API *glapi;
-glapi = evas_gl_api_get(ad-&gt;evasgl);</pre>
-
+glapi = evas_gl_api_get(ad-&gt;evasgl);
+</pre>
 
-<h3 id="callbacks" name="callbacks">Callbacks</h3>
+<h2 id="callbacks" name="callbacks">Using Callbacks</h2>
 
-<p>Now that we have configured the EvasGL environment, we declare a UI component in which all the OpenGL ES transformation takes place. In the example below, we selected the image component because it provides callbacks that allow us to play with the mouse events and coordinates, and we set up an image object that inherits the size of the parent window.</p>
+<p>When you have configured the EvasGL environment, you can declare a UI component in which all the OpenGL ES transformation takes place. In the following example, the image component is used, because it provides callbacks that allow you to play with mouse events and coordinates. The image component is set to inherit the size of the parent window.</p>
 
+<ol>
+<li>Add the image component:
 <pre class="prettyprint">
-ad-&gt;img = evas_object_image_filled_add(evas_object_evas_get(ad-&gt;win));</pre>
+ad-&gt;img = evas_object_image_filled_add(evas_object_evas_get(ad-&gt;win));
+</pre>
+</li>
 
-<p>We define the &quot;OpenGL ES main loop&quot; function that is called every time the program attempts to have pixels from the image. We put all the OpenGL ES statements in charge of rendering the scene in this callback.</p>
+<li>
+<p>Define the &quot;OpenGL ES main loop&quot; function that is called every time the program attempts to get pixels from the image. Put all the OpenGL ES statements in charge of rendering the scene in this callback.</p>
 
 <pre class="prettyprint">
-evas_object_image_pixels_get_callback_set(ad-&gt;img, img_pixels_get_cb, ad);</pre>
+evas_object_image_pixels_get_callback_set(ad-&gt;img, img_pixels_get_cb, ad);
+</pre>
+</li>
 
-<p>To define a function that takes care of the drawing using EvasGL (called the OpenGL ES main loop), use:</p>
+<li>
+<p>Define a function that takes care of the drawing using EvasGL (called the OpenGL ES main loop):</p>
 
 <pre class="prettyprint">
 static void
 img_pixels_get_cb(void *data, Evas_Object *obj)
 {
 &nbsp;&nbsp;&nbsp;appdata_s *ad = data;
-
 &nbsp;&nbsp;&nbsp;// Rendering process
 &nbsp;&nbsp;&nbsp;evas_gl_make_current(ad-&gt;evasgl, ad-&gt;sfc, ad-&gt;ctx);
 &nbsp;&nbsp;&nbsp;// Because the surface size can be changed, set the viewport in this callback
@@ -230,15 +233,17 @@ img_pixels_get_cb(void *data, Evas_Object *obj)
 &nbsp;&nbsp;&nbsp;// Paint it blue
 &nbsp;&nbsp;&nbsp;glClearColor(0.2, 0.2, 0.6, 1.0);
 &nbsp;&nbsp;&nbsp;glClear(GL_COLOR_BUFFER_BIT);
-&nbsp;&nbsp;&nbsp;// The usual OpenGL ES draw commands come here
+&nbsp;&nbsp;&nbsp;// Usual OpenGL ES draw commands come here
 &nbsp;&nbsp;&nbsp;// draw_scene();
 }</pre>
 
-<p>At every tick, we must set the given context as a current context for the given surface using <span style="font-family: Courier New,Courier,monospace">evas_gl_make_current(Evas_GL *evas_gl, Evas_GL_Surface *surf, Evas_GL_Context *ctx)</span>.</p>
+<p>At every tick, set the given context as a current context for the given surface using the <span style="font-family: Courier New,Courier,monospace">evas_gl_make_current()</span> function.</p>
+</li>
 
-<p>You can use the <span style="font-family: Courier New,Courier,monospace">Ecore_Animator</span> to define the OpenGL ES main loop. To do so, create a callback that is called on every animation tick. This animation callback is used only to mark the image as &quot;dirty&quot;, meaning that it needs an update next time Evas renders. It calls the pixel get callback that redraws the scene.</p>
+<li>You can use the <span style="font-family: Courier New,Courier,monospace">Ecore_Animator</span> to define the OpenGL ES main loop.
+<p>To use the <span style="font-family: Courier New,Courier,monospace">Ecore_Animator</span>, create a callback that is called on every animation tick. This animation callback is used only to mark the image as &quot;dirty&quot;, meaning that it needs an update next time Evas renders. It calls the pixel get callback that redraws the scene.</p>
 
-<p>The animator callback function is also triggered when the display is off. Use the <span style="font-family: Courier New,Courier,monospace">ecore_animator_freeze()</span> and <span style="font-family: Courier New,Courier,monospace">ecore_animator_thaw()</span> functions in the <span style="font-family: Courier New,Courier,monospace">app_pause_cb</span> and <span style="font-family: Courier New,Courier,monospace">app_resume_cb</span> callbacks for power saving.</p>
+<p>The animator callback function is also triggered when the display is off. Use the <span style="font-family: Courier New,Courier,monospace">ecore_animator_freeze()</span> and <span style="font-family: Courier New,Courier,monospace">ecore_animator_thaw()</span> functions in the <span style="font-family: Courier New,Courier,monospace">app_pause_cb()</span> and <span style="font-family: Courier New,Courier,monospace">app_resume_cb()</span> callbacks for power saving.</p>
 
 <pre class="prettyprint">
 static Eina_Bool
@@ -250,19 +255,22 @@ animate_cb(void *data)
 &nbsp;&nbsp;&nbsp;return ECORE_CALLBACK_RENEW;
 }
 
-ecore_animator_add(animate_cb, ad-&gt;img);</pre>
+ecore_animator_add(animate_cb, ad-&gt;img);
+</pre></li>
 
-<p>You can define several other callbacks that have an impact on the drawing depending on the mouse, resize, and deletion events.</p>
+<li><p>Define other callbacks, as needed. These callbacks have an impact on the drawing depending on the mouse, resize, and deletion events:</p>
 
 <pre class="prettyprint">
 evas_object_event_callback_add(ad-&gt;img, EVAS_CALLBACK_DEL, img_del_cb, ad);
 evas_object_event_callback_add(ad-&gt;img, EVAS_CALLBACK_MOUSE_DOWN, mouse_down_cb, ad);
 evas_object_event_callback_add(ad-&gt;img, EVAS_CALLBACK_MOUSE_UP, mouse_up_cb, ad);
 evas_object_event_callback_add(ad-&gt;img, EVAS_CALLBACK_MOUSE_MOVE, mouse_move_cb, ad);
-evas_object_event_callback_add(ad-&gt;win, EVAS_CALLBACK_RESIZE, win_resize_cb, ad);</pre>
-
-<p>Because the window size can be changed, you must set a resize callback for the window. In addition, you must recreate an <span style="font-family: Courier New,Courier,monospace">Evas_GL_Surface</span> in the resize callback and reset the viewport size with the new window size:</p>
+evas_object_event_callback_add(ad-&gt;win, EVAS_CALLBACK_RESIZE, win_resize_cb, ad);
+</pre></li>
 
+<li>
+<p>Because the window size can be changed, set a resize callback for the window. In the callback, you must recreate an <span style="font-family: Courier New,Courier,monospace">Evas_GL_Surface</span> and reset the viewport size with the new window size:</p>
 <pre class="prettyprint">
 static void
 win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
@@ -284,22 +292,24 @@ win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 &nbsp;&nbsp;&nbsp;if (!ad-&gt;sfc)
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Evas_Native_Surface ns;
-
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad-&gt;sfc = evas_gl_surface_create(ad-&gt;evasgl, ad-&gt;cfg, ad-&gt;sfc_w, ad-&gt;sfc_h);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_gl_native_surface_get(ad-&gt;evasgl, ad-&gt;sfc, &amp;ns);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_image_native_surface_set(ad-&gt;img, &amp;ns);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evas_object_image_pixels_dirty_set(ad-&gt;img, EINA_TRUE);
 &nbsp;&nbsp;&nbsp;}
-}</pre>
+}
+</pre></li>
+</ol>
 
-<h3 id="nativeset" name="nativeset">Setting a Surface into the Image Object</h3>
+<h2 id="nativeset" name="nativeset">Setting a Surface into the Image Object</h2>
 
-<p>We can also fill in the native Surface information from the given EvasGL surface. For example, to adapt the surface to the target image when the size of the canvas changes, use the following code.</p>
+<p>You can fill in the native surface information from the given EvasGL surface. For example, to adapt the surface to the target image when the size of the canvas changes:</p>  
 
 <pre class="prettyprint">
 Evas_Native_Surface ns;
 evas_gl_native_surface_get(ad-&gt;evasgl, ad-&gt;sfc, &amp;ns);
-evas_object_image_native_surface_set(ad-&gt;img, &amp;ns);</pre>
+evas_object_image_native_surface_set(ad-&gt;img, &amp;ns);
+</pre>
 
 <h2 id="ext" name="ext">Using OpenGL ES Extensions</h2>
 
index 7e725b0..28f0899 100644 (file)
@@ -66,7 +66,7 @@ uint32_t format_num;
 
 if (tbm_surface_query_formats(&amp;formats, &amp;format_num) != TBM_SURFACE_ERROR_NONE)
 {
-&nbsp;&nbsp;&nbsp;dlog_print (DLOG_ERROR, LOG_TAG, &quot;Failed to get formats supported by the system\n&quot;);
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;Failed to get formats supported by the system\n&quot;);
 }
 </pre>
 </li>
@@ -83,7 +83,7 @@ for (i = 0; i &lt; format_num; i++)
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;surface = tbm_surface_create(128, 128, TBM_FORMAT_ARGB8888);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (surface == NULL)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print (DLOG_ERROR, LOG_TAG, &quot;Failed to create tbm_surface\n&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;Failed to create tbm_surface\n&quot;);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
 &nbsp;&nbsp;&nbsp;}
 }
index 6a242b1..1471d05 100644 (file)
@@ -90,7 +90,8 @@ geofence_manager_add_place(manager, &quot;place_name&quot;, &amp;place_id);
 </table>
 </li>
 <li>Create the geofences:
-<ol type="a"><li>Geopoint geofence
+<ol type="a">
+<li>Geopoint geofence:
 <pre class="prettyprint">
 double latitude = 12.756738;
 double longitude = 77.386474;
@@ -98,14 +99,17 @@ int radius = 100;
 char* address = &quot;India&quot;; 
 geofence_h fence_h;
 geofence_create_geopoint(place_id, latitude, longitude, radius, address, &amp;fence_h);
-</pre></li>
-<li>Bluetooth geofence
+</pre>
+</li>
+<li>Bluetooth geofence:
 <pre class="prettyprint">
 char* bssid = &quot;82:45:67:7E:4A:3B&quot;;
 char* ssid = &quot;Cafeteria&quot;;
 geofence_h fence_h;
 geofence_create_bluetooth(place_id, bssid, ssid, &amp;fence_h);
-</pre></li></ol>
+</pre>
+</li>
+</ol>
 <p>Add the geofence to the manager:</p>
 <pre class="prettyprint">
 int geofence_id = -1;
@@ -208,7 +212,7 @@ geofence_state_changed(int geofence_id, geofence_state_e state, void *user_data)
 </li>
 <li><p>Receive the current state on request.</p>
        <p>You can get the current state of the user with respect to a fence, such as the in or out state and the duration of the current state.</p>
-<ul><li><p>To access the state or the duration, first create a status handle:</p>
+<ol type="a"><li><p>To access the state or the duration, first create a status handle:</p>
 <pre class="prettyprint">
 int geofence_id = 1;
 geofence_status_h status_h;
@@ -225,13 +229,14 @@ int duration;
 geofence_status_get_duration(status_h, &amp;duration);
 </pre>
 <p>The duration is provided in seconds.</p></li>
-<li><p>To destroy the status handle, call the <span style="font-family: Courier New,Courier,monospace;">geofence_status_destroy()</span> function:</p>
+<li><p>When no longer needed, destroy the status handle with the <span style="font-family: Courier New,Courier,monospace;">geofence_status_destroy()</span> function:</p>
 <pre class="prettyprint">
 geofence_status_destroy(status_h);
 </pre>
-<p>The status handle should be destroyed when it is not needed.</p></li></ul>
+<p>The status handle should be destroyed when it is not needed.</p></li></ol></li>
 </ol>
 
+
                        
                                <h2 id="info" name="info">Retrieving Geofence Information</h2>
                                  <p>To get information about the geofence:</p>
@@ -255,7 +260,7 @@ geofence_get_longitude(fence_h, &amp;longitude);
 geofence_get_radius(fence_h, &amp;radius);
 geofence_get_address(fence_h, &amp;address);
 
-//after use
+// Release the resource after use
 free(address);
 </pre></li>            
 <li>Retrieve the Wi-Fi or Bluetooth geofence information:
@@ -265,7 +270,7 @@ char *ssid;
 geofence_get_bssid(fence_h, &amp;bssid);
 geofence_get_ssid(fence_h, &amp;ssid);
 
-//after use
+// Release the resources after use
 free(bssid);
 free(ssid);
 </pre></li></ul>
index 36982a6..1c0702c 100644 (file)
@@ -30,9 +30,9 @@
                </ul>        
         <p class="toc-title">Related Info</p>
         <ul class="toc">
-            <li><a href="../../../../org.tizen.guides/html/native/location/location_n.htm">Location Guide</a></li>
-                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__LOCATION__FRAMEWORK.html">Location API for Mobile Native</a></li>
-                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__LOCATION__FRAMEWORK.html">Location API for Wearable Native</a></li>
+            <li><a href="../../../../org.tizen.guides/html/native/location/location_n.htm">Location Manager Guide</a></li>
+                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__LOCATION__MANAGER__MODULE.html">Location Manager API for Mobile Native</a></li>
+                       <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__LOCATION__MANAGER__MODULE.html">Location Manager API for Wearable Native</a></li>
         </ul>
     </div></div>
 </div>
@@ -76,7 +76,7 @@
 #include &lt;locations.h&gt;
 </pre></li>
 <li><p>Create a location manager handle using the <span style="font-family: Courier New,Courier,monospace">location_manager_create()</span> function before you use the location service.</p> 
-<p>In this example, the GPS is used as the source of the position data, so the first parameter is <span style="font-family: Courier New,Courier,monospace">LOCATIONS_METHOD_GPS</span>. You can use other values of the <span style="font-family: Courier New,Courier,monospace">location_method_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__LOCATION__MANAGER__MODULE.html#gaec8a29c8b701753a7c9d91f4f8acfac5">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__LOCATION__MANAGER__MODULE.html#gaec8a29c8b701753a7c9d91f4f8acfac5">wearable</a> applications), such as <span style="font-family: Courier New,Courier,monospace;">LOCATIONS_METHOD_HYBRID</span> or <span style="font-family: Courier New,Courier,monospace;">LOCATIONS_METHOD_WPS</span>. <span style="font-family: Courier New,Courier,monospace;">LOCATIONS_METHOD_HYBRID</span> is use both <span style="font-family: Courier New,Courier,monospace;">LOCATIONS_METHOD_GPS</span> and <span style="font-family: Courier New,Courier,monospace;">LOCATIONS_METHOD_WPS</span>, but the latter is less accurate.</p>
+<p>In this example, the GPS is used as the source of the position data, so the first parameter is <span style="font-family: Courier New,Courier,monospace">LOCATIONS_METHOD_GPS</span>. You can use other values of the <span style="font-family: Courier New,Courier,monospace">location_method_e</span> enumeration (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__LOCATION__MANAGER__MODULE.html#gaec8a29c8b701753a7c9d91f4f8acfac5">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__LOCATION__MANAGER__MODULE.html#gaec8a29c8b701753a7c9d91f4f8acfac5">wearable</a> applications), such as <span style="font-family: Courier New,Courier,monospace;">LOCATIONS_METHOD_HYBRID</span> or <span style="font-family: Courier New,Courier,monospace;">LOCATIONS_METHOD_WPS</span>. <span style="font-family: Courier New,Courier,monospace;">LOCATIONS_METHOD_HYBRID</span> uses both <span style="font-family: Courier New,Courier,monospace;">LOCATIONS_METHOD_GPS</span> and <span style="font-family: Courier New,Courier,monospace;">LOCATIONS_METHOD_WPS</span>, but the latter is less accurate.</p>
 <pre class="prettyprint">
 location_manager_h manager;
 location_manager_create(LOCATIONS_METHOD_GPS, &amp;manager);
@@ -406,4 +406,4 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga
 </script>
 
 </body>
-</html>
+</html>
\ No newline at end of file
index ae6bf1b..41c4f03 100644 (file)
 
 <p>The location tutorials demonstrate how to use the following features in creating Tizen native applications:</p>
        <ul>
-        <li><a href="location_tutorial_n.htm">Location Manager: Using Location Information and Service</a>
-       <p>Demonstrates how you can retrieve the location of the device.</p></li>
+        <li><a href="location_tutorial_n.htm">Location Manager: Using Location Information and Service</a> 
+               <p>Demonstrates how you can retrieve the location of the device.</p></li>       
        </ul>
 <p>The following tutorials apply in <strong>mobile applications only</strong>:</p>
        <ul>
-        <li><a href="geofence_tutorial_n.htm">Geofence Manager: Creating and Using Geofences</a>
-       <p>Demonstrates how you can create and use geofences.</p></li>
-
-       <li><a href="maps_tutorial_n.htm">Maps Service: Using the Map Service</a>
-       <p>Demonstrates how you can use the map service to query geocodes and routes, and search for places.</p></li>
+        <li><a href="geofence_tutorial_n.htm">Geofence: Creating and Using Geofences</a> 
+               <p>Demonstrates how you can create and use geofences.</p></li>
+               <li><a href="maps_tutorial_n.htm">Maps Service: Using the Map Service</a> 
+        <p>Demonstrates how you can use the map service to query geocodes and routes, and search for places.</p></li>                  
        </ul>
 
+                       
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../scripts/showhide.js"></script>
 
@@ -68,4 +68,4 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga
 </script>
 
 </body>
-</html>
+</html>
\ No newline at end of file
index 77384ad..9531be4 100644 (file)
@@ -334,7 +334,7 @@ _result_cb(push_service_result_e result, const char *msg, void *user_data)
 
 <p>In both cases, the <span style="font-family: Courier New,Courier,monospace;">_state_cb()</span> callback function is called with the <span style="font-family: Courier New,Courier,monospace;">PUSH_SERVICE_STATE_REGISTERED</span> state. The application calls the <span style="font-family: Courier New,Courier,monospace;">_on_state_registered()</span> function immediately, <a href="#state">as shown in the state transitions</a>. When defining the actions inside the function, keep the following points in mind:</p>
 <ul>
-<li>If the application has already been registered, request the push service any unread notifications that have arrived before the application is launched.
+<li>If the application has already been registered, request the push service for any unread notifications that have arrived before the application is launched.
 <p>Request the unread notifications asynchronously. If there is such a notification, it can be received through the <span style="font-family: Courier New,Courier,monospace;">_noti_cb()</span> function after the <span style="font-family: Courier New,Courier,monospace;">_on_state_registered()</span> function returns. Once the request for unread notifications is successfully delivered, <span style="font-family: Courier New,Courier,monospace;">PUSH_SERVICE_ERROR_NONE</span> is returned.</p></li>
 <li>If the application is newly registered, send the registration ID issued by the push server to your application server.
 <p>Retrieve the registration ID from the <span style="font-family: Courier New,Courier,monospace;">push_conn</span> connection handle. If the ID is new or updated, you need to send it to your application server. This ID is used as a destination address to the application in a particular device. If the application has already sent the ID, you can skip this step. This logic is implemented in the <span style="font-family: Courier New,Courier,monospace;">_send_reg_id_if_necessary()</span> function.</p></li>
@@ -554,8 +554,8 @@ push_service_deregister(push_conn, _dereg_result_cb, NULL);
 <p>The message field takes effect only when the application is not running (more precisely, when the application is not connected to the push service.) If a notification with the above message field arrives at the device where the application is running, the push service delivers the notification directly to the application, neither showing the &quot;Hi&quot; message in the quick panel nor increasing the badge count.</p>
 </li>
 
-<li>Rest APIs for sending push notifications.
-<ol>
+<li>Use the Rest APIs for sending push notifications.
+<ul>
 <li>Single request
 
 <p>With the created message field, you can construct a notification using a JSON query and send it to the RQM server using the POST method. The following list contains the details:</p>
@@ -563,8 +563,8 @@ push_service_deregister(push_conn, _dereg_result_cb, NULL);
 <li>URI: URI of the RQM server chosen based on the first 2 digits of the registration ID</li>
 <li>Method: POST</li>
 <li>Data: JSON </li>
-<li>Description: Request a notification push to a push service</li>
-<li>Note: Total request message body must be less than the system default value, 200 kb. If not, &quot;3034 – error of too long chuned message data&quot; is returned. System default value can be changed as needed.</li>
+<li>Description: Request a notification push to the push service</li>
+<li>Note: The total request message body must be less than the system default value, 200 kb. If not, &quot;3034 – error of too long chuned message data&quot; is returned. The system default value can be changed as needed.</li>
 <li>Header
 
 <p>There are 2 required fields: <span style="font-family: Courier New,Courier,monospace;">appID</span> and <span style="font-family: Courier New,Courier,monospace;">appSecret</span>.</p>
@@ -583,20 +583,23 @@ push_service_deregister(push_conn, _dereg_result_cb, NULL);
 </tr>
 <tr>
  <td><span style="font-family: Courier New,Courier,monospace;">encoding</span></td>
- <td>Encoding represents how the <span style="font-family: Courier New,Courier,monospace;">regId</span> is encoded. For most cases, the push server issues <span style="font-family: Courier New,Courier,monospace;">regId</span> as hex string by default but if 3rd party providers state they use base64 encoding for <span style="font-family: Courier New,Courier,monospace;">regId</span> at application registration time, <span style="font-family: Courier New,Courier,monospace;">regId</span> will be base64 encoded. If <span style="font-family: Courier New,Courier,monospace;">regId</span> is base64 encoded, fill this field with value of “base64”. Otherwise, leave this field blank then the push server will handle <span style="font-family: Courier New,Courier,monospace;">regId</span> as hex string.</td>
+ <td>Encoding defines how the <span style="font-family: Courier New,Courier,monospace;">regId</span> is encoded.
+<p>For most cases, the push server issues the <span style="font-family: Courier New,Courier,monospace;">regId</span> as a hex string by default, but if a 3<sup>rd</sup> party providers state that they use the base64 encoding for the <span style="font-family: Courier New,Courier,monospace;">regId</span> at the application registration time, the <span style="font-family: Courier New,Courier,monospace;">regId</span> is base64-encoded.</p>
+<p>If the <span style="font-family: Courier New,Courier,monospace;">regId</span> is base64-encoded, use the <span style="font-family: Courier New,Courier,monospace;">&quot;base64&quot;</span> value for this field. Otherwise, leave this field blank to allow the push server to handle the <span style="font-family: Courier New,Courier,monospace;">regId</span> as a hex string.</p></td>
  <td><ul><li>Optional</li>
  <li>Type: string</li>
  <li>Default: null</li></ul></td>
 </tr>
+
 <tr>
  <td><span style="font-family: Courier New,Courier,monospace;">regID</span></td>
- <td>Distinguish a recipient from other recipients by assigning a unique registration ID to each recipient. <p>The registration ID is assigned when an application is installed in a device and marked to use an application service.</p>
+ <td>Distinguish a recipient from other recipients by assigning a unique registration ID to each recipient. <p>The registration ID is assigned when the application is installed in a device and marked to use an application service.</p>
 <p>The current registration ID passing policy is as follows (it can change in the future):</p>
 <ol type="a">
 <li>The preloaded push service connects to the push server and registers the application.</li>
 <li>The push server returns the registration ID to the push service.</li>
 <li>The push service passes the ID to the application.</li>
-<li>The push server passes the registration ID to an application server.
+<li>The push server passes the registration ID to an application server. 
 <p>In other applications, the application passes the registration ID to the application server.</p>
 </li>
 </ol></td>
@@ -621,7 +624,7 @@ push_service_deregister(push_conn, _dereg_result_cb, NULL);
 <tr>
  <td><span style="font-family: Courier New,Courier,monospace;">message</span></td>
  <td>The message the sender wants to deliver. It can be a multibyte character.
- <p>The message goes from an application server through the push server and the push service to the application, which can handle the message.</p>
+ <p>The message goes from an application server through the push server and push service to the application, which can handle the message.</p>
  <p>Maximum message length must be less than 2 kb. Make sure that if there is no message and <span style="font-family: Courier New,Courier,monospace;">appData</span>, the push server rejects the message and returns an error.</p></td>
  <td>
 <ul><li>Conditionally mandatory
@@ -632,7 +635,7 @@ push_service_deregister(push_conn, _dereg_result_cb, NULL);
 </tr>
 <tr>
  <td><span style="font-family: Courier New,Courier,monospace;">appData</span></td>
- <td>Applications can use this field to carry their own data. The handling of this data depends on the type defined with the <span style="font-family: Courier New,Courier,monospace;">type</span> key.
+ <td>Applications can use this field to carry their own data. The handling of this data depends on the type defined with the <span style="font-family: Courier New,Courier,monospace;">type</span> key. 
  <p>Make sure that if there is no message and no <span style="font-family: Courier New,Courier,monospace;">appData</span>, the push server rejects the message and returns an error.</p></td>
  <td>
  <ul><li>Conditionally mandatory (if message is null, this field is required)</li>
@@ -660,7 +663,7 @@ push_service_deregister(push_conn, _dereg_result_cb, NULL);
 </tr>
 <tr>
  <td><span style="font-family: Courier New,Courier,monospace;">delayDate</span></td>
- <td>The time how long the server holds the request before sending it to the push service.
+ <td>The time how long the server holds the request before sending it to the push service. 
  <p>This is an optional field, and if it does not exist, the server applies its default values (0 minutes). If <span style="font-family: Courier New,Courier,monospace;">delayTime</span> is 0, the push server delivers as soon as it receives the notification request.</p></td>
  <td>
   <ul><li>Optional</li>
@@ -673,11 +676,11 @@ push_service_deregister(push_conn, _dereg_result_cb, NULL);
  <td><span style="font-family: Courier New,Courier,monospace;">reliableOption</span></td>
  <td>The push server guarantees reliable message delivery if the <span style="font-family: Courier New,Courier,monospace;">reliableOption</span> is set. The possible options are:
  <ul>
-  <li><span style="font-family: Courier New,Courier,monospace;">NoReliable</span>: Do not send any acknowledgement back to an application server and do not store the notification in the push server if the push service did not receive the notification.</li>
-  <li><span style="font-family: Courier New,Courier,monospace;">Transport</span>: Send an acknowledgement back to the application server when the push service receives the notification.</li>
-  <li><span style="font-family: Courier New,Courier,monospace;">Application</span>: Send an acknowledgement back to the application server when an application checks the notification.</li>
+  <li><span style="font-family: Courier New,Courier,monospace;">NoReliable</span>: Do not send any acknowledgment back to an application server and do not store the notification in the push server if the push service did not receive the notification.</li>
+  <li><span style="font-family: Courier New,Courier,monospace;">Transport</span>: Send an acknowledgment back to the application server when the push service receives the notification.</li>
+  <li><span style="font-family: Courier New,Courier,monospace;">Application</span>: Send an acknowledgment back to the application server when an application checks the notification.</li>
  </ul>
- <p>This is an optional field, and if it does not exist, the server applies its default value (<span style="font-family: Courier New,Courier,monospace;">Transport</span>). An acknowledgement at this point does not mean a response to the notification request, but an acknowledgement that the push service has received the notification. When the push service receives the notification, the push server sends this acknowledgement to the application server in a JSON format through HTTP.</p>
+ <p>This is an optional field, and if it does not exist, the server applies its default value (<span style="font-family: Courier New,Courier,monospace;">Transport</span>). An acknowledgment at this point does not mean a response to the notification request, but an acknowledgment that the push service has received the notification. When the push service receives the notification, the push server sends this acknowledgment to the application server in a JSON format through HTTP.</p>
  </td>
  <td>
    <ul><li>Optional</li>
@@ -725,19 +728,19 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 </pre></li>
 
 <li>Example request:
-<pre class="prettyprint lang-html">
+<pre class="prettyprint">
 {
-&nbsp;&nbsp;&nbsp;&quot;encoding&quot; : &quot;base64&quot; &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&quot;regID&quot; : &quot;ab123456&quot;,
-&nbsp;&nbsp;&nbsp;&quot;requestID&quot; : &quot;0000001&quot;,
-&nbsp;&nbsp;&nbsp;&quot;sender&quot; : &quot;oscal&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&quot;type&quot; : 0 &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&quot;message&quot; : &quot;badgeOption=INCREASE&amp;badgeNumber=1&amp;action=ALERT&amp;alertMessage=Hi&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&quot;appData&quot; : &quot;{id:asdf&amp;passwd:1234}&quot;, &lt;!--Optional, (Opaque)--&gt;
-&nbsp;&nbsp;&nbsp;&quot;delayDate&quot; : 60, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&quot;reliableOption&quot; : &quot;Transport&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&quot;sessionInfo&quot; : &quot;002002&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&quot;timeStamp&quot; : 1234567890, &lt;!--Optional--&gt;
+&nbsp;&nbsp;&nbsp;&quot;encoding&quot;: &quot;base64&quot; // Optional
+&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab123456&quot;,
+&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000001&quot;,
+&nbsp;&nbsp;&nbsp;&quot;sender&quot;: &quot;oscal&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&quot;type&quot;: 0 //Optional
+&nbsp;&nbsp;&nbsp;&quot;message&quot;: &quot;badgeOption=INCREASE&amp;badgeNumber=1&amp;action=ALERT&amp;alertMessage=Hi&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&quot;appData&quot;: &quot;{id:asdf&amp;passwd:1234}&quot;, // Optional, (Opaque)
+&nbsp;&nbsp;&nbsp;&quot;delayDate&quot;: 60, // Optional
+&nbsp;&nbsp;&nbsp;&quot;reliableOption&quot;: &quot;Transport&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&quot;sessionInfo&quot;: &quot;002002&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&quot;timeStamp&quot;: 1234567890, // Optional
 }
 </pre>
 </li>
@@ -752,10 +755,10 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 {
 &nbsp;&nbsp;&nbsp;&quot;results&quot;:
 &nbsp;&nbsp;&nbsp;[{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;ab123456&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;0000001&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:1000,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;Success&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab123456&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000001&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 1000,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;Success&quot;
 &nbsp;&nbsp;&nbsp;}]
 }
 </pre>
@@ -766,10 +769,10 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 {
 &nbsp;&nbsp;&nbsp;&quot;results&quot;:
 &nbsp;&nbsp;&nbsp;[{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:3023,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;error of json mapping exception&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 3023,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;error of json mapping exception&quot;
 &nbsp;&nbsp;&nbsp;}]
 }
 </pre>
@@ -780,10 +783,10 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 {
 &nbsp;&nbsp;&nbsp;&quot;results&quot;:
 &nbsp;&nbsp;&nbsp;[{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;ab123456&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;0000001&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:3008,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;error of not registered regID&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab123456&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000001&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 3008,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;error of not registered regID&quot;
 &nbsp;&nbsp;&nbsp;}]
 }
 </pre>
@@ -792,16 +795,15 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 </li>
 </ul>
 </li>
-
-<li> Multiple Request
-<p>You can construct a Multiple Request in a RestAPI call. The following list contains the details:</p>
+<li>Multiple request
+<p>You can construct a multiple request in a Rest API call. The following list contains the details:</p>
 <ul>
 <li>URI: URI of the RQM server chosen based on the first 2 digits of the registration ID</li>
 <li>Method: POST</li>
 <li>Data: JSON </li>
-<li>Description: Request a notification push to a push service</li>
-<li>Argument: Refer to single request</li>
-<li>Note: Total request message body must be less than the system default value, 200 kb. If not, &quot;3034 – error of too long chuned message data&quot; is returned. System default value can be changed as needed.</li>
+<li>Description: Request a notification push to the push service</li>
+<li>Argument: Refer to the single request</li>
+<li>Note: The total request message body must be less than the system default value, 200 kb. If not, &quot;3034 – error of too long chuned message data&quot; is returned. The system default value can be changed as needed.</li>
 <li>Example header:
 <pre class="prettyprint">
 appID: 1234567890987654
@@ -809,45 +811,43 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 </pre></li>
 
 <li>Example request:
-<pre class="prettyprint lang-html">
+<pre class="prettyprint">
 {
 &nbsp;&nbsp;&nbsp;&quot;messages&quot;:
 &nbsp;&nbsp;&nbsp;[{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;encoding&quot; : &quot;base64&quot; &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot; : &quot;ab123456&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot; : &quot;0000001&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sender&quot; : &quot;oscal&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;type&quot; : 0 &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;message&quot; : &quot;example&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;appData&quot; : &quot;{id:asdf&amp;passwd:1234}&quot;, &lt;!--Optional, (Opaque)--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;expiryDate&quot; : 720, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;delayDate&quot; : 60, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;reliableOption&quot; : &quot;Transport&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sessionInfo&quot; : &quot;192.168.0.1-8080-12345567&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;timeStamp&quot; : 1234567890, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;connectionTerm&quot; : 0, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp; }
-&nbsp;&nbsp;&nbsp; {
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;encoding&quot; : &quot;base64&quot; &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot; : &quot;ab234567&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot; : &quot;0000002&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sender&quot; : &quot;oscal&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;type&quot; : 0 &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;message&quot; : &quot;example&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;appData&quot; : &quot;{id:asdf&amp;passwd:1234}&quot;, &lt;!--Optional, (Opaque)--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;expiryDate&quot; : 720, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;delayDate&quot; : 60, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;reliableOption&quot; : &quot;Transport&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sessionInfo&quot; : &quot;192.168.0.1-8080-12345567&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;timeStamp&quot; : 1234567890, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;connectionTerm&quot; : 0, &lt;!--Optional--&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;encoding&quot;: &quot;base64&quot; // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab123456&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000001&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sender&quot;: &quot;oscal&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;type&quot;: 0 // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;message&quot;: &quot;example&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;appData&quot;: &quot;{id:asdf&amp;passwd:1234}&quot;, // Optional, (Opaque)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;expiryDate&quot;: 720, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;delayDate&quot;: 60, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;reliableOption&quot;: &quot;Transport&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sessionInfo&quot;: &quot;192.168.0.1-8080-12345567&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;timeStamp&quot;: 1234567890, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;connectionTerm&quot;: 0, // Optional
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;encoding&quot;: &quot;base64&quot; // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab234567&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000002&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sender&quot;: &quot;oscal&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;type&quot;: 0 // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;message&quot;: &quot;example&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;appData&quot;: &quot;{id:asdf&amp;passwd:1234}&quot;, // Optional, (Opaque)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;expiryDate&quot;: 720, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;delayDate&quot;: 60, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;reliableOption&quot;: &quot;Transport&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sessionInfo&quot;: &quot;192.168.0.1-8080-12345567&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;timeStamp&quot;: 1234567890, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;connectionTerm&quot;: 0, // Optional
 &nbsp;&nbsp;&nbsp;]}
-
 }
 </pre>
 </li>
 
-
 <li>Example response:
 <ul>
 <li>
@@ -856,16 +856,16 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 {
 &nbsp;&nbsp;&nbsp;&quot;results&quot;:
 &nbsp;&nbsp;&nbsp;[{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;ab123456&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;0000001&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:1000,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;Success&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab123456&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000001&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 1000,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;Success&quot;
 &nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;ab234567&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;0000002&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:1000,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;Success&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab234567&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000002&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 1000,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;Success&quot;
 &nbsp;&nbsp;&nbsp;}]
 }
 </pre>
@@ -876,31 +876,30 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 {
 &nbsp;&nbsp;&nbsp;&quot;results&quot;:
 &nbsp;&nbsp;&nbsp;[{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:3023,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;error of json mapping exception&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 3023,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;error of json mapping exception&quot;
 &nbsp;&nbsp;&nbsp;}]
 }
 </pre>
 </li>
 <li>
-<p>The following example shows a response message when some of multiple request are failed and the others are not:</p>
+<p>The following example shows a response message when some parts of the multiple request have failed and the others have not:</p>
 <pre class="prettyprint">
 {
 &nbsp;&nbsp;&nbsp;&quot;results&quot;:
 &nbsp;&nbsp;&nbsp;[{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;ab123456&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;0000001&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:1000,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;Success&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab123456&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000001&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 1000,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;Success&quot;
 &nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;ab234567&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;0000002&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:3008,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;error of not registered regID&quot;
-&nbsp;&nbsp;&nbsp;}]
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab234567&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000002&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 3008,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;error of not registered regID&quot;+&nbsp;&nbsp;&nbsp;}]
 }
 </pre>
 </li>
@@ -909,16 +908,15 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 </ul>
 </li>
 
-
 <li> Multicast
 <p>You can construct a multicast to send a push notification to multiple applications. The following list contains the details:</p>
 <ul>
 <li>URI: URI of the RQM server chosen based on the first 2 digits of the registration ID</li>
 <li>Method: POST</li>
 <li>Data: JSON </li>
-<li>Description: Request a notification push to a push service</li>
-<li>Argument: Refer to single request</li>
-<li>Note: Total request message body must be less than the system default value, 200 kb. If not, &quot;3034 – error of too long chuned message data&quot; is returned. System default value can be changed as needed.</li>
+<li>Description: Request a notification push to the push service</li>
+<li>Argument: Refer to the single request</li>
+<li>Note: The total request message body must be less than the system default value, 200 kb. If not, &quot;3034 – error of too long chuned message data&quot; is returned. The system default value can be changed as needed.</li>
 <li>Example header:
 <pre class="prettyprint">
 appID: 1234567890987654
@@ -926,25 +924,24 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 </pre></li>
 
 <li>Example request:
-<pre class="prettyprint lang-html">
+<pre class="prettyprint">
 {
 &nbsp;&nbsp;&nbsp;&quot;messages&quot;:
 &nbsp;&nbsp;&nbsp;[{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;encoding&quot; : &quot;base64&quot; &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot; : [&quot;ab123456&quot;, &quot;ab234567&quot;, &quot;ab345678&quot;]
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot; : &quot;0000001&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sender&quot; : &quot;oscal&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;type&quot; : 0 &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;message&quot; : &quot;example&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;appData&quot; : &quot;{id:asdf&amp;passwd:1234}&quot;, &lt;!--Optional, (Opaque)--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;expiryDate&quot; : 720, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;delayDate&quot; : 60, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;reliableOption&quot; : &quot;Transport&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sessionInfo&quot; : &quot;192.168.0.1-8080-12345567&quot;, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;timeStamp&quot; : 1234567890, &lt;!--Optional--&gt;
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;connectionTerm&quot; : 0, &lt;!--Optional--&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;encoding&quot;: &quot;base64&quot; // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: [&quot;ab123456&quot;, &quot;ab234567&quot;, &quot;ab345678&quot;]
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000001&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sender&quot;: &quot;oscal&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;type&quot;: 0 // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;message&quot;: &quot;example&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;appData&quot;: &quot;{id:asdf&amp;passwd:1234}&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;expiryDate&quot;: 720, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;delayDate&quot;: 60, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;reliableOption&quot;: &quot;Transport&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sessionInfo&quot;: &quot;192.168.0.1-8080-12345567&quot;, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;timeStamp&quot;: 1234567890, // Optional
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;connectionTerm&quot;: 0, // Optional
 &nbsp;&nbsp;&nbsp;]}
-
 }
 </pre>
 </li>
@@ -957,22 +954,22 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 {
 &nbsp;&nbsp;&nbsp;&quot;results&quot;:
 &nbsp;&nbsp;&nbsp;[{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;ab123456&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;0000001&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:1000,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;Success&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab123456&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000001&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 1000,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;Success&quot;
 &nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;ab234567&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;0000002&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:1000,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;Success&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab234567&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000002&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 1000,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;Success&quot;
 &nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;ab345678&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;0000002&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:1000,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;Success&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab345678&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000002&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 1000,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;Success&quot;
 &nbsp;&nbsp;&nbsp;}]
 }
 </pre>
@@ -983,36 +980,36 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 {
 &nbsp;&nbsp;&nbsp;&quot;results&quot;:
 &nbsp;&nbsp;&nbsp;[{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:3023,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;error of json mapping exception&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 3023,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;error of json mapping exception&quot;
 &nbsp;&nbsp;&nbsp;}]
 }
 </pre>
 </li>
 <li>
-<p>The following example shows a response message when some of multiple request are failed and the others are not:</p>
+<p>The following example shows a response message when some parts of the multicast request have failed and the others have not:</p>
 <pre class="prettyprint">
 {
 &nbsp;&nbsp;&nbsp;&quot;results&quot;:
 &nbsp;&nbsp;&nbsp;[{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;ab123456&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;0000001&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:1000,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;Success&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab123456&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000001&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 1000,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;Success&quot;
 &nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;ab234567&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;0000001&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:3008,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;error of not registered regID&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab234567&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000001&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 3008,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;error of not registered regID&quot;
 &nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;:&quot;ab345678&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;:&quot;0000001&quot;,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;:3013,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;:&quot;error of impossible to enqueue&quot;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;regID&quot;: &quot;ab345678&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;requestID&quot;: &quot;0000001&quot;,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusCode&quot;: 3013,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;statusMsg&quot;: &quot;error of impossible to enqueue&quot;
 &nbsp;&nbsp;&nbsp;}]
 }
 </pre>
@@ -1021,7 +1018,8 @@ appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
 </li>
 </ul>
 </li>
-</ol>
+</ul>
+</li>
 </ol>
 
  <h2 id="receive_push" name="receive_push">Receiving Push Notifications</h2>
@@ -1194,4 +1192,4 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga
 </script>
 
  </body>
-</html>
+</html>
\ No newline at end of file
@@ -28,7 +28,7 @@
                </ul>
                <p class="toc-title">Related Info</p>
                <ul class="toc">
-            <li><a href="../../../../org.tizen.guides/html/native/system/media_keys_n.htm">Media key Guide</a></li>
+            <li><a href="../../../../org.tizen.guides/html/native/multimedia/media_keys_n.htm">Media key Guide</a></li>
                        <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__MEDIA__KEY__MODULE.html">Media key API for Mobile Native</a></li>
                        <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__MEDIA__KEY__MODULE.html">Media key API for Wearable Native</a></li>
                </ul>
index 8395f5c..0bf2d8e 100644 (file)
@@ -39,6 +39,7 @@
   <li><a href="camera_tutorial_n.htm">Camera: Controlling a Camera Device</a> <p>Demonstrates how you can start a camera preview, configure various attributes, and take a photo.</p></li>
   <li><a href="image_util_tutorial_n.htm">Image Util: Encoding, Decoding, and Transforming Images</a> <p>Demonstrates how you can convert, resize, rotate, and crop an image, and decode and encode a JPEG image.</p></li>
   <li><a href="media_codec_tutorial_n.htm">Media Codec: Encoding and Decoding Media Files</a> <p>Demonstrates how you can encode and decode media files using media codecs.</p></li>
+  <li><a href="media_key_tutorial_n.htm">Media key: Managing Callbacks from Media Key Events</a>  <p>Demonstrates how you can manage callbacks for media key events.</p></li>  
   <li><a href="media_tools_tutorial_n.htm">Media Tool: Managing Media Handles</a> <p>Demonstrates how you can create, set, and get media handles.</p></li>
   <li><a href="metadata_extractor_tutorial_n.htm">Metadata Extractor: Extracting Metadata from an Input Media File</a> <p>Demonstrates how you can extract metadata from media files.</p></li>
   <li><a href="openal_tutorial_n.htm">OpenAL: Managing Playback Streams</a> <p>Demonstrates how you can manage a playback stream using OpenAL.</p></li>
index ddb9853..815bdf2 100755 (executable)
@@ -1795,18 +1795,18 @@ main()
 {
 &nbsp;&nbsp;&nbsp;int ret = BT_ERROR_NONE;
 &nbsp;&nbsp;&nbsp;ret = bt_adapter_le_start_scan(__bt_adapter_le_scan_result_cb, NULL);
+
 &nbsp;&nbsp;&nbsp;if (ret != BT_ERROR_NONE) 
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;[bt_adapter_le_start_scan] failed.&quot;);
 &nbsp;&nbsp;&nbsp;}
 
-/*
-    Wait while the system searches for the LE target you want to connect to
-    If you find the LE target you want, you should stop the le scan.
+&nbsp;&nbsp;&nbsp;// Wait while the system searches for the LE target you want to connect to
+&nbsp;&nbsp;&nbsp;// When you find the LE target you want, stop the LE scan
 
-    You call bt_adapter_le_start_scan() and this function operates continually until you call bt_adapter_le_stop_scan().
-    After you call bt_adapter_le_start_scan(), Should not you call bt_adapter_le_stop_scan(), it should causes in-progress error of bt_adapter_le_start_scan(). (When you call bt_adapter_le_start_scan() again)
-*/
+&nbsp;&nbsp;&nbsp;// bt_adapter_le_start_scan() operates continually until you call bt_adapter_le_stop_scan()
+&nbsp;&nbsp;&nbsp;// If you do not call bt_adapter_le_stop_scan() after calling bt_adapter_le_start_scan(),
+&nbsp;&nbsp;&nbsp;// calling bt_adapter_le_start_scan() again can cause an in-progress error
 
 &nbsp;&nbsp;&nbsp;ret = bt_adapter_le_stop_scan();
 &nbsp;&nbsp;&nbsp;if (ret != BT_ERROR_NONE)
@@ -1841,9 +1841,9 @@ __bt_adapter_le_scan_result_cb(int result,
 
 &nbsp;&nbsp;&nbsp;if (info-&gt;adv_data_len &gt; 31 || info-&gt;scan_data_len &gt; 31) 
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print (DLOG_INFO, LOG_TAG, &quot;###################&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;###################&quot;);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bt_adapter_le_stop_scan();
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print (DLOG_INFO, LOG_TAG, &quot;###################&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, LOG_TAG, &quot;###################&quot;);
 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
 &nbsp;&nbsp;&nbsp;}
@@ -1918,6 +1918,24 @@ __bt_adapter_le_scan_result_cb(int result,
 
 </li>
 
+<li>
+       <p>To stop the BLE scan operation:</p>
+<pre class="prettyprint">
+int 
+main()
+{
+&nbsp;&nbsp;&nbsp;int ret = BT_ERROR_NONE;
+&nbsp;&nbsp;&nbsp;ret = bt_adapter_le_stop_scan();
+
+&nbsp;&nbsp;&nbsp;if (ret != BT_ERROR_NONE)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;[bt_adapter_le_stop_scan] failed.&quot;);
+&nbsp;&nbsp;&nbsp;}
+
+&nbsp;&nbsp;&nbsp;return;
+}
+</pre> 
+</li>
 </ol>
 
 <h2 id="le_discovery" name="le_discovery">Discovering Bluetooth LE Devices</h2>
@@ -1945,7 +1963,7 @@ __bt_adapter_le_device_discovery_state_changed_cb(int result,
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void *user_data) 
 {
 &nbsp;&nbsp;&nbsp;if (discovery_info == NULL &amp;&amp; discovery_state == BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;No discovery_info!.&quot;);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlog_print(DLOG_ERROR, LOG_TAG, &quot;No discovery_info!&quot;);
 
 &nbsp;&nbsp;&nbsp;return;
 
@@ -2265,4 +2283,4 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga
 </script>
 
  </body>
-</html>
+</html>
\ No newline at end of file
index 0623b5a..b4500e7 100644 (file)
@@ -2542,7 +2542,7 @@ contacts_query_create(_contacts_name._uri, &amp;query);
 <pre class="prettyprint">\r
 contacts_filter_h filter = NULL;\r
 \r
-contacts_filter_create (_contacts_name._uri, &amp;filter);\r
+contacts_filter_create(_contacts_name._uri, &amp;filter);\r
 </pre>\r
 \r
 <p>The first parameter defines in which view to place the filter. To filter by the first and last name, use the <span style="font-family: Courier New,Courier,monospace;">_contacts_name</span> filter. The first parameter of the <span style="font-family: Courier New,Courier,monospace;">contacts_query_create()</span> function must be the same parameter as in the filter to be appended. For more information on views, see the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SOCIAL__CONTACTS__SVC__VIEW__MODULE.html">View/Property</a> tables.</p></li>\r
@@ -2565,7 +2565,7 @@ contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND);
 \r
 <pre class="prettyprint">\r
 contacts_filter_h n_filter = NULL;\r
-contacts_filter_create (_contacts_name._uri, &amp;n_filter);\r
+contacts_filter_create(_contacts_name._uri, &amp;n_filter);\r
 contacts_filter_add_str(n_filter, _contacts_name.first_name, CONTACTS_MATCH_STARTSWITH, &quot;Ada&quot;);\r
 contacts_filter_add_operator(n_filter, CONTACTS_FILTER_OPERATOR_OR);\r
 contacts_filter_add_str(n_filter, _contacts_name.first_name, CONTACTS_MATCH_STARTSWITH, &quot;Igo”&quot;);\r
@@ -2702,7 +2702,7 @@ contacts_list_create(&amp;list);
 <li>Add records to the list:\r
 \r
 <pre class="prettyprint">\r
-contacts_list_add (list, record);\r
+contacts_list_add(list, record);\r
 </pre>\r
 </li>\r
 \r
index 5635fae..f9306df 100644 (file)
@@ -265,7 +265,7 @@ error = device_led_stop_custom();
 <pre class="prettyprint">
 #include &lt;device/power.h&gt;</pre>
 </li>
-<li>To lock and change the power state:
+<li>To lock and unlock the power state:
 <ul>
 <li>Lock the power state with the <span style="font-family: Courier New,Courier,monospace;">device_power_request_lock()</span> function.
 <p>The function locks the specific lock type for a specified time. After the given timeout, the lock type is unlocked automatically. If the process is destroyed, every lock is removed.</p>
@@ -285,7 +285,6 @@ int error;
 error = device_power_release_lock(POWER_LOCK_CPU);
 </pre>
 </li>
-
 </ul>
 </li>
 </ol>
index 4f1d060..6b4993d 100644 (file)
        <div id="toc_border"><div id="toc">
                <p class="toc-title">Content</p>
                <ul class="toc">
-                       <li><a href="#play">Playing Feedback for Specific Pattern</a></li>
-                       <li><a href="#playtype">Playing Feedback for Specific Type and Pattern</a></li>
-                       <li><a href="#support">Checking whether Pattern is Supported</a></li>
+                       <li><a href="#play">Playing Feedback for Specific Pattern</a></li>
+                       <li><a href="#playtype">Playing Feedback for Specific Type and Pattern</a></li>
+                       <li><a href="#support">Checking for Pattern Support</a></li>
                </ul>
                <p class="toc-title">Related Info</p>
                <ul class="toc">
                <li><a href="../../../../org.tizen.guides/html/native/system/feedback_n.htm">Feedback Guide</a></li>
-                       <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__FEEDBACK__MODULE.html">Feedback API for Mobile Native</a></li>
+               <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__FEEDBACK__MODULE.html">Feedback API for Mobile Native</a></li>
                </ul>
        </div></div>
 </div>
 <div id="container"><div id="contents"><div class="content">
 <h1>Feedback: Playing Sound and Vibrating Patterns</h1>
 
-
-       <p>This tutorial demonstrates how you can feedback for patterns.</p>
-
+<p>This tutorial demonstrates how you can use feedback patterns for user actions.</p>
+  <p>This feature is supported in mobile applications only.</p>
 
   <h2>Warm-up</h2>
     <p>Become familiar with the Feedback API basics by learning about:</p>
        <ul>
-       <li><a href="#play">Playing Feedback for Specific Pattern</a>
-       <p>Play sound and vibrate for specific pattern.</p></li>
-       <li><a href="#playtype">Playing Feedback for Specific Type and Pattern</a>
-       <p>Play sound and vibrate for specific type and pattern.</p></li>
-       <li><a href="#support">Checking whether Pattern is Supported</a>
-       <p>Retrieve information whether specific pattern is supported.</p></li>
+       <li><a href="#play">Playing Feedback for Specific Pattern</a>
+       <p>Play a sound and vibrate for a specific pattern.</p></li>
+       <li><a href="#playtype">Playing Feedback for Specific Type and Pattern</a>
+       <p>Play a sound and vibrate for a specific type and pattern.</p></li>
+       <li><a href="#support">Checking for Pattern Support</a>
+       <p>Determine whether a specific pattern is supported.</p></li>
        </ul>
 
-<h2 id="play" name="play">Playing Feedback for Specific Pattern</h2>
+<h2 id="play" name="play">Playing Feedback for Specific Pattern</h2>
 
-<p>Play sound and vibrate for specific pattern.</p>
+<p>To play a sound and vibrate for a specific pattern:</p>
 <ol>
-<li><p>To use the functions and data types of the Feedback API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__FEEDBACK__MODULE.html">mobile</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;feedback.h&gt;</span> header file in your application:</p>
+<li><p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__FEEDBACK__MODULE.html">Feedback</a> API, include the <span style="font-family: Courier New,Courier,monospace;">&lt;feedback.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;feedback.h&gt;
 </pre></li>
-<li><p>To play feedback:</p>
-<ul>
-<li>Play feedback pattern with <span style="font-family: Courier New,Courier,monospace;">feedback_play()</span> function.
-<p>The function returns whether playing feedback is success or not.</p>
-<p>It invokes the <span style="font-family: Courier New,Courier,monospace;">sound_play</span> and <span style="font-family: Courier New,Courier,monospace;">vibrator_play</span> internally. It return success when pattern enum is valid.</p>
+<li>Play the feedback pattern with the <span style="font-family: Courier New,Courier,monospace;">feedback_play()</span> function.
+<p>The return value defines whether playing the feedback was successful.</p>
+<p>Internally, the function invokes the <span style="font-family: Courier New,Courier,monospace;">sound_play</span> or <span style="font-family: Courier New,Courier,monospace;">vibrator_play</span> feedback type. It returns success when the pattern enum is valid.</p>
 <pre class="prettyprint">
 int ret;
 ret = feedback_play(pattern);
 </pre>
 </li>
-
-</ul>
-</li>
 </ol>
 
-<h2 id="playtype" name="playtype">Playing Feedback for Specific Type and Pattern</h2>
+<h2 id="playtype" name="playtype">Playing Feedback for Specific Type and Pattern</h2>
 
-<p>Play sound and vibrate for specific type and pattern.</p>
+<p>To play a sound and vibrate for a specific type and pattern:</p>
 <ol>
-<li><p>To use the functions and data types of the Feedback API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__FEEDBACK__MODULE.html">mobile</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;feedback.h&gt;</span> header file in your application:</p>
+<li><p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__FEEDBACK__MODULE.html">Feedback</a> API, include the <span style="font-family: Courier New,Courier,monospace;">&lt;feedback.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;feedback.h&gt;
 </pre></li>
-<li><p>To play feedback:</p>
-<ul>
-<li>Play feedback pattern with <span style="font-family: Courier New,Courier,monospace;">feedback_play_type()</span> function.
-
-<p>The function returns whether playing feedback is success or not.</p>
-<p>Internally it invokes the <span style="font-family: Courier New,Courier,monospace;">sound_play</span> or <span style="font-family: Courier New,Courier,monospace;">vibrator_play</span> as feedback type. It return success when pattern enum is valid.</p>
+<li>Play the feedback pattern with the <span style="font-family: Courier New,Courier,monospace;">feedback_play_type()</span> function. 
+<p>The return value defines whether playing the feedback was successful.</p>
+<p>Internally, the function invokes the <span style="font-family: Courier New,Courier,monospace;">sound_play</span> or <span style="font-family: Courier New,Courier,monospace;">vibrator_play</span> feedback type. It returns success when the pattern enum is valid.</p>
 <pre class="prettyprint">
 static int ret;
 ret = feedback_play(type, pattern);
 </pre>
-</ul>
+
 </li>
 </ol>
 
-<h2 id="support" name="support">Checking whether Pattern is Supported</h2>
+<h2 id="support" name="support">Checking for Pattern Support</h2>
 
-<p>Retrieve information whether specific pattern is supported.</p></li>
+<p>To determine whether a specific pattern is supported:</p>
 
 <ol>
-<li><p>To use the functions and data types of the Feedback API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__FEEDBACK__MODULE.html">mobile</a> applications), include the <span style="font-family: Courier New,Courier,monospace;">&lt;feedback.h&gt;</span> header file in your application:</p>
+<li><p>To use the functions and data types of the <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__FEEDBACK__MODULE.html">Feedback</a> API, include the <span style="font-family: Courier New,Courier,monospace;">&lt;feedback.h&gt;</span> header file in your application:</p>
 <pre class="prettyprint">
 #include &lt;feedback.h&gt;
 </pre></li>
-<li><p>Retrieve support information:</p>
-<ul>
-<li>Retreive information wheter specific pattern is supported for specific feedback type with <span style="font-family: Courier New,Courier,monospace;">feedback_is_supported_pattern()</span> function.
-<p>The function returns whether retreiving feedback information is success or not.</p>
-<p>Internally it invokes the <span style="font-family: Courier New,Courier,monospace;">sound_is_supported</span> or <span style="font-family: Courier New,Courier,monospace;">vibrator_is_supported</span> as feedback type.</p>
+<li>Check whether a specific pattern is supported for a specific feedback type with the <span style="font-family: Courier New,Courier,monospace;">feedback_is_supported_pattern()</span> function. 
+<p>The return value defines whether retrieving the feedback information was successful.</p>
+<p>Internally, the function invokes the <span style="font-family: Courier New,Courier,monospace;">sound_is_supported</span> or <span style="font-family: Courier New,Courier,monospace;">vibrator_is_supported</span> feedback type.</p>
 <pre class="prettyprint">
 static int ret;
 bool status;
 ret = feedback_is_supported_pattern(type, pattern, &amp;status);
 </pre>
-
 </li>
-</ul>
 </ol>
 
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
index 7ca5451..bd9dc67 100644 (file)
@@ -24,8 +24,8 @@
                <p class="toc-title">Content</p>
                <ul class="toc">
                        <li><a href="#retrieve">Retrieving a Sensor</a></li>
-                       <li><a href="#event">Registering a Sensor Event</a></li>
-                       <li><a href="#accuracy">Registering the Accuracy Changed Callback</a>
+                       <li><a href="#event">Retrieving Sensor Details and Measurements</a></li>
+                       <li><a href="#accuracy">Monitoring Accuracy Changes</a>
                        </li>
                </ul>
                <p class="toc-title">Related Info</p>
        <ul>
        <li><a href="#retrieve">Retrieving a Sensor</a>
        <p>Check the sensor support and retrieve the sensor.</p></li>
-       <li><a href="#event">Registering a Sensor Event</a>
-       <p>Get a specific sensor using criteria such as vendor and name.</p></li>
-       <li><a href="#accuracy">Registering the Accuracy Changed Callback</a>
+       <li><a href="#event">Retrieving Sensor Details and Measurements</a>
+       <p>Access sensor details and the measurement data.</p></li>
+       <li><a href="#accuracy">Monitoring Accuracy Changes</a>
        <p>Create an event which is called when the accuracy is changed.</p>
        </li></ul>
 
 <h2 id="retrieve" name="retrieve">Retrieving a Sensor</h2>
 
-<p>To declare the variables and get a sensor handle:</p>
+<p>To check whether a sensor is supported, and get a handle for the supported sensor:</p>
 
 <ol>
 <li>To use the functions and data types of the Sensor API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sensor.h&gt;</span> header file in your application:
@@ -65,7 +65,7 @@
 #include &lt;sensor.h&gt;
 </pre>
 </li>
-<li>Check whether a sensor is supported:
+<li>To check whether a sensor is supported, use the <span style="font-family: Courier New,Courier,monospace">sensor_is_supported()</span> function:
 <pre class="prettyprint">
 int error;
 bool supported;
@@ -77,28 +77,29 @@ error = sensor_is_supported(type, &amp;supported);
 <li>Get a handle of the default sensor or a sensor list:
 <pre class="prettyprint">
 int error;
+
+// Get default sensor handle
 sensor_type_e type = SENSOR_ACCELEROMETER;
 sensor_h sensor;
 
 error = sensor_get_default_sensor(type, &amp;sensor);
-</pre>
-<pre class="prettyprint">
-int error;
+
+// Get sensor list
 sensor_type_e type = SENSOR_ALL;
 sensor_h *list;
 int sensor_count;
 
 error = sensor_get_sensor_list(type, &amp;list, &amp;sensor_count);
 
-// API caller must explicitly free this list after use
-// free(list);
+// Free the list after use
+free(list);
 </pre>
 </li>
 </ol>  
 
-<h2 id="event" name="event">Registering a Sensor Event</h2>
+<h2 id="event" name="event">Retrieving Sensor Details and Measurements</h2>
 
-<p>To set and unset callback functions for sensor events:</p>
+<p>To access sensor details and measurements:</p>
 
 <ol>
 <li>To use the functions and data types of the Sensor API (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html">wearable</a> applications), include the <span style="font-family: Courier New,Courier,monospace">&lt;sensor.h&gt;</span> header file in your application:
@@ -106,20 +107,21 @@ error = sensor_get_sensor_list(type, &amp;list, &amp;sensor_count);
 #include &lt;sensor.h&gt;
 </pre>
 </li>
-<li>Create an event listener:
+<li>To create an event listener, use the <span style="font-family: Courier New,Courier,monospace">sensor_create_listener()</span> function:
 <pre class="prettyprint">
 sensor_h sensor;
 
 sensor_listener_h listener;
 error = sensor_create_listener(sensor, &amp;listener);</pre>
 </li>
-<li>Register a callback: 
+<li>Register a callback for the listener.
+<p>The callback returns information about the sensor measurements (events) in a <span style="font-family: Courier New,Courier,monospace">sensor_event_s</span> structure (in <a href="../../../../org.tizen.native.mobile.apireference/structsensor__event__s.html">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/structsensor__event__s.html">wearable</a> applications) in its second parameter:</p>
 <pre class="prettyprint">
 void 
 on_sensor_event(sensor_h sensor, sensor_event_s *event, void *user_data)
 {
 &nbsp;&nbsp;&nbsp;// Select a specific sensor with a sensor handle
-&nbsp;&nbsp;&nbsp;// This example uses sensor type, assuming there is only 1 sensor for each type
+&nbsp;&nbsp;&nbsp;// This example uses the sensor type, assuming there is only 1 sensor for each type
 &nbsp;&nbsp;&nbsp;sensor_type_e type;
 &nbsp;&nbsp;&nbsp;sensor_get_type(sensor, &amp;type);
 &nbsp;&nbsp;&nbsp;switch (type) 
@@ -131,65 +133,37 @@ on_sensor_event(sensor_h sensor, sensor_event_s *event, void *user_data)
 
 error = sensor_listener_set_event_cb(listener, 100, on_sensor_event, user_data);
 </pre>
-<p>The following example shows the use of <span style="font-family: Courier New,Courier,monospace">sensor_event_s</span>:</p>
-<pre class="prettyprint">
-// In sensor.h
-typedef struct                   
-{                                
-&nbsp;&nbsp;&nbsp;int accuracy;                
-&nbsp;&nbsp;&nbsp;unsigned long long timestamp;
-&nbsp;&nbsp;&nbsp;int value_count;             
-&nbsp;&nbsp;&nbsp;float values[MAX_VALUE_SIZE];
-} sensor_event_s;</pre>
-
 </li>
-<li>Reset the interval (in milliseconds) (optional): 
-<p>In case of the proximity sensor, the setting interval has no effect. The proximity event occurs when the value changes.</p>
+<li>Reset the optional sensor measurement interval (in milliseconds).
+<p>In case of the proximity sensor, the interval setting has no effect. The proximity event only occurs when the value changes.</p>
 <pre class="prettyprint">
 error = sensor_listener_set_interval(listener, 100);
 </pre>
 
 </li>
-<li>Set the optional sensor option (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html#gaf517b61e58b872f985fc2fc2a26aa56a">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html#gaf517b61e58b872f985fc2fc2a26aa56a">wearable</a> applications):
+<li>Set the optional sensor option.
+<p>The <span style="font-family: Courier New,Courier,monospace">sensor_option_e</span> enumerator (in <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html#gaf517b61e58b872f985fc2fc2a26aa56a">mobile</a> and <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__SENSOR__MODULE.html#gaf517b61e58b872f985fc2fc2a26aa56a">wearable</a> applications) defines the available options.</p>
 <pre class="prettyprint">
 error = sensor_listener_set_option(listener, SENSOR_OPTION_ALWAYS_ON);
 </pre>
 
 
 </li>
-<li>Start a sensor listener: 
+<li>Start the sensor listener: 
 <pre class="prettyprint">
 error = sensor_listener_start(listener);
 </pre>
-
+<p>While the listener is running, the registered callback is triggered at defined intervals and returns information on the sensor measurements.</p>
 </li>
-<li>Read sensor data (optional).
-<p>In order to read sensor data, the sensor listener needs to be started in advance using sensor_listener_read_data() function:</p>
+<li>To read the sensor measurements immediately, instead of waiting till the end of the measurement interval when the callback is triggered, use the <span style="font-family: Courier New,Courier,monospace">sensor_listener_read_data()</span> function. 
+<p>You must start the listener with the <span style="font-family: Courier New,Courier,monospace">sensor_listener_start()</span> function before you can read sensor data.</p>
 <pre class="prettyprint">
 sensor_event_s event;
 error = sensor_listener_read_data(listener, &amp;event);
 </pre>
 
 </li>
-<li>Unset the callback:
-<pre class="prettyprint">
-error = sensor_listener_unset_event_cb(listener);
-</pre>
-
-</li>
-<li>Stop the listener:
-<pre class="prettyprint">
-error = sensor_listener_stop(listener);
-</pre>
-
-</li>
-<li>Destroy the listener:
-<pre class="prettyprint">
-error = sensor_destroy_listener(listener);
-</pre>
-
-</li>
-<li>Read sensor details (optional):
+<li>You can optionally access various sensor details using the <span style="font-family: Courier New,Courier,monospace">sensor_get_XXX()</span> functions: 
 <pre class="prettyprint">
 char *name;
 char *vendor;
@@ -209,11 +183,20 @@ error = sensor_get_min_interval(listener, &amp;min_interval);
 </pre>
 
 </li>
+<li>When no longer needed, unset the callback, and stop and destroy the listener: 
+<pre class="prettyprint">
+error = sensor_listener_unset_event_cb(listener);
+
+error = sensor_listener_stop(listener);
+
+error = sensor_destroy_listener(listener);
+</pre>
+</li>
 </ol>
 
-<h2 id="accuracy" name="accuracy">Registering the Accuracy Changed Callback</h2>
+<h2 id="accuracy" name="accuracy">Monitoring Accuracy Changes</h2>
 
-<p>To register the accuracy changed callback:</p>
+<p>To monitor accuracy changes:</p>
 
 <ol>
 <li>To use the functions and data types of the Sensor API, include the <span style="font-family: Courier New,Courier,monospace">&lt;sensor.h&gt;</span> header file in your application:
@@ -230,9 +213,10 @@ error = sensor_create_listener(sensor, &amp;listener);
 </pre>
 
 </li>
-<li>Register the accuracy changed callback
+<li>Register and define a callback that is triggered when the sensor accuracy changes
 <pre class="prettyprint">
 error = sensor_listener_set_accuracy_cb(listener, sensor_accuracy_changed_cb, user_data);
+
 void 
 sensor_accuracy_changed_cb(sensor_h sensor, unsigned long long timestamp, 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sensor_data_accuracy_e accuracy, void *data)
index e3ece7a..67e6a93 100644 (file)
@@ -5,13 +5,13 @@
        <meta http-equiv="X-UA-Compatible" content="IE=9" />
        <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
        <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
-       <script type="text/javascript" src="../../scripts/snippet.js"></script> 
+       <script type="text/javascript" src="../../scripts/snippet.js"></script>
        <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
        <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
        <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
        <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
 
-       <title>Storage: Getting Information about Storages</title>  
+       <title>Storage: Getting Information about Storages</title>
 </head>
 
 <body onload="prettyPrint()" style="overflow: auto;">
@@ -26,8 +26,8 @@
                        <li><a href="#memory">Retrieving Memory Sizes</a></li>
                        <li><a href="#storage">Retrieving Storage Information</a></li>
                        <li><a href="#state">Monitoring Storage State Changes</a></li>
-                       <li><a href="#space">Retrieving Storage Space Information</a></li>                      
-               </ul>           
+                       <li><a href="#space">Retrieving Storage Space Information</a></li>              
+               </ul>
                <p class="toc-title">Related Info</p>
                <ul class="toc">
             <li><a href="../../../../org.tizen.guides/html/native/system/storage_n.htm">Storage Guide</a></li>
                        <li><a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__SYSTEM__STORAGE__MODULE.html">Storage API for Wearable Native</a></li>
                </ul>
        </div></div>
-</div> 
+</div>
 
 <div id="container"><div id="contents"><div class="content">
 <h1>Storage: Getting Information about Storages</h1>
-       
 
        <p>This tutorial demonstrates how you can obtain detailed information from the internal and external storages.</p> 
        
index 0618092..d6db645 100644 (file)
@@ -40,9 +40,7 @@
                <p>Demonstrates how you can control attached devices, such as display, battery, LED, haptic, and power.</p>
                </li>
                <li><a href="dlog_tutorial_n.htm">dlog: Sending Log Output for Debug Activities</a> 
-               <p>Demonstrates how you can use the dlog library to collect log messages from various applications and the system.</p></li>
-               <li><a href="media_key_tutorial_n.htm">Media key: Managing Callbacks from Media Key Events</a> 
-               <p>Demonstrates how you can manage callbacks for media key events.</p></li>     
+               <p>Demonstrates how you can use the dlog library to collect log messages from various applications and the system.</p></li>     
                <li><a href="runtime_tutorial_n.htm">Runtime information: Receiving and Monitoring Runtime Information</a>
                <p>Demonstrates how you can obtain runtime information, such as system preferences.</p>
                </li>
@@ -61,6 +59,8 @@
 
   <p>The following tutorials apply in <strong>mobile applications only</strong>:</p>   
 <ul>
+       <li><a href="feedback_tutorial_n.htm">Feedback: Playing Sound and Vibrating Patterns</a> 
+       <p>Demonstrates how you can use sounds and vibration as feedback.</p></li>
        <li><a href="t-trace_tutorial_n.htm">T-trace: Tracing Applications</a>
        <p>Demonstrates how you can insert tracepoints in your application.</p></li>    
 </ul>  
index 8c07cc3..cfc41f9 100644 (file)
@@ -71,7 +71,7 @@
 &nbsp;&nbsp;&nbsp;&lt;div id=&quot;start-header&quot; data-role=&quot;header&quot; data-position=&quot;fixed&quot;&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;Bluetooth chat&lt;/h1&gt;
 &nbsp;&nbsp;&nbsp;&lt;/div&gt;</pre></li>
- <li> <p>The actual content section of the screen is defined within a <span style="font-family: Courier New,Courier,monospace;">&lt;div&gt;</span> element whose <span style="font-family: Courier New,Courier,monospace;">data-role</span> attribute is set to <span style="font-family: Courier New,Courier,monospace;">content</span>. It contains buttons (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Button.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_button.htm">wearable</a> applications) for turning on the Bluetooth connection and either creating or joining a server connection. The buttons displayed depend on whether the Bluetooth adapter is on.</p>
+ <li> <p>The actual content section of the screen is defined within a <span style="font-family: Courier New,Courier,monospace;">&lt;div&gt;</span> element whose <span style="font-family: Courier New,Courier,monospace;">data-role</span> attribute is set to <span style="font-family: Courier New,Courier,monospace;">content</span>. It contains buttons (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Button.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/wearable/widgets/widget_button.htm">wearable</a> applications) for turning on the Bluetooth connection and either creating or joining a server connection. The buttons displayed depend on whether the Bluetooth adapter is on.</p>
  <pre class="prettyprint lang-html">&nbsp;&nbsp;&nbsp;&lt;!--Content section--&gt;
 &nbsp;&nbsp;&nbsp;&lt;div id=&quot;start-content&quot; data-role=&quot;content&quot; data-scroll=&quot;none&quot;&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class=&quot;box&quot;&gt;
@@ -176,7 +176,7 @@ $(&#39;#keyboard-ok-button&#39;).on(&#39;click&#39;, function(event)
 <h3 id="server" name="server">Defining the Choose Your Server Screen</h3> 
 <ol class="tutorstep">
 <li>templates/choose_page.tpl Source File
-<ol type="a"><li><p>The content section of the Choose your server screen displays a list (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Listview.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_list.htm">wearable</a> applications) of available servers.</p>
+<ol type="a"><li><p>The content section of the Choose your server screen displays a list (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Listview.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/wearable/widgets/widget_list.htm">wearable</a> applications) of available servers.</p>
 <pre class="prettyprint">
 &lt;div data-role=&quot;page&quot; id=&quot;choose&quot;&gt;
 &nbsp;&nbsp;&nbsp;&lt;!--Header section--&gt;
@@ -193,7 +193,7 @@ $(&#39;#keyboard-ok-button&#39;).on(&#39;click&#39;, function(event)
 </pre>
 </li>
 <li>
-<p>When the user taps a server name, the system starts searching for the server and attempts to connect to it. After connecting, the system displays confirmation pop-ups (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Popup.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_popup.htm">wearable</a> applications).</p>
+<p>When the user taps a server name, the system starts searching for the server and attempts to connect to it. After connecting, the system displays confirmation pop-ups (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Popup.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/wearable/widgets/widget_popup.htm">wearable</a> applications).</p>
 <pre class="prettyprint">
 $(&#39;#choose-content&#39;).on(&#39;tap&#39;, &#39;ul.ui-listview li&#39;, function() 
 {
index 0d8bb72..3a3caf9 100644 (file)
@@ -65,7 +65,7 @@
 
    <li>main_page.tpl Source File 
 <p>The header section of the screen is defined within a <span style="font-family: Courier New,Courier,monospace;">&lt;div&gt;</span> element whose <span style="font-family: Courier New,Courier,monospace;">data-role</span> attribute is set to <span style="font-family: Courier New,Courier,monospace;">header</span>. The header section determines the title of the screen.</p>
-<p>The content section of the screen is added dynamically and displays a contact list (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Listview.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_list.htm">wearable</a> applications). The footer section contains a tab bar with a button for starting a new chat.</p>
+<p>The content section of the screen is added dynamically and displays a contact list (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Listview.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/wearable/widgets/widget_list.htm">wearable</a> applications). The footer section contains a tab bar with a button for starting a new chat.</p>
         <pre class="prettyprint lang-html">&lt;!--Header section--&gt;
 &lt;div id=&quot;main-header&quot; data-role=&quot;header&quot; data-position=&quot;fixed&quot;&gt;
 &nbsp;&nbsp;&nbsp;&lt;h1&gt;Chatter&lt;/h1&gt;
@@ -104,7 +104,7 @@ $(&#39;#contactSelect-button&#39;).on(&#39;click&#39;, function(event)
   <h3 id="contact" name="contact">Defining the Select Contact Screen</h3> 
   <ol class="tutorstep">
   <li>contactSelect.tpl Source File
-  <p>The content section of the Select contact screen displays a contact list. If the user taps the <strong>Enter number</strong> button (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Button.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_button.htm">wearable</a> applications), a pop-up appears allowing the user to enter a phone number for a contact not on the list. The popup component (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Popup.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_popup.htm">wearable</a> applications) contains a form for number input.</p>
+  <p>The content section of the Select contact screen displays a contact list. If the user taps the <strong>Enter number</strong> button (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Button.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/wearable/widgets/widget_button.htm">wearable</a> applications), a pop-up appears allowing the user to enter a phone number for a contact not on the list. The popup component (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Popup.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/wearable/widgets/widget_popup.htm">wearable</a> applications) contains a form for number input.</p>
   <pre class="prettyprint">
 &lt;!--Content section--&gt;
 &lt;div data-role=&quot;content&quot;&gt;
index 3b4eb95..1a11167 100644 (file)
@@ -102,7 +102,7 @@ loadStartPage: function ui_loadStartPage()
 </pre>
 </li>
 <li>
-<p>If the default contact card is not defined, the content section of the screen displays a message and a button (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Button.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_button.htm">wearable</a> applications) allowing user to create the default card.</p>
+<p>If the default contact card is not defined, the content section of the screen displays a message and a button (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Button.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/wearable/widgets/widget_button.htm">wearable</a> applications) allowing user to create the default card.</p>
 <pre class="prettyprint">
 &lt;div class=&quot;box&quot; id=&quot;temporaryBox&quot;&gt;
 &nbsp;&nbsp;&nbsp;&lt;p class=&quot;defaultText&quot;&gt;Default card is not defined yet!&lt;br&gt;Do you want to define it now?&lt;/p&gt;
@@ -141,7 +141,7 @@ loadStartPage: function ui_loadStartPage()
   </ol>
   <h3 id="selection" name="selection">Defining the Contacts List Screen</h3>
     <ol class="tutorstep"><li>index.html Source File
-  <p>The Contacts list screen displays an aggregated contact list (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Listview.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_list.htm">wearable</a> applications) sorted by name. The contacts are loaded from the device default address book using the <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/contact.html">Contact</a> API methods.</p>
+  <p>The Contacts list screen displays an aggregated contact list (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Listview.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/wearable/widgets/widget_list.htm">wearable</a> applications) sorted by name. The contacts are loaded from the device default address book using the <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/contact.html">Contact</a> API methods.</p>
 <pre class="prettyprint">
 &lt;ul data-role=&quot;listview&quot; id=&quot;list-choose&quot;&gt;
 &nbsp;&nbsp;&nbsp;&lt;li class=&quot;ui-li-multiline&quot;&gt;
index 8efa45f..af7d425 100644 (file)
@@ -18,7 +18,7 @@
 
 <div id="toc-navigation">
     <div id="profile">
-        <p><img alt="Mobile Web" src="../../../images/mobile_s_w.png"/> <img alt="Wearable Web" src="../../../images/wearable_s_w.png"/></p>
+        <p><img alt="Mobile Web" src="../../../images/mobile_s_w.png"/></p>
     </div>
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
@@ -32,7 +32,6 @@
         <ul class="toc">
             <li><a href="../../../../../org.tizen.guides/html/web/tizen/multimedia/media_controller_w.htm">Media Controller Guide</a></li>
             <li><a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html">Media Controller API for Mobile Web</a></li>
-            <li><a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/mediacontroller.html">Media Controller API for Wearable Web</a></li>
         </ul>
     </div></div>
 </div>
@@ -43,7 +42,7 @@
 <p>
 This tutorial demonstrates how you can to develop server and client applications for controlling various media functions of the device.</p>
 
-<p>The Media Controller API is mandatory for both Tizen mobile and wearable profiles, which means that it is supported in all mobile and wearable devices. All mandatory APIs are supported on the Tizen Emulators.</p> 
+<p>This feature is supported in mobile applications only.</p> 
 
 <h2>Warm-up</h2>
 <p>Become familiar with the Media Controller API basics by learning about:</p>
@@ -76,7 +75,7 @@ var mcClient = tizen.mediaController.getClient();
 </pre>
 
 </li>
-<li>Define a success (and optionally error) event handler by implementing the <span style="font-family: Courier New,Courier,monospace">MediaControllerServerInfoArraySuccessCallback</span> interface (in <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerServerInfoArraySuccessCallback">mobile</a> and <a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/mediacontroller.html#MediaControllerServerInfoArraySuccessCallback">wearable</a> applications):
+<li>Define a success (and optionally error) event handler by implementing the <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerServerInfoArraySuccessCallback">MediaControllerServerInfoArraySuccessCallback</a> interface:
 
 <pre class="prettyprint">
 var mcServerInfo;
@@ -97,7 +96,7 @@ function findErrorCallback(e)
 </pre>
 
 </li>
-<li>To search for all activated media controller servers, use the <span style="font-family: Courier New,Courier,monospace">findServers()</span> method of the <span style="font-family: Courier New,Courier,monospace">MediaControllerClient</span> interface (in <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerClient">mobile</a> and <a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/mediacontroller.html#MediaControllerClient">wearable</a> applications):
+<li>To search for all activated media controller servers, use the <span style="font-family: Courier New,Courier,monospace">findServers()</span> method of the <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerClient">MediaControllerClient</a> interface:
 
 <pre class="prettyprint">
 mcClient.findServers(findSuccessCallback, findErrorCallback);</pre>
@@ -109,7 +108,7 @@ mcClient.findServers(findSuccessCallback, findErrorCallback);</pre>
 
 <p>To manage the media controller features in your application, you must learn to handle requests from the client to the server:</p>
 <ol>
-<li>Create a <span style="font-family: Courier New,Courier,monospace">MediaControllerChangeRequestPlaybackInfoCallback</span> object (in <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerChangeRequestPlaybackInfoCallback">mobile</a> and <a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/mediacontroller.html#MediaControllerChangeRequestPlaybackInfoCallback">wearable</a> applications) to define listeners for getting the requests from a client.
+<li>Create a <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerChangeRequestPlaybackInfoCallback">MediaControllerChangeRequestPlaybackInfoCallback</a> object to define listeners for getting the requests from a client.
 
 <p>Each listener must invoke the appropriate function to perform the related update on the server and send an appropriate notification to the client. For example, the <span style="font-family: Courier New,Courier,monospace">onplaybackstaterequest</span> listener must use the <span style="font-family: Courier New,Courier,monospace">updatePlaybackState()</span> method to update the playback state.</p>
 
@@ -162,7 +161,7 @@ function errorCallback(e)
 </pre>
 
 </li>
-<li>You can send a request from the client using the <span style="font-family: Courier New,Courier,monospace">sendPlaybackState()</span>, <span style="font-family: Courier New,Courier,monospace">sendPlaybackPosition()</span>, <span style="font-family: Courier New,Courier,monospace">endShuffleMode()</span>, or <span style="font-family: Courier New,Courier,monospace">sendRepeatMode()</span> method of the <span style="font-family: Courier New,Courier,monospace">MediaControllerServerInfo</span> interface (in <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerServerInfo">mobile</a> and <a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/mediacontroller.html#MediaControllerServerInfo">wearable</a> applications).
+<li>You can send a request from the client using the <span style="font-family: Courier New,Courier,monospace">sendPlaybackState()</span>, <span style="font-family: Courier New,Courier,monospace">sendPlaybackPosition()</span>, <span style="font-family: Courier New,Courier,monospace">endShuffleMode()</span>, or <span style="font-family: Courier New,Courier,monospace">sendRepeatMode()</span> method of the <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerServerInfo">MediaControllerServerInfo</a> interface.
 <p>In the following example, send a request for the changing the playback state to paused using the <span style="font-family: Courier New,Courier,monospace">sendPlaybackState()</span> method:
 </p>
 
@@ -184,7 +183,7 @@ var watcherId;
 </pre>
 
 </li>
-<li>Define the event handlers for different notifications by implementing the <span style="font-family: Courier New,Courier,monospace">MediaControllerPlaybackInfoChangeCallback</span> interface (in <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerPlaybackInfoChangeCallback">mobile</a> and <a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/mediacontroller.html#MediaControllerPlaybackInfoChangeCallback">wearable</a> applications):
+<li>Define the event handlers for different notifications by implementing the <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerPlaybackInfoChangeCallback">MediaControllerPlaybackInfoChangeCallback</a> interface:
 
 <pre class="prettyprint">
 var playbackListener = 
@@ -242,7 +241,7 @@ var exampleCustomCommandData =
 </pre>
 
 </li>
-<li>Define a success (and optionally error) callback implementing the <span style="font-family: Courier New,Courier,monospace">MediaControllerSendCommandSuccessCallback</span> interface (in <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerSendCommandSuccessCallback">mobile</a> and <a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/mediacontroller.html#MediaControllerSendCommandSuccessCallback">wearable</a> applications):
+<li>Define a success (and optionally error) callback implementing the <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerSendCommandSuccessCallback">MediaControllerSendCommandSuccessCallback</a> interface:
 
 <pre class="prettyprint">
 function sendCommandSuccessCallback(response) 
@@ -268,7 +267,7 @@ mcServerInfo.sendCommand(&quot;myPlaylistFilter&quot;, sendCommandSuccessCallbac
 <li id="receive_command">On the server side:
 
 <ol>
-<li>Create the <span style="font-family: Courier New,Courier,monospace">MediaControllerReceiveCommandCallback</span> object (in <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerReceiveCommandCallback">mobile</a> and <a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/mediacontroller.html#MediaControllerReceiveCommandCallback">wearable</a> applications) to define a listener for receiving custom commands from a client:
+<li>Create the <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/mediacontroller.html#MediaControllerReceiveCommandCallback">MediaControllerReceiveCommandCallback</a> object to define a listener for receiving custom commands from a client:
 
 <pre class="prettyprint">
 var commandReceiveListener = function(client, command, data) 
index a71069c..5095ca9 100644 (file)
 
     <p>The multimedia tutorials demonstrate how to use the following features in creating Tizen Web applications:</p>
   <ul>
-   <li><a href="media_controller_tutorial_w.htm">Media Controller: Communicating Between the Media Controller Server and Client</a> <p>Demonstrates how you can communicate between the media controller server and client.</p></li>
    <li><a href="media_key_tutorial_w.htm">Media Key: Controlling Multimedia Playback</a> <p>Demonstrates how you can control multimedia playback.</p></li>
    <li><a href="sound_tutorial_w.htm">Sound: Controlling the Sound Volume Level and the Sound Devices</a> <p>Demonstrates how you can manage the device volume levels and the sound devices.</p></li>
   </ul>
 
-  
+ <p>The following tutorials apply in <strong>mobile applications only</strong>:</p> 
+ <ul>
+   <li><a href="media_controller_tutorial_w.htm">Media Controller: Communicating Between the Media Controller Server and Client</a> <p>Demonstrates how you can communicate between the media controller server and client.</p></li> 
+ </ul>
 
 <script type="text/javascript" src="../../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../../scripts/showhide.js"></script>
index 9d08f37..ec19fb1 100644 (file)
@@ -159,7 +159,7 @@ loadToCache: function TemplateManager_loadToCache(tplNames, onSuccess)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;Event manager&lt;/h1&gt;
 &nbsp;&nbsp;&nbsp;&lt;/div&gt;
 </pre> </li>
-<li><p>The actual content section of the screen is defined within a <span style="font-family: Courier New,Courier,monospace;">&lt;div&gt;</span> element whose <span style="font-family: Courier New,Courier,monospace;">data-role</span> attribute is set to <span style="font-family: Courier New,Courier,monospace;">content</span>. The content section of the main screen contains a list component (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Listview.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_list.htm">wearable</a> applications) displaying the elements as defined in the <span style="font-family: Courier New,Courier,monospace;">templates/event.tpl</span> and <span style="font-family: Courier New,Courier,monospace;">templates/all_day_event.tpl</span> files.</p>
+<li><p>The actual content section of the screen is defined within a <span style="font-family: Courier New,Courier,monospace;">&lt;div&gt;</span> element whose <span style="font-family: Courier New,Courier,monospace;">data-role</span> attribute is set to <span style="font-family: Courier New,Courier,monospace;">content</span>. The content section of the main screen contains a list component (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Listview.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/wearable/widgets/widget_list.htm">wearable</a> applications) displaying the elements as defined in the <span style="font-family: Courier New,Courier,monospace;">templates/event.tpl</span> and <span style="font-family: Courier New,Courier,monospace;">templates/all_day_event.tpl</span> files.</p>
 <pre class="prettyprint lang-html">
 &nbsp;&nbsp;&nbsp;&lt;!--Content section--&gt;
 &nbsp;&nbsp;&nbsp;&lt;div data-role=&quot;content&quot;&gt;
@@ -186,7 +186,7 @@ loadToCache: function TemplateManager_loadToCache(tplNames, onSuccess)
 </pre> </li></ol>
 </li>
 <li>templates/event.tpl Source File
-<p>Each event is displayed in the list showing a summary text, and a start and end date, and 2 buttons (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Button.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_button.htm">wearable</a> applications).</p>
+<p>Each event is displayed in the list showing a summary text, and a start and end date, and 2 buttons (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Button.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/wearable/widgets/widget_button.htm">wearable</a> applications).</p>
 <pre class="prettyprint lang-html">
 &lt;li class=&quot;event&quot; data-eventid=&quot;%uid%&quot;&gt;
 &nbsp;&nbsp;&nbsp;&lt;div class=&quot;ui-li-aside ui-li-desc&quot;&gt;
index 5cbf375..371d80c 100644 (file)
@@ -65,7 +65,7 @@
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;System information&lt;/h1&gt;
 &nbsp;&nbsp;&nbsp;&lt;/div&gt;
 </pre> </li> 
-     <li><p>The actual content section of the screen is defined within a <span style="font-family: Courier New,Courier,monospace;">&lt;div&gt;</span> element whose <span style="font-family: Courier New,Courier,monospace;">data-role</span> attribute is set to <span style="font-family: Courier New,Courier,monospace;">content</span>. The content section of the main screen contains a list component (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Listview.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Wearable_UIComponents/wearable_list.htm">wearable</a> applications) displaying the system properties.</p> <pre class="prettyprint lang-html">&nbsp;&nbsp;&nbsp;&lt;!--Content section--&gt;
+     <li><p>The actual content section of the screen is defined within a <span style="font-family: Courier New,Courier,monospace;">&lt;div&gt;</span> element whose <span style="font-family: Courier New,Courier,monospace;">data-role</span> attribute is set to <span style="font-family: Courier New,Courier,monospace;">content</span>. The content section of the main screen contains a list component (in <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_Listview.htm">mobile</a> or <a href="../../../../../org.tizen.web.apireference/html/ui_fw_api/wearable/widgets/widget_list.htm">wearable</a> applications) displaying the system properties.</p> <pre class="prettyprint lang-html">&nbsp;&nbsp;&nbsp;&lt;!--Content section--&gt;
 &nbsp;&nbsp;&nbsp;&lt;div data-role=&quot;content&quot;&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul data-role=&quot;listview&quot;&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li id=&quot;storage-info&quot;&gt;Storage&lt;/li&gt;
index aa667c0..b5f58fd 100644 (file)
@@ -18,7 +18,7 @@
 
 <div id="toc-navigation">
     <div id="profile">
-        <p><img alt="Mobile Web" src="../../../images/mobile_s_w.png"/> <img alt="Wearable Web" src="../../../images/wearable_s_w.png"/></p>
+        <p><img alt="Mobile Web" src="../../../images/mobile_s_w.png"/></p>
     </div>
     <div id="toc_border"><div id="toc">
         <p class="toc-title">Content</p>
@@ -31,7 +31,6 @@
         <ul class="toc">
              <li><a href="../../../../../org.tizen.guides/html/web/tizen/ui/inputdevice_w.htm">Input Device Guide</a></li>
              <li><a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/inputdevice.html">Input Device API for Mobile Web</a></li>
-             <li><a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/inputdevice.html">Input Device API for Wearable Web</a></li>
         </ul>
     </div></div>
 </div>
@@ -41,7 +40,7 @@
 
 <p>This tutorial demonstrates how you can manage input device keys and perform custom actions when they are pressed.</p>
 
-<p>The Input Device API is mandatory for both Tizen mobile and wearable profiles, which means that it is supported in all mobile and wearable devices. All mandatory APIs are supported on the Tizen Emulators.</p>
+<p>This feature is supported in mobile applications only.</p> 
 
 <h2>Warm-up</h2>
 <p>Become familiar with the Input Device API basics by learning about:</p>
@@ -55,7 +54,7 @@
 
 <p>To manage input device keys, you must learn to gather a list of all supported keys:</p>
 <ol>
-<li><p>To get a supported key list, use the <span style="font-family: Courier New,Courier,monospace">getSupportedKeys()</span> method of the <span style="font-family: Courier New,Courier,monospace">InputDeviceManager</span> interface (in <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/inputdevice.html#InputDeviceManager">mobile</a> and <a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/inputdevice.html#InputDeviceManager">wearable</a> applications):</p>
+<li><p>To get a supported key list, use the <span style="font-family: Courier New,Courier,monospace">getSupportedKeys()</span> method of the <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/inputdevice.html#InputDeviceManager">InputDeviceManager</a> interface:</p>
 
 <pre class="prettyprint">
 var keyCodes = {};
@@ -88,7 +87,7 @@ var keyCodes = {};
 </pre>
 </li>
 
-<li><p>Check each key separately using the <span style="font-family: Courier New,Courier,monospace">getKey()</span> method of the <span style="font-family: Courier New,Courier,monospace">InputDeviceManager</span> interface (in <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/inputdevice.html#InputDeviceManager">mobile</a> and <a href="../../../../../org.tizen.web.apireference/html/device_api/wearable/tizen/inputdevice.html#InputDeviceManager">wearable</a> applications).</p>
+<li><p>Check each key separately using the <span style="font-family: Courier New,Courier,monospace">getKey()</span> method of the <a href="../../../../../org.tizen.web.apireference/html/device_api/mobile/tizen/inputdevice.html#InputDeviceManager">InputDeviceManager</a> interface.</p>
 
 <p>If the result of the <span style="font-family: Courier New,Courier,monospace">getKey()</span> method is not <span style="font-family: Courier New,Courier,monospace">null</span>, you can access the key information. If the result is <span style="font-family: Courier New,Courier,monospace">null</span>, the key is not supported.</p>
 <pre class="prettyprint">
index 60901ba..01db488 100644 (file)
   <ul> 
    <li><a href="badge_tutorial_w.htm">Badge: Displaying the Notification (Badge) Count on the Home Screen</a> <p>Demonstrates how you can manage home screen badges.</p></li>
    <li><a href="noti_tutorial_w.htm">Notification: Notifying Users of Application Events</a> <p>Demonstrates how you can manage notifications created based on application events.</p></li>
-   <li><a href="inputdevice_tutorial_w.htm">Input Device: Managing Input Keys in the Application</a> <p>Demonstrates how you can manage input keys in the application.</p></li>
 </ul>  
 
+ <p>The following tutorials apply in <strong>mobile applications only</strong>:</p> 
+ <ul>
+   <li><a href="inputdevice_tutorial_w.htm">Input Device: Managing Input Keys in the Application</a> <p>Demonstrates how you can manage input keys in the application.</p></li> 
+ </ul>
+
 <script type="text/javascript" src="../../../scripts/jquery.zclip.min.js"></script>
 <script type="text/javascript" src="../../../scripts/showhide.js"></script>
 
index 71b1545..caf1b8b 100644 (file)
 <pre class="prettyprint">
 &nbsp;&nbsp;&nbsp;function onprogresshandler(e) 
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(&quot;divText&quot;).innerHTML = &quot;DownLoading.. (&quot; + parseInt(e.loaded / e.totalSize * 100) + &quot;%)&quot;;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(&quot;divText&quot;).innerHTML = &quot;DownLoading... (&quot; + parseInt(e.loaded / e.totalSize * 100) + &quot;%)&quot;;
 &nbsp;&nbsp;&nbsp;}
  
 &nbsp;&nbsp;&nbsp;function onaborthandler(e) 
index 0d15a6f..41530e5 100644 (file)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message = &quot;Charging is completed&quot;;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.querySelector(&#39;#charging&#39;).textContent = charging ? &#39;charging..&#39; : &#39;Please connect the charger.&#39;;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.querySelector(&#39;#charging&#39;).textContent = charging ? &#39;charging...&#39; : &#39;Please connect the charger.&#39;;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.querySelector(&#39;#level&#39;).textContent = level + &quot;%&quot;;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.querySelector(&#39;#progress&#39;).value = level;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.querySelector(&#39;#message&#39;).textContent = message;
index e27b9b7..9b672be 100644 (file)
 <p>Delete the generated database using the <span style="font-family: Courier New,Courier,monospace">window.webkitIndexedDB.deleteDatabase()</span> method:</p>
 <pre class="prettyprint">
 &lt;script&gt;
-&nbsp;&nbsp;&nbsp;window.webkitIndexedDB.deleteDatabase(&#39;TizenIndexedDB&#39;)
+&nbsp;&nbsp;&nbsp;window.webkitIndexedDB.deleteDatabase(&#39;TizenIndexedDB&#39;);
 &lt;/script&gt;
 </pre>
 </li>
@@ -141,7 +141,7 @@ The <span style="font-family: Courier New,Courier,monospace">keyPath</span> prop
 <p>To delete the object store, use the <span style="font-family: Courier New,Courier,monospace">deleteObjectStore()</span> method:</p>
 <pre class="prettyprint">
 &lt;script&gt;
-&nbsp;&nbsp;&nbsp;window.webkitIndexedDB.deleteObjectStore (&#39;tizenStore&#39;)
+&nbsp;&nbsp;&nbsp;window.webkitIndexedDB.deleteObjectStore(&#39;tizenStore&#39;);
 &lt;/script&gt;
 </pre>
 </li>
index adc1606..dceec4a 100644 (file)
@@ -43,9 +43,9 @@
                        <topic href="html/web/tizen/input_output/message_port_tutorial_w.htm" label="Message Port"></topic>                             
                </topic>                
                <topic href="html/web/tizen/multimedia/multimedia_tutorials_w.htm" label="Multimedia">                  
-                       <topic href="html/web/tizen/multimedia/media_controller_tutorial_w.htm" label="Media Controller"></topic>
                        <topic href="html/web/tizen/multimedia/media_key_tutorial_w.htm" label="Media Key"></topic>
-                       <topic href="html/web/tizen/multimedia/sound_tutorial_w.htm" label="Sound"></topic>                     
+                       <topic href="html/web/tizen/multimedia/sound_tutorial_w.htm" label="Sound"></topic>
+                       <topic href="html/web/tizen/multimedia/media_controller_tutorial_w.htm" label="Media Controller"></topic>                       
                </topic>
                <topic href="html/web/tizen/system/system_tutorials_w.htm" label="System">                      
                        <topic href="html/web/tizen/system/ham_tutorial_w.htm" label="Human Activity Monitor"></topic>
                <topic href="html/native/graphics/graphic_comp_tutorial_n.htm" label="Graphic UI Component"></topic>
        </topic>
        <topic href="html/native/location/location_tutorials_n.htm" label="Location">
-               <topic href="html/native/location/location_tutorial_n.htm" label="Location"></topic>
+               <topic href="html/native/location/location_tutorial_n.htm" label="Location Manager"></topic>
                <topic href="html/native/location/geofence_tutorial_n.htm" label="Geofence"></topic>
                <topic href="html/native/location/maps_tutorial_n.htm" label="Maps Service"></topic>            
        </topic>
                <topic href="html/native/multimedia/camera_tutorial_n.htm" label="Camera"></topic>
                <topic href="html/native/multimedia/image_util_tutorial_n.htm" label="Image Util"></topic>
                <topic href="html/native/multimedia/media_codec_tutorial_n.htm" label="Media Codec"></topic>
+               <topic href="html/native/multimedia/media_key_tutorial_n.htm" label="Media key"></topic>                
                <topic href="html/native/multimedia/media_tools_tutorial_n.htm" label="Media Tool"></topic>
                <topic href="html/native/multimedia/metadata_extractor_tutorial_n.htm" label="Metadata Extractor"></topic>
                <topic href="html/native/multimedia/openal_tutorial_n.htm" label="OpenAL"></topic>
        <topic href="html/native/system/system_tutorials_n.htm" label="System">
                <topic href="html/native/system/device_tutorial_n.htm" label="Device"></topic>
                <topic href="html/native/system/dlog_tutorial_n.htm" label="dlog"></topic>
-               <topic href="html/native/system/media_key_tutorial_n.htm" label="Media key"></topic>
                <topic href="html/native/system/runtime_tutorial_n.htm" label="Runtime information"></topic>
                <topic href="html/native/system/sensor_tutorial_n.htm" label="Sensor"></topic>
                <topic href="html/native/system/sysinfo_tutorial_n.htm" label="System Information"></topic>
                <topic href="html/native/system/system_setting_tutorial_n.htm" label="System Settings"></topic>
                <topic href="html/native/system/storage_tutorial_n.htm" label="Storage"></topic>
+               <topic href="html/native/system/feedback_tutorial_n.htm" label="Feedback"></topic>
                <topic href="html/native/system/t-trace_tutorial_n.htm" label="T-trace"></topic>
        </topic>
        <topic href="html/native/telephony/telephony_tutorials_n.htm" label="Telephony">
index 2096db0..f1b6bc6 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_DATETIME.png and b/org.tizen.ui.practices/html/images/input_panel_DATETIME.png differ
index a5279de..6491681 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_EMAIL.png and b/org.tizen.ui.practices/html/images/input_panel_EMAIL.png differ
index 3a0acf8..d26f188 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_EMOTICON.png and b/org.tizen.ui.practices/html/images/input_panel_EMOTICON.png differ
index 883462d..7a2f92f 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_HEX.png and b/org.tizen.ui.practices/html/images/input_panel_HEX.png differ
index e50c1d6..650bd89 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_INVALID.png and b/org.tizen.ui.practices/html/images/input_panel_INVALID.png differ
index 4edea8d..d33e602 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_IP.png and b/org.tizen.ui.practices/html/images/input_panel_IP.png differ
index a9cb146..9eada72 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_MONTH.png and b/org.tizen.ui.practices/html/images/input_panel_MONTH.png differ
index ddbcb20..ecea958 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_NOMAL.png and b/org.tizen.ui.practices/html/images/input_panel_NOMAL.png differ
index 9546cdf..2eaf332 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_NUMBER.png and b/org.tizen.ui.practices/html/images/input_panel_NUMBER.png differ
index cbf2091..e690f41 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_NUMBERONLY.png and b/org.tizen.ui.practices/html/images/input_panel_NUMBERONLY.png differ
index b4bfd96..d54b3fe 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_PASSWORD.png and b/org.tizen.ui.practices/html/images/input_panel_PASSWORD.png differ
index 8cd6ede..46da9d6 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_PHONENUMBER.png and b/org.tizen.ui.practices/html/images/input_panel_PHONENUMBER.png differ
index 53fa87b..538d79c 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_TERMINAL.png and b/org.tizen.ui.practices/html/images/input_panel_TERMINAL.png differ
index b839a30..5379a6b 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/input_panel_URL.png and b/org.tizen.ui.practices/html/images/input_panel_URL.png differ
index 9009f87..97b1602 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/return_key_JOIN.png and b/org.tizen.ui.practices/html/images/return_key_JOIN.png differ
index e05c21e..b6dee39 100644 (file)
Binary files a/org.tizen.ui.practices/html/images/return_key_SEND.png and b/org.tizen.ui.practices/html/images/return_key_SEND.png differ
index ea7cbff..d63106e 100644 (file)
@@ -34,7 +34,7 @@
                                <li><a href="web/tau/notepad_w.htm">Creating a Notepad UI Application</a></li>
                                <li><a href="web/tau/circular_ui_ww.htm">Applications for Circular UI</a>
                                        <ul>
-                                               <li><a href="web/tau/tau_rotary_ww.htm">Handling Rotary Event</a></li>
+                        <li><a href="web/tau/tau_rotary_ww.htm">Handling Rotary Events</a></li>
                                                <li><a href="web/tau/helper_ww.htm">Using the Helper Script</a></li>
                                                <li><a href="web/tau/list_ww.htm">Creating Snap Lists</a></li>  
                                                <li><a href="web/tau/header_ww.htm">Creating Expandable Headers</a></li>
index 996e769..6423eb4 100644 (file)
@@ -107,7 +107,7 @@ eext_rotary_object_event_activated_set(circle_scroller, EINA_TRUE);
        <li><span style="font-family: Courier New,Courier,monospace">default</span>: Default circle item that draws the vertical scroller.</li>
        <li><span style="font-family: Courier New,Courier,monospace">vertical,scroll,bg</span>: Vertical scroller background circle item.</li>
        <li><span style="font-family: Courier New,Courier,monospace">horizontal,scroll,bar</span>: Horizontal scroller circle item.</li>
-       <li><span style="font-family: Courier New,Courier,monospace">horizontal,scroll,bg</span> : Horizontal scroller background circle item.</li>
+       <li><span style="font-family: Courier New,Courier,monospace">horizontal,scroll,bg</span>: Horizontal scroller background circle item.</li>
 </ul></li></ul>
 
 <p>For more information, see <a href="component_circ_object_wn.htm">Circle Object</a> and the <a href="../../../../org.tizen.native.wearable.apireference/group__CAPI__EFL__EXTENSION__CIRCLE__OBJECT__MODULE.html">Efl Extension Circle Object</a> API.</p>
index ac0059c..4f3beb1 100644 (file)
@@ -123,7 +123,7 @@ _help_item_pressed_cb(void *data, Evas_Object *obj, void *event_info)
 }
 </pre>
 </li>
-<li>You can disable an item in the toobar. A disabled item does not receive input and, if the theme supports it, is themed differently (usually greyed out).
+<li>You can disable an item in the toolbar. A disabled item does not receive input and, if the theme supports it, is themed differently (usually greyed out).
 <p>To disable an item:</p>
 <pre class="prettyprint">
 elm_object_item_disabled_set(help_it, EINA_TRUE);
index 7acda3d..226953b 100644 (file)
@@ -445,7 +445,7 @@ elm_layout_signal_callback_add(layout, &quot;*&quot;, &quot;*&quot;, _signal_cb,
 static void 
 _signal_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
 {
-&nbsp;&nbsp;&nbsp;printf(&quot;Info received from layout : %s %s\n&quot;, emission, source);
+&nbsp;&nbsp;&nbsp;printf(&quot;Info received from layout: %s %s\n&quot;, emission, source);
 }
 </pre>
 
index 350ae13..0c9f50b 100644 (file)
@@ -127,7 +127,7 @@ static Evas_Object *create_win(const char *name)
 #include &lt;efl_util.h&gt;
 #include &lt;dlog.h&gt;
 
-void get_notification_level (Evas_Object *eo)
+void get_notification_level(Evas_Object *eo)
 {
 &nbsp;&nbsp;&nbsp;efl_util_error_e error;
 &nbsp;&nbsp;&nbsp;efl_util_notification_level_e  notification_level;
@@ -135,7 +135,7 @@ void get_notification_level (Evas_Object *eo)
 &nbsp;&nbsp;&nbsp;if (!eo) return;
 
 &nbsp;&nbsp;&nbsp;// Get the window notification level
-&nbsp;&nbsp;&nbsp;error = efl_util_get_notification_window_level (eo, &amp;notification_level);
+&nbsp;&nbsp;&nbsp;error = efl_util_get_notification_window_level(eo, &amp;notification_level);
 
 &nbsp;&nbsp;&nbsp;// Check the return value
 &nbsp;&nbsp;&nbsp;if (error== EFL_UTIL_ERROR_NONE)
index 362b985..b09fdae 100644 (file)
@@ -264,7 +264,7 @@ evas_object_smart_callback_add(panes, &quot;press&quot;, _press_cb, panes);
 static void
 _unpress_cb(void *data, Evas_Object *obj, void *event_info)
 {
-&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, PANES_TAG, &quot;Unpressed, size : %f\n&quot;,
+&nbsp;&nbsp;&nbsp;dlog_print(DLOG_INFO, PANES_TAG, &quot;Unpressed, size: %f\n&quot;,
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elm_panes_content_left_size_get(obj));
 }
 
index 5c9baa1..5f4d1ca 100644 (file)
@@ -72,7 +72,7 @@ int i;
 result_arr = eina_str_split(names, &quot;:&quot;, 0);
 // Printing the result
 for (i = 0; result_arr[i]; i++)
-&nbsp;&nbsp;&nbsp;printf(&quot;Nick : %s\n&quot;, result_arr[i]);
+&nbsp;&nbsp;&nbsp;printf(&quot;Nick: %s\n&quot;, result_arr[i]);
 // Remember to free memory
 free(arr[0]);
 free(arr);
@@ -168,7 +168,7 @@ Eina_Bool myfunction(char *param)
 &nbsp;&nbsp;&nbsp;// If my param is NULL, EINA_SAFETY_ON_NULL_RETURN calls &quot;return&quot;
 &nbsp;&nbsp;&nbsp;EINA_SAFETY_ON_NULL_RETURN(param);
 
-&nbsp;&nbsp;&nbsp;printf(&quot;My pram is : %s\n&quot;, param);
+&nbsp;&nbsp;&nbsp;printf(&quot;My param is: %s\n&quot;, param);
 
 &nbsp;&nbsp;&nbsp;return EINA_TRUE;
 } 
@@ -181,7 +181,7 @@ Eina_Bool void myfunction(char *param)
 {
 &nbsp;&nbsp;&nbsp;// If the parameter is NULL, return EINA_FALSE;
 &nbsp;&nbsp;&nbsp;EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE);
-&nbsp;&nbsp;&nbsp;printf(&quot;My pram is : %s\n&quot;, param);
+&nbsp;&nbsp;&nbsp;printf(&quot;My param is: %s\n&quot;, param);
 
 &nbsp;&nbsp;&nbsp;return EINA_TRUE;
 }
@@ -198,7 +198,7 @@ Eina_Bool void myfunction(char *param)
 {
 &nbsp;&nbsp;&nbsp;// If the parameter is NULL we return EINA_FALSE;
 &nbsp;&nbsp;&nbsp;EINA_SAFETY_ON_NULL_GOTO(param, isnullcb);
-&nbsp;&nbsp;&nbsp;printf(&quot;My pram is : %s\n&quot;, param);
+&nbsp;&nbsp;&nbsp;printf(&quot;My param is: %s\n&quot;, param);
 
 &nbsp;&nbsp;&nbsp;return EINA_TRUE;
 }
index 10a0d7f..ddb52f1 100644 (file)
 </li>
 <li>Store the data of the selected range: 
 <pre class="prettyprint">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.clipboardData.setData(&quot;text/plain&quot;, range);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evLogBox.innerHTML = &quot;Event log : copy&quot;;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evLogBox.innerHTML = &quot;Event log: copy&quot;;
 &nbsp;&nbsp;&nbsp;};</pre>
 </li>
 <li>When the <span style="font-family: Courier New,Courier,monospace">paste</span> event occurs, stop the system clipboard basic operation and paste the clipboard data to the target using the <span style="font-family: Courier New,Courier,monospace">getData()</span> method:
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.preventDefault();
 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pasteTarget.innerHTML = e.clipboardData.getData(&quot;text/plain&quot;);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evLogBox.innerHTML = &quot;Event log : paste&quot;;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evLogBox.innerHTML = &quot;Event log: paste&quot;;
 &nbsp;&nbsp;&nbsp;};  
 &lt;/script&gt;
 </pre>
index 788a538..53f6eb0 100644 (file)
@@ -12,7 +12,7 @@
                <topic href="html/web/tau/ui_component_w.htm" label="UI Components"></topic>
                <topic href="html/web/tau/notepad_w.htm" label="Creating a Notepad UI Application"></topic>
                <topic href="html/web/tau/circular_ui_ww.htm" label="Applications for Circular UI">
-                       <topic href="web/tau/tau_rotary_ww.htm" label="Handling Rotary Event"></topic>
+            <topic href="html/web/tau/tau_rotary_ww.htm" label="Handling Rotary Events"></topic>
                        <topic href="html/web/tau/helper_ww.htm" label="Using the Helper Script"></topic>
                        <topic href="html/web/tau/list_ww.htm" label="Creating Snap Lists"></topic>
                        <topic href="html/web/tau/header_ww.htm" label="Creating Expandable Headers"></topic>