author | hgs |
Tue, 29 Jun 2010 00:46:29 -0400 | |
changeset 3 | 0954f5dd2cd0 |
parent 0 | 1450b09d0cfd |
child 9 | b39122337a00 |
permissions | -rw-r--r-- |
3 | 1 |
var __prevOpenedBookmarkControl = null; |
2 |
var __previousSortEle = null; |
|
3 |
var __bookmarkCount= 0; |
|
4 |
var __bookmarkEditElement= null; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
5 |
var __dragendFlag = false; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
6 |
// Set to the LongPress object that is currently waiting for activation, |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
7 |
// ie. it has gotten a mouse-down event and has its timer running. |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
8 |
var __currentLongPress; |
3 | 9 |
var __cancelLinkOpening = false; |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
10 |
|
3 | 11 |
function _enableSorting(ele) { |
12 |
||
13 |
ele.className = 'sort'; |
|
14 |
||
15 |
var evt = document.createEvent("MouseEvents"); |
|
16 |
evt.initMouseEvent("mousedown", true, true, window, |
|
17 |
0, 0, 0, gInitialX, gInitialY, false, false, false, false, 0, null); |
|
18 |
var canceled = !ele.dispatchEvent(evt); |
|
19 |
||
20 |
views.WebView.gesturesEnabled = false; |
|
21 |
||
22 |
ele.childNodes[0].className = 'controlInSort'; |
|
23 |
ele.childNodes[0].childNodes[0].className = 'collapsedSort'; |
|
24 |
||
25 |
__sortingEnabled = true; |
|
26 |
__sortEleOffsetTop = ele.offsetTop; |
|
27 |
__previousSortEle = ele; |
|
28 |
||
29 |
ele.className = 'highlight'; |
|
30 |
||
31 |
} |
|
32 |
||
33 |
function _disableSorting(ele) { |
|
34 |
||
35 |
views.WebView.gesturesEnabled = true; |
|
36 |
||
37 |
ele.className = 'no-sort'; |
|
38 |
ele.childNodes[0].className = 'controlIn'; |
|
39 |
ele.childNodes[0].childNodes[0].className = 'collapsed'; |
|
40 |
||
41 |
__sortingEnabled = false; |
|
42 |
__sortEleOffsetTop = 0; |
|
43 |
__previousSortEle = null; |
|
44 |
} |
|
45 |
||
46 |
function _dragInit() |
|
47 |
{ |
|
48 |
$("#bookmarkListTree").sortable({ |
|
49 |
placeholder: 'ui-state-highlight', |
|
50 |
axis:'y', |
|
51 |
cancel : 'li.no-sort', |
|
52 |
scrollSensitivity : 40, |
|
53 |
scrollSpeed : 40, |
|
54 |
start: function(event, ui) { |
|
55 |
__dragendFlag = true; |
|
56 |
}, |
|
57 |
update: function(event, ui) { |
|
58 |
var sortedItemId = ui.item[0].id; |
|
59 |
var _a = $('#bookmarkListTree').sortable('toArray'); |
|
60 |
for (var i=0; i<_a.length; i++) |
|
61 |
{ |
|
62 |
if (sortedItemId == _a[i]) |
|
63 |
{ |
|
64 |
var li = document.getElementById(sortedItemId); |
|
65 |
_disableSorting(li); |
|
66 |
||
67 |
var div = li.childNodes[1]; |
|
68 |
window.bookmarksManager.reorderBokmarks(div.childNodes[0].firstChild.nodeValue,i); |
|
69 |
} |
|
70 |
} |
|
71 |
} |
|
72 |
}); |
|
73 |
||
74 |
$("#bookmarkListTree").sortable('enable'); |
|
75 |
$("#bookmarkListTree").disableSelection(); |
|
76 |
} |
|
77 |
||
78 |
function _longPress(ele) |
|
79 |
{ |
|
80 |
if (__sortingEnabled) |
|
81 |
{ |
|
82 |
_disableSorting(__previousSortEle) |
|
83 |
return false; |
|
84 |
} |
|
85 |
||
86 |
if(__prevOpenedBookmarkControl) |
|
87 |
_bookmarkHideControl(__prevOpenedBookmarkControl); |
|
88 |
||
89 |
_enableSorting(ele); |
|
90 |
} |
|
91 |
||
92 |
function _longPressStarted(lp) |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
93 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
94 |
// Remember the current LongPress object so we can cancel it if scrolling |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
95 |
// starts. |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
96 |
__currentLongPress = lp; |
3 | 97 |
__cancelLinkOpening = false; |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
98 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
99 |
|
3 | 100 |
function _handlePanStarted(type) |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
101 |
{ |
3 | 102 |
__cancelLinkOpening = true; |
103 |
||
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
104 |
// Scrolling started, cancel the LongPress. |
3 | 105 |
if (__currentLongPress != undefined) { |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
106 |
__currentLongPress.cancel(); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
107 |
__currentLongPress = undefined; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
108 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
109 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
110 |
|
3 | 111 |
|
112 |
function _bookmarkHideControl(ele){ |
|
113 |
ele.childNodes[0].className = 'controlIn'; |
|
114 |
ele.childNodes[0].childNodes[0].className = 'collapsed'; |
|
115 |
ele.childNodes[1].style.width = (parseInt(window.innerWidth)-70)+"px"; |
|
116 |
} |
|
117 |
||
118 |
function _bookmarkToggleControls(ele){ |
|
119 |
try { |
|
120 |
||
121 |
if (__sortingEnabled && ele.parentNode.parentNode!=__previousSortEle) |
|
122 |
{ |
|
123 |
_disableSorting(__previousSortEle) |
|
124 |
return false; |
|
125 |
} |
|
126 |
else if (__sortingEnabled && (ele.parentNode.parentNode==__previousSortEle)) |
|
127 |
{ |
|
128 |
return false; |
|
129 |
} |
|
130 |
||
131 |
ele.parentNode.className = (ele.parentNode.className == 'controlIn') ? 'controlOut' : 'controlIn'; |
|
132 |
if (ele.parentNode.className == 'controlIn') { |
|
133 |
ele.className = 'collapsed'; |
|
134 |
ele.parentNode.parentNode.childNodes[1].style.width = (parseInt(window.innerWidth)-70)+"px"; |
|
135 |
} |
|
136 |
else { |
|
137 |
ele.className = 'expanded'; |
|
138 |
ele.parentNode.parentNode.childNodes[1].style.width = (parseInt(window.innerWidth)-220)+"px"; |
|
139 |
} |
|
140 |
||
141 |
if (__prevOpenedBookmarkControl != null && __prevOpenedBookmarkControl != ele.parentNode.parentNode) |
|
142 |
_bookmarkHideControl(__prevOpenedBookmarkControl); |
|
143 |
||
144 |
}catch(e) { alert(e); } |
|
145 |
||
146 |
__prevOpenedBookmarkControl = ele.parentNode.parentNode; |
|
147 |
} |
|
148 |
||
149 |
function _addNewBookmark(bmtitle,bmurl) |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
150 |
{ |
3 | 151 |
if(__prevOpenedBookmarkControl) |
152 |
_bookmarkHideControl(__prevOpenedBookmarkControl); |
|
153 |
||
154 |
var ul=document.getElementById('bookmarkListTree'); |
|
155 |
for (x=0; x< ul.childNodes.length; x++) |
|
156 |
{ |
|
157 |
var li_element= ul.childNodes[x]; |
|
158 |
var bm_title= li_element.childNodes[1].childNodes[0].innerText; |
|
159 |
||
160 |
if(bmtitle.toLowerCase() == bm_title.toLowerCase()) |
|
161 |
{ |
|
162 |
ul.removeChild(li_element); |
|
163 |
break; |
|
164 |
} |
|
165 |
||
166 |
} |
|
167 |
||
168 |
if(__previousSortEle != null) |
|
169 |
_disableSorting(__previousSortEle) |
|
170 |
||
171 |
__bookmarkCount += 1; |
|
172 |
//create element and add it to bookmark view |
|
173 |
var ul=document.getElementById('bookmarkListTree'); |
|
174 |
var dbgTitle = bmtitle.replace(/'/g, "'"); |
|
175 |
dbgTitle = dbgTitle.replace(/"/g, """); |
|
176 |
var li = _createBookmarkElement(dbgTitle,bmurl,__bookmarkCount); |
|
177 |
li.className = 'no-sort'; |
|
178 |
ul.insertBefore(li, ul.childNodes[0]); |
|
179 |
ul.childNodes[0].focus(); |
|
180 |
new LongPress(li.id, _longPress, _longPressStarted); |
|
181 |
||
182 |
$('html, body').animate({ |
|
183 |
scrollTop: 0}, 1000); |
|
184 |
} |
|
185 |
||
186 |
function _editBookmark(bmtitle,bmurl) |
|
187 |
{ |
|
188 |
if(__prevOpenedBookmarkControl) |
|
189 |
_bookmarkHideControl(__prevOpenedBookmarkControl); |
|
190 |
||
191 |
var ul=document.getElementById('bookmarkListTree'); |
|
192 |
for (x=0; x< ul.childNodes.length; x++) |
|
193 |
{ |
|
194 |
var li_element= ul.childNodes[x]; |
|
195 |
var bm_title= li_element.childNodes[1].childNodes[0].innerText; |
|
196 |
||
197 |
if(bmtitle.toLowerCase() == bm_title.toLowerCase() && |
|
198 |
__bookmarkEditElement.childNodes[1].childNodes[0].innerText.toLowerCase() != bmtitle.toLowerCase()) |
|
199 |
{ |
|
200 |
ul.removeChild(li_element); |
|
201 |
break; |
|
202 |
} |
|
203 |
||
204 |
} |
|
205 |
__bookmarkEditElement.childNodes[1].childNodes[0].innerText = bmtitle; |
|
206 |
__bookmarkEditElement.childNodes[1].childNodes[2].innerText = bmurl; |
|
207 |
} |
|
208 |
||
209 |
function _launchEditBookmark(r,bmtitle,bmurl) |
|
210 |
{ |
|
211 |
__bookmarkEditElement = r.parentNode.parentNode; |
|
212 |
window.bookmarksManager.launchEditBookmark(bmtitle,bmurl); |
|
213 |
} |
|
214 |
||
215 |
function _deleteBookmark(r,bmtitle) |
|
216 |
{ |
|
217 |
window.bookmarksManager.deleteBookmark(bmtitle); |
|
218 |
//ToDo : check for error code |
|
219 |
r.parentNode.parentNode.parentNode.removeChild(r.parentNode.parentNode); |
|
220 |
||
221 |
} |
|
222 |
||
223 |
||
224 |
function _openUrl(ele, newUrl) { |
|
225 |
// DragStart & DragEnd listeners are defined at bottom |
|
226 |
if (__sortingEnabled && (ele.parentNode!=__previousSortEle)) |
|
227 |
{ |
|
228 |
_disableSorting(__previousSortEle) |
|
229 |
return false; |
|
230 |
} |
|
231 |
else if (__sortingEnabled && (ele.parentNode==__previousSortEle)) |
|
232 |
{ |
|
233 |
return false; |
|
234 |
} |
|
235 |
else if (__dragendFlag) |
|
236 |
{ |
|
237 |
__dragendFlag = false; |
|
238 |
return false; |
|
239 |
} |
|
240 |
else if(__cancelLinkOpening) |
|
241 |
{ |
|
242 |
__cancelLinkOpening = false; |
|
243 |
return false; |
|
244 |
} |
|
245 |
||
246 |
window.views.WebView.showNormalPage(); |
|
247 |
window.ViewStack.switchView( "WebView","BookmarkTreeView"); |
|
248 |
||
249 |
// Laod a page to chrome view |
|
250 |
window.views.WebView.loadUrlToCurrentPage(newUrl); |
|
251 |
views.WebView.gesturesEnabled = true; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
252 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
253 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
254 |
function _updateBookmarkViewGoemetry(displayMode) |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
255 |
{ |
3 | 256 |
try{ |
257 |
var _list = document.getElementsByClassName('Title'); |
|
258 |
for (var i=0; i<_list.length; i++){ |
|
259 |
if (_list[i].parentNode.childNodes[0].className == 'controlIn'){ |
|
260 |
_list[i].style.width = (parseInt(window.innerWidth)-70)+"px"; |
|
261 |
} |
|
262 |
else{ |
|
263 |
_list[i].style.width = (parseInt(window.innerWidth)-220)+"px"; |
|
264 |
} |
|
265 |
} |
|
266 |
}catch(e){ alert(e); } |
|
267 |
||
268 |
} |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
269 |
|
3 | 270 |
function _createBookmarkElement(bmtitle,bmfullurl,idValue) |
271 |
{ |
|
272 |
var _width = parseInt(window.innerWidth)-70; |
|
273 |
var escapedTitle = bmtitle.replace(/'/g, "\\'"); |
|
274 |
var li=document.createElement('li'); |
|
275 |
li.id = idValue; |
|
276 |
li.innerHTML = |
|
277 |
'<div class="controlIn">'+ |
|
278 |
'<div class="collapsed" onClick="javascript:_bookmarkToggleControls(this);"></div>'+ |
|
279 |
'<img src="icons/edit_btn.png" width="56" height="56" vspace="7" hspace="5" '+ |
|
280 |
'onclick="_launchEditBookmark(this,this.parentNode.parentNode.childNodes[1].childNodes[0].innerText,'+ |
|
281 |
'this.parentNode.parentNode.childNodes[1].childNodes[2].innerText)">'+ |
|
282 |
'<img src="icons/delete_btn.png" width="56" height="56" vspace="7" hspace="5" '+ |
|
283 |
'onclick="_deleteBookmark(this, \''+escapedTitle+'\')">'+ |
|
284 |
'</div>'+ |
|
285 |
'<div class="Title" style="width:'+_width+'px;" onclick="_openUrl(this,this.childNodes[2].innerText);">'+ |
|
286 |
'<span class="aTitle">'+bmtitle+'</span>'+ |
|
287 |
'<br/>'+ |
|
288 |
'<span class="aUrl">'+bmfullurl+'</span>'+ |
|
289 |
'</div>'; |
|
290 |
||
291 |
return li; |
|
292 |
} |
|
293 |
||
294 |
function _createBookmarkView() |
|
295 |
{ |
|
296 |
try |
|
297 |
{ |
|
298 |
__currentLongPress = undefined; |
|
299 |
//Get bookmarks data from database |
|
300 |
var bookmakrData = window.bookmarksManager.getBookmarksJSON(); |
|
301 |
var myObject = eval('(' + bookmakrData + ')'); |
|
302 |
var ul=document.getElementById('bookmarkListTree'); |
|
303 |
for (x=0; x<myObject.length; x++) |
|
304 |
{ |
|
305 |
var bmurl = myObject[x].urlvalue; |
|
306 |
var bmtitle = myObject[x].title; |
|
307 |
||
308 |
//create element and add it to bookmark view |
|
309 |
var li = _createBookmarkElement(bmtitle,bmurl, x); |
|
310 |
li.className = 'no-sort'; |
|
311 |
ul.appendChild(li); |
|
312 |
ul.childNodes[0].focus(); |
|
313 |
||
314 |
new LongPress(li.id, _longPress, _longPressStarted); |
|
315 |
__bookmarkCount = x; |
|
316 |
} |
|
317 |
} catch(E) { alert(E); } |
|
318 |
||
319 |
_dragInit(); |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
320 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
321 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
322 |
function launchBookmarkView() |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
323 |
{ |
3 | 324 |
try{ |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
325 |
window.chrome.aspectChanged.connect(_updateBookmarkViewGoemetry); |
3 | 326 |
window.bookmarksManager.bookmarkEntryAdded.connect(_addNewBookmark); |
327 |
window.bookmarksManager.bookmarkEntryModified.connect(_editBookmark); |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
328 |
|
3 | 329 |
// Get Bookmarks from the database |
330 |
_createBookmarkView(); |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
331 |
|
3 | 332 |
// Watch for the start of scrolling in the view so we can cancel the |
333 |
// long presses to prevent them from interfere with scrolling. Otherwise |
|
334 |
// the long press callback will fire and trigger sortable mode. |
|
335 |
views.WebView.startingPanGesture.connect(_handlePanStarted); |
|
336 |
||
337 |
}catch(e){ alert(e); } |
|
338 |
} |