[Mediacontent]update Mediacontent(tizen_2.1)
[samples/web/Mediacontent.git] / js / main.js
1 /*
2  *      Copyright 2012  Samsung Electronics Co., Ltd
3  *
4  *      Licensed under the Flora License, Version 1.1 (the "License");
5  *      you may not use this file except in compliance with the License.
6  *      You may obtain a copy of the License at
7  *
8  *              http://floralicense.org/license
9  *
10  *      Unless required by applicable law or agreed to in writing, software
11  *      distributed under the License is distributed on an "AS IS" BASIS,
12  *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *      See the License for the specific language governing permissions and
14  *      limitations under the License.
15  */
16
17 var gMediaSource, gMediaFolders, gMediaItems, gItemId, gFolderId, gMediaType = "ALL";
18 var flagInit;
19
20 $(document).delegate("#main", "pageinit", function() {
21         flagInit = false;
22
23         $("#main .ui-btn-back").bind("vclick", function() {
24                 tizen.application.getCurrentApplication().exit();
25                 return false;
26         });
27
28         $("#folder-type-all").bind("vclick", function() {
29                 showFolderList("ALL");
30                 $("#folder-type-all").css('color','red');
31                 $("#folder-type-internal").css('color','black');
32                 $("#folder-type-external").css('color','black');
33         });
34
35         $("#folder-type-internal").bind("vclick", function() {
36                 showFolderList("INTERNAL");
37                 $("#folder-type-all").css('color','black');
38                 $("#folder-type-internal").css('color','red');
39                 $("#folder-type-external").css('color','black');
40         });
41
42         $("#folder-type-external").bind("vclick", function() {
43                 showFolderList("EXTERNAL");
44                 $("#folder-type-all").css('color','black');
45                 $("#folder-type-internal").css('color','black');
46                 $("#folder-type-external").css('color','red');
47         });
48 });
49
50
51 $(document).delegate("#items", "pageinit", function() {
52         $("#items").bind("pagebeforeshow", showItemList);
53
54         $("#items-list input").bind("change", function() {
55                 if ($(this).prop("checked") == true) {
56                         gMediaType = $(this).attr("value");
57                         getFolderItems(gFolderId, gMediaType);
58                 }
59         });
60
61         $("#items-list").delegate("li", "vclick", function() {
62                 var id = $(this).data("id");
63                 if (id != null) {
64                         gItemId = Number(id);
65                         $.mobile.changePage("#detail");
66                 }
67                 return false;
68         });
69 });
70
71 $(document).delegate("#detail", "pageinit", function() {
72         $("#detail").bind("pagebeforeshow", showMediaDetail);
73 });
74
75 function makeListItem(id, mainText, subText) {
76         return '<li class="ui-li-has-multiline ui-li-text-ellipsis"'
77                         + (id == null ? '' : ' data-id="'+ id +'"')
78                         + '>'
79                         + mainText
80                         + '<span class="ui-li-text-sub">'
81                         + subText
82                         + '</span></li>';
83 }
84
85 function getFolders (storageType) {
86         try {
87                 gMediaSource = tizen.content;
88                 gMediaSource.getDirectories(onGetFoldersSuccess, onGetFoldersError);
89         } catch (exc) {
90                 alert("getLocalMediaSource exc:" + exc.message);
91         }
92
93         function onGetFoldersSuccess(folders) {
94                 $("#folder-list").delegate("li", "vclick", function() {
95                         var id = $(this).data("id");
96                         if (id != null) {
97                                 getFolderItems(Number(id), gMediaType);
98                         }
99                         return false;
100                 });
101
102                 gMediaFolders = folders;
103                 showFolderList(storageType);
104         }
105
106         function onGetFoldersError(err) {
107                 alert("GetFolders failed:" + err.message);
108         }
109
110         flagInit = true;
111 }
112
113 function showFolderList(storageType) {
114
115         if(flagInit == false){
116                 getFolders(storageType);
117         }
118         else{
119                 var str = '';
120                 for (var i = 0; i < gMediaFolders.length; i++) {
121                         if (storageType == "ALL" || storageType == gMediaFolders[i].storageType) {
122                                 str += makeListItem(i, gMediaFolders[i].title, gMediaFolders[i].folderURI);
123                         }
124                 }
125                 $("#folder-list>li[data-id]").remove();
126                 $("#folder-list").append(str).trigger("create").listview("refresh");
127         }
128 }
129
130
131 function showItemList() {
132         var str = '';
133         var title = gMediaFolders[gFolderId].title;
134
135         $("#items-title").html(gFolderId == null ? "All" : title.toString().toUpperCase());
136
137         for (var i = 0; i < gMediaItems.length; i++) {
138                 str += makeListItem(i, gMediaItems[i].title,
139                                 gMediaItems[i].type + "  Rating: " + gMediaItems[i].rating);
140         }
141
142         $("#items-list>li[data-id]").remove();
143         $("#items-list").append(str).trigger("create").listview("refresh");
144 }
145
146 function getFolderItems(folderId, mediaType) {
147         function onFindItemsSuccess(items) {
148                 gMediaItems = items;
149                 gFolderId = folderId;
150                 gMediaType = mediaType;
151
152                 if($.mobile.activePage.attr("id") == "items") {
153                         showItemList();
154                 } else {
155                         $.mobile.changePage("#items");
156                 }
157         }
158
159         function onFindItemsError(err) {
160                 alert("getFolderItems findItems failed: " + err.message);
161         }
162
163         try {
164                 gMediaSource.find(onFindItemsSuccess, onFindItemsError,
165                                 folderId == null ? null : gMediaFolders[folderId].id,
166                                 mediaType == "ALL" ? null : new tizen.AttributeFilter("type", "EXACTLY", mediaType),
167                                 new tizen.SortMode("title", "ASC"));
168         } catch (exc) {
169                 //alert("findItems exc:" + exc.message);
170         }
171 }
172
173 function makeCommonPropertiesListItems(item) {
174         return makeListItem(null, "Title", item.title)
175                         + makeListItem(null, "Size", item.size + " Bytes")
176                         + makeListItem(null, "Type", item.type)
177                         + makeListItem(null, "Identifier", item.id)
178                         + makeListItem(null, "Item URI", item.contentURI)
179                         + makeListItem(null, "MIME type", item.mimeType)
180                         + makeListItem(null, "Release date", item.releaseDate)
181                         + makeListItem(null, "Modified date", item.modifiedDate)
182                         + makeListItem(null, "Description", item.description)
183                         + makeListItem(null, "Rating", item.rating);
184 }
185
186 function showMediaDetail() {
187         var str, item = gMediaItems[gItemId];
188
189         if (item.type == "IMAGE") {
190                 str = makeCommonPropertiesListItems(item)
191                         + makeListItem(null, "Width", item.width)
192                         + makeListItem(null, "Height", item.height)
193                         + makeListItem(null, "Latitude", item.geolocation.latitude)
194                         + makeListItem(null, "Longitude", item.geolocation.longitude);
195         } else if (item.type == "VIDEO") {
196                 str = makeCommonPropertiesListItems(item)
197                         + makeListItem(null, "Width", item.width)
198                         + makeListItem(null, "Height", item.height)
199                         + makeListItem(null, "Album", item.album)
200                         + makeListItem(null, "Artist", item.artists[0])
201                         + makeListItem(null, "Duration", item.duration + " Milliseconds");
202         } else if (item.type == "AUDIO") {
203                 str = makeCommonPropertiesListItems(item)
204                         + makeListItem(null, "Album", item.album)
205                         + makeListItem(null, "Artist", item.artists[0])
206                         + makeListItem(null, "Composer", item.composers[0])
207                         + makeListItem(null, "Genre", item.genres[0])
208                         + makeListItem(null, "Copyright", item.copyright)
209                         + makeListItem(null, "Bitrate", item.bitrate + " Bps")
210                         + makeListItem(null, "Track number", item.trackNumber)
211                         + makeListItem(null, "Duration", item.duration + " Milliseconds");
212         } else {
213                 str = makeCommonPropertiesListItems(item);
214         }
215
216         $("#media-details").html(str).trigger("create").listview("refresh");
217 }
218