From: Piotr Dabrowski Date: Wed, 2 Oct 2013 08:19:06 +0000 (+0200) Subject: application sources from tizen_2.2 X-Git-Url: http://review.tizen.org/git/?p=apps%2Fweb%2Fsample%2FMediaContent.git;a=commitdiff_plain;h=f123e12274f390007a8e9b2b12829d52beb6496d application sources from tizen_2.2 Change-Id: I0e7fbd2475c2d81d387bbb0f487ff12a7e0ee6e7 --- diff --git a/description.xml b/description.xml new file mode 100755 index 0000000..e84e121 --- /dev/null +++ b/description.xml @@ -0,0 +1,10 @@ + + + + MediaContent + 0.1.4 + mediacontent-snapshot.png + + A tutorial sample application demonstrating the tizen mediacontent device API usage. + + diff --git a/description.xsl b/description.xsl new file mode 100755 index 0000000..1f4f57f --- /dev/null +++ b/description.xsl @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + +
+ + + +
+ Type: JavaScript +

+ +

+
+ + + + + +
+ + +
+ +
diff --git a/mediacontent-snapshot.png b/mediacontent-snapshot.png new file mode 100644 index 0000000..0d5d8d4 Binary files /dev/null and b/mediacontent-snapshot.png differ diff --git a/project/.project b/project/.project new file mode 100644 index 0000000..210a14d --- /dev/null +++ b/project/.project @@ -0,0 +1,50 @@ + + + MediaContent + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + json.validation.builder + + + + + org.tizen.web.jslint.nature.JSLintBuilder + + + + + org.tizen.web.editor.css.nature.CSSBuilder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.tizen.web.project.builder.WebBuilder + + + usedLibraryType + WebUIFramework + + + + + + json.validation.nature + org.tizen.web.jslint.nature.JSLintNature + org.tizen.web.editor.css.nature.CSSNature + org.eclipse.wst.jsdt.core.jsNature + org.tizen.web.project.builder.WebNature + + diff --git a/project/AUTHORS b/project/AUTHORS new file mode 100755 index 0000000..9dd159f --- /dev/null +++ b/project/AUTHORS @@ -0,0 +1 @@ +Seoghyun Kang diff --git a/project/LICENSE.Flora b/project/LICENSE.Flora new file mode 100644 index 0000000..4a0af40 --- /dev/null +++ b/project/LICENSE.Flora @@ -0,0 +1,206 @@ +Flora License + +Version 1.1, April, 2013 + +http://floralicense.org/license/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and +all other entities that control, are controlled by, or are +under common control with that entity. For the purposes of +this definition, "control" means (i) the power, direct or indirect, +to cause the direction or management of such entity, +whether by contract or otherwise, or (ii) ownership of fifty percent (50%) +or more of the outstanding shares, or (iii) beneficial ownership of +such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation source, +and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, +made available under the License, as indicated by a copyright notice +that is included in or attached to the work (an example is provided +in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, +that is based on (or derived from) the Work and for which the editorial +revisions, annotations, elaborations, or other modifications represent, +as a whole, an original work of authorship. For the purposes of this License, +Derivative Works shall not include works that remain separable from, +or merely link (or bind by name) to the interfaces of, the Work and +Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original +version of the Work and any modifications or additions to that Work or +Derivative Works thereof, that is intentionally submitted to Licensor +for inclusion in the Work by the copyright owner or by an individual or +Legal Entity authorized to submit on behalf of the copyright owner. +For the purposes of this definition, "submitted" means any form of +electronic, verbal, or written communication sent to the Licensor or +its representatives, including but not limited to communication on +electronic mailing lists, source code control systems, and issue +tracking systems that are managed by, or on behalf of, the Licensor +for the purpose of discussing and improving the Work, but excluding +communication that is conspicuously marked or otherwise designated +in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +"Tizen Certified Platform" shall mean a software platform that complies +with the standards set forth in the Tizen Compliance Specification +and passes the Tizen Compliance Tests as defined from time to time +by the Tizen Technical Steering Group and certified by the Tizen +Association or its designated agent. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work +solely as incorporated into a Tizen Certified Platform, where such +license applies only to those patent claims licensable by such +Contributor that are necessarily infringed by their Contribution(s) +alone or by combination of their Contribution(s) with the Work solely +as incorporated into a Tizen Certified Platform to which such +Contribution(s) was submitted. If You institute patent litigation +against any entity (including a cross-claim or counterclaim +in a lawsuit) alleging that the Work or a Contribution incorporated +within the Work constitutes direct or contributory patent infringement, +then any patent licenses granted to You under this License for that +Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +Work or Derivative Works thereof pursuant to the copyright license +above, in any medium, with or without modifications, and in Source or +Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works + a copy of this License; and + 2. You must cause any modified files to carry prominent notices stating + that You changed the files; and + 3. You must retain, in the Source form of any Derivative Works that + You distribute, all copyright, patent, trademark, and attribution + notices from the Source form of the Work, excluding those notices + that do not pertain to any part of the Derivative Works; and + 4. If the Work includes a "NOTICE" text file as part of its distribution, + then any Derivative Works that You distribute must include a readable + copy of the attribution notices contained within such NOTICE file, + excluding those notices that do not pertain to any part of + the Derivative Works, in at least one of the following places: + within a NOTICE text file distributed as part of the Derivative Works; + within the Source form or documentation, if provided along with the + Derivative Works; or, within a display generated by the Derivative Works, + if and wherever such third-party notices normally appear. + The contents of the NOTICE file are for informational purposes only + and do not modify the License. You may add Your own attribution notices + within Derivative Works that You distribute, alongside or as an addendum + to the NOTICE text from the Work, provided that such additional attribution + notices cannot be construed as modifying the License. You may add Your own + copyright statement to Your modifications and may provide additional or + different license terms and conditions for use, reproduction, or + distribution of Your modifications, or for any such Derivative Works + as a whole, provided Your use, reproduction, and distribution of + the Work otherwise complies with the conditions stated in this License + and your own copyright statement or terms and conditions do not conflict + the conditions stated in the License including section 3. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Flora License to your work + +To apply the Flora License to your work, attach the following +boilerplate notice, with the fields enclosed by brackets "[]" +replaced with your own identifying information. (Don't include +the brackets!) The text should be enclosed in the appropriate +comment syntax for the file format. We also recommend that a +file or class name and description of purpose be included on the +same "printed page" as the copyright notice for easier +identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Flora License, Version 1.1 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://floralicense.org/license/ + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/project/NOTICE b/project/NOTICE new file mode 100644 index 0000000..99c4f72 --- /dev/null +++ b/project/NOTICE @@ -0,0 +1,4 @@ +Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. All rights reserved. +Except as noted, this software is licensed under Flora License, Version 1.1 +Please, see the LICENSE.Flora file for Flora License, Version 1.1 terms and conditions. + diff --git a/project/config.xml b/project/config.xml new file mode 100755 index 0000000..e2c8485 --- /dev/null +++ b/project/config.xml @@ -0,0 +1,11 @@ + + + + + + Media Content + + + + + diff --git a/project/css/style.css b/project/css/style.css new file mode 100755 index 0000000..5bb673f --- /dev/null +++ b/project/css/style.css @@ -0,0 +1,7 @@ +.storagetypeHighlight { + color: red !important; +} + +#items-title { + display: block; +} diff --git a/project/icon.png b/project/icon.png new file mode 100755 index 0000000..9765b1b Binary files /dev/null and b/project/icon.png differ diff --git a/project/index.html b/project/index.html new file mode 100644 index 0000000..2ad46b3 --- /dev/null +++ b/project/index.html @@ -0,0 +1,81 @@ + + + + + + + Media content + + + + + + + + + +
+
+

Media content

+
+
+
    +
  • Storage type
  • +
  • + ALL +
  • +
  • + INTERNAL +
  • +
  • + EXTERNAL +
  • +
  • Folders
  • +
+
    +
+
+
+ +
+
+

+
+
+
    +
  • Item type
  • +
  • + ALL + +
  • +
  • + IMAGE + +
  • +
  • + VIDEO + +
  • +
  • + AUDIO + +
  • +
  • Items
  • +
+
+
+ +
+
+

Details

+
+
+
    +
+
+
+ + + diff --git a/project/js/main.js b/project/js/main.js new file mode 100755 index 0000000..c152946 --- /dev/null +++ b/project/js/main.js @@ -0,0 +1,252 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.1 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var gMediaSource, gMediaFolders, gMediaItems, gItemId, gFolderId, +gMediaType = "ALL", gStorageType, gFlagInit, gSpan = $(''); + +$(document).delegate("#main", "pageinit", function() { + var highlightStoragetype = function (storageType) { + $("#folder-list li").each(function(){ + $(this).removeClass("storagetypeHighlight"); + }); + if (storageType == "ALL") $("#folder-type-all").addClass("storagetypeHighlight"); + else if (storageType == "INTERNAL") $("#folder-type-internal").addClass("storagetypeHighlight"); + else if (storageType == "EXTERNAL") $("#folder-type-external").addClass("storagetypeHighlight"); + }; + + gFlagInit = false; + + gStorageType = gMediaType; + + $("#folder-type-all").bind("click", function() { + showFolderList("ALL"); + highlightStoragetype("ALL"); + }); + + $("#folder-type-internal").bind("click", function() { + showFolderList("INTERNAL"); + highlightStoragetype("INTERNAL"); + }); + + $("#folder-type-external").bind("click", function() { + showFolderList("EXTERNAL"); + highlightStoragetype("EXTERNAL"); + }); + + onContentChange(); +}); + +$(document).delegate("#items", "pageinit", function() { + $("#items").bind("pagebeforeshow", showItemList); + + $("#items-list input").bind("change", function() { + if ($(this).prop("checked") == true) { + gMediaType = $(this).attr("value"); + getFolderItems(gFolderId, gMediaType); + } + }); + + $("#items-list").delegate("li", "click", function() { + var id = $(this).data("id"); + if (id != null) { + gItemId = Number(id); + $.mobile.changePage("#detail"); + } + return false; + }); +}); + +$(document).delegate("#detail", "pageinit", function() { + $("#detail").bind("pagebeforeshow", showMediaDetail); +}); + +$(window).on('tizenhwkey', function (e) { + if (e.originalEvent.keyName === "back") { + if ($.mobile.activePage.attr('id') === 'main') { + tizen.application.getCurrentApplication().exit(); + } else { + history.back(); + } + } +}); + +function setLastStorage(storageType) { + gStorageType = storageType; +} + +function makeListItem(id, mainText, subText) { + return '
  • ' + + stripTags(mainText) + + '' + + stripTags(subText) + + '
  • '; +} + +function stripTags(str) { + return gSpan.text(str).html(); +} + +function getFolders (storageType) { + try { + gMediaSource = tizen.content; + gMediaSource.getDirectories(onGetFoldersSuccess, onGetFoldersError); + } catch (exc) { + alert("getLocalMediaSource exc:" + exc.message); + } + + function onGetFoldersSuccess(folders) { + $("#file-list").delegate("li", "vclick", function() { + var id = $(this).data("id"); + if (id != null) { + getFolderItems(Number(id), gMediaType); + } + return false; + }); + + gMediaFolders = folders; + showFolderList(storageType); + } + + function onGetFoldersError(err) { + alert("GetFolders failed:" + err.message); + } + + gFlagInit = true; +} + +function onContentChange() { + tizen.systeminfo.addPropertyValueChangeListener('STORAGE', function() { + getFolders(gStorageType); + }); +} + +function showFolderList(storageType) { + setLastStorage(storageType); + + if(gFlagInit == false){ + getFolders(storageType); + } + else{ + var str = '', + gMF = gMediaFolders.length, + i; + for ( i = 0; i < gMF; i++) { + if (storageType == "ALL" || storageType == gMediaFolders[i].storageType) { + str += makeListItem(i, gMediaFolders[i].title, gMediaFolders[i].directoryURI); + } + } + $("#file-list").empty().hide().append(str).listview("refresh").show(); + } +} + + +function showItemList() { + var str = '', title, i, gMediaLen; + try { + title = gMediaFolders[gFolderId].title; + $("#items-title").text(gFolderId == null ? "All" : title.toString()); + + gMediaLen = gMediaItems.length; + for (i = 0; i < gMediaLen; i += 1) { + str += makeListItem(i, gMediaItems[i].title, + gMediaItems[i].type + " Rating: " + gMediaItems[i].rating); + } + + $("#items-list > li[data-id]").remove(); + $("#items-list").append(str).trigger("create").listview("refresh"); + } catch (exc) { + gMediaType = gStorageType = "ALL"; + $("#folder-list li").removeClass("storagetypeHighlight"); + $("#folder-type-all").addClass("storagetypeHighlight"); + $.mobile.changePage("#main"); + } +} + +function getFolderItems(folderId, mediaType) { + function onFindItemsSuccess(items) { + gMediaItems = items; + gFolderId = folderId; + gMediaType = mediaType; + + if($.mobile.activePage.attr("id") == "items") { + showItemList(); + } else { + $.mobile.changePage("#items"); + } + } + + function onFindItemsError(err) { + alert("getFolderItems findItems failed: " + err.message); + } + + try { + gMediaSource.find(onFindItemsSuccess, onFindItemsError, + folderId == null ? null : gMediaFolders[folderId].id, + mediaType == "ALL" ? null : new tizen.AttributeFilter("type", "EXACTLY", mediaType), + new tizen.SortMode("title", "ASC")); + } catch (exc) { + //alert("findItems exc:" + exc.message); + } +} + +function makeCommonPropertiesListItems(item) { + return makeListItem(null, "Title", item.title) + + makeListItem(null, "Size", item.size + " Bytes") + + makeListItem(null, "Type", item.type) + + makeListItem(null, "Identifier", item.id) + + makeListItem(null, "Item URI", item.contentURI) + + makeListItem(null, "MIME type", item.mimeType) + + makeListItem(null, "Modified date", item.modifiedDate.toLocaleString()) + + makeListItem(null, "Description", item.description) + + makeListItem(null, "Rating", item.rating); +} + +function showMediaDetail() { + var str, item = gMediaItems[gItemId]; + if (item.type == "IMAGE") { + str = makeCommonPropertiesListItems(item) + + makeListItem(null, "Width", item.width) + + makeListItem(null, "Height", item.height); + if (item.geolocation) { + str += makeListItem(null, "Latitude", item.geolocation.latitude) + + makeListItem(null, "Longitude", item.geolocation.longitude); + } + } else if (item.type == "VIDEO") { + str = makeCommonPropertiesListItems(item) + + makeListItem(null, "Width", item.width) + + makeListItem(null, "Height", item.height) + + makeListItem(null, "Album", item.album) + + makeListItem(null, "Artist", item.artists[0]) + + makeListItem(null, "Duration", item.duration + " Milliseconds"); + } else if (item.type == "AUDIO") { + str = makeCommonPropertiesListItems(item) + + makeListItem(null, "Album", item.album) + + makeListItem(null, "Artist", item.artists[0]) + + makeListItem(null, "Composer", item.composers[0]) + + makeListItem(null, "Genre", item.genres[0]) + + makeListItem(null, "Copyright", item.copyright) + + makeListItem(null, "Bitrate", item.bitrate + " Bps") + + makeListItem(null, "Track number", item.trackNumber) + + makeListItem(null, "Duration", item.duration + " Milliseconds"); + } else { + str = makeCommonPropertiesListItems(item); + } + + $("#media-details").html(str).trigger("create").listview("refresh"); +} + diff --git a/tizen-app-template.xml b/tizen-app-template.xml new file mode 100755 index 0000000..99ed7e1 --- /dev/null +++ b/tizen-app-template.xml @@ -0,0 +1,12 @@ + + + MediaContent + TIZEN + + description.xml + + + + + + diff --git a/tizen_32.png b/tizen_32.png new file mode 100644 index 0000000..61f35c0 Binary files /dev/null and b/tizen_32.png differ diff --git a/tizen_64.png b/tizen_64.png new file mode 100644 index 0000000..b188083 Binary files /dev/null and b/tizen_64.png differ