--- a/ginebra2/chrome/bedrockchrome/bookmarkview.superpage/bookmarkview.js Fri May 14 15:40:36 2010 +0300
+++ b/ginebra2/chrome/bedrockchrome/bookmarkview.superpage/bookmarkview.js Wed Jun 23 17:59:43 2010 +0300
@@ -1,250 +1,304 @@
-var _prevOpenedBookmarkControl = null;
-var previousSortEle = null;
-
-function BookmarkToggleControls(ele){
- try {
-
- if(_sortingEnabled && ele.parentNode.parentNode!=previousSortEle)
- {
- _sortingEnabled = false;
- previousSortEle.className = 'li.no-sort';
- views.WebView.gesturesEnabled = true;
- return false;
- }
- else if(_sortingEnabled && (ele.parentNode.parentNode==previousSortEle))
- {
- return false;
- }
-
- ele.parentNode.className = (ele.parentNode.className == 'controlIn') ? 'controlOut' : 'controlIn';
- if(ele.parentNode.className == 'controlIn') {
- ele.className = 'collapsed';
- ele.parentNode.childNodes[1].className = "collapsedIcons";
- ele.parentNode.parentNode.childNodes[1].style.width = (parseInt(window.innerWidth)-115)+"px";
- }
- else {
- ele.className = 'expanded';
- ele.parentNode.childNodes[1].className = "expandedIcons";
- ele.parentNode.parentNode.childNodes[1].style.width = (parseInt(window.innerWidth)-195)+"px";
- }
-
- if(_prevOpenedBookmarkControl != null && _prevOpenedBookmarkControl != ele)
- BookmarkHideControl(_prevOpenedBookmarkControl);
-
- }catch(e) { alert(e); }
- _prevOpenedBookmarkControl = ele;
-}
-
-
-function BookmarkHideControl(ele){
- ele.parentNode.className = 'controlIn';
- ele.className = 'collapsed';
-}
-
-
-function deleteBookmark(r,bmtitle)
-{
- window.bookmarksManager.deleteBookmark(bmtitle);
- //ToDo : check for error code
- r.parentNode.parentNode.parentNode.removeChild(r.parentNode.parentNode);
-}
-
-
-function openUrl(ele, newUrl) {
- // DragStart & DragEnd listeners are defined at bottom
- if(_sortingEnabled && (ele.parentNode!=previousSortEle))
- {
- _sortingEnabled = false;
- previousSortEle.className = 'li.no-sort';
- views.WebView.gesturesEnabled = true;
- return false;
- }
- else if(_sortingEnabled && (ele.parentNode==previousSortEle))
- {
- return false;
- }
- else if(__dragendFlag)
- {
- __dragendFlag = false;
- return false;
- }
-
- window.views.WebView.showNormalPage();
- window.ViewStack.switchView( "WebView","BookmarkTreeView");
-
- // Laod a page to chrome view
- window.views.WebView.loadUrlToCurrentPage(newUrl);
- views.WebView.gesturesEnabled = true;
-}
-
-
-//'<div class="Title" onclick="openUrl(\''+bmurl+'\')">'+
-//'<div class="collapsedIcons"><img src="icons/edit-icon.gif" width="56" height="56" class="controlIcon">'+
-//background-image: url(\''+bmfavicon+'\');
-
-function createBookmarkElement(bmtitle,bmfullurl,bmtrimmedurl, idValue)
-{
- var _width = parseInt(window.innerWidth)-115;
-
- var li=document.createElement('li');
- li.id = idValue;
- li.innerHTML =
- '<div class="controlIn">'+
- '<div class="collapsed" onClick="javascript:BookmarkToggleControls(this);"></div>'+
- '<img class="controlIcon" src="icons/delete-icon.gif" width="56" height="56" vspace="7" hspace="5" onclick="deleteBookmark(this, \''+bmtitle+'\')">'+
- '</div>'+
- '<div class="Title" style="width:'+_width+'px;" onclick="openUrl(this,\''+bmfullurl+'\')">'+
- '<span class="aTitle">'+bmtitle+'</span>'+
- '<br/>'+
- '<span class="aUrl">'+bmtrimmedurl+'</span>'+
- '</div>';
-
- return li;
-}
-
-function clearBookmarkList()
-{
- var list = document.getElementById('bookmarkListTree');
- while( list.hasChildNodes() ) {
- list.removeChild( list.lastChild );
- }
-}
-
+var __prevOpenedBookmarkControl = null;
+var __previousSortEle = null;
+var __bookmarkCount= 0;
+var __bookmarkEditElement= null;
var __dragendFlag = false;
-
-function longtapbm(ele)
-{
- if(_sortingEnabled)
- {
- _sortingEnabled = false;
- previousSortEle.className = 'li.no-sort';
- views.WebView.gesturesEnabled = true;
- return false;
- }
-
- _sortingEnabled = true;
- _sortEleOffsetTop = ele.offsetTop;
- views.WebView.gesturesEnabled = false;
- ele.className = 'sort';
- previousSortEle = ele;
- $("#bookmarkListTree").sortable('enable');
-
-}
-
// Set to the LongPress object that is currently waiting for activation,
// ie. it has gotten a mouse-down event and has its timer running.
var __currentLongPress;
+var __cancelLinkOpening = false;
-function longPressStarted(lp)
+function _enableSorting(ele) {
+
+ ele.className = 'sort';
+
+ var evt = document.createEvent("MouseEvents");
+ evt.initMouseEvent("mousedown", true, true, window,
+ 0, 0, 0, gInitialX, gInitialY, false, false, false, false, 0, null);
+ var canceled = !ele.dispatchEvent(evt);
+
+ views.WebView.gesturesEnabled = false;
+
+ ele.childNodes[0].className = 'controlInSort';
+ ele.childNodes[0].childNodes[0].className = 'collapsedSort';
+
+ __sortingEnabled = true;
+ __sortEleOffsetTop = ele.offsetTop;
+ __previousSortEle = ele;
+
+ ele.className = 'highlight';
+
+ }
+
+function _disableSorting(ele) {
+
+ views.WebView.gesturesEnabled = true;
+
+ ele.className = 'no-sort';
+ ele.childNodes[0].className = 'controlIn';
+ ele.childNodes[0].childNodes[0].className = 'collapsed';
+
+ __sortingEnabled = false;
+ __sortEleOffsetTop = 0;
+ __previousSortEle = null;
+}
+
+function _dragInit()
+{
+ $("#bookmarkListTree").sortable({
+ placeholder: 'ui-state-highlight',
+ axis:'y',
+ cancel : 'li.no-sort',
+ scrollSensitivity : 40,
+ scrollSpeed : 40,
+ start: function(event, ui) {
+ __dragendFlag = true;
+ },
+ update: function(event, ui) {
+ var sortedItemId = ui.item[0].id;
+ var _a = $('#bookmarkListTree').sortable('toArray');
+ for (var i=0; i<_a.length; i++)
+ {
+ if (sortedItemId == _a[i])
+ {
+ var li = document.getElementById(sortedItemId);
+ _disableSorting(li);
+
+ var div = li.childNodes[1];
+ window.bookmarksManager.reorderBokmarks(div.childNodes[0].firstChild.nodeValue,i);
+ }
+ }
+ }
+ });
+
+ $("#bookmarkListTree").sortable('enable');
+ $("#bookmarkListTree").disableSelection();
+}
+
+function _longPress(ele)
+{
+ if (__sortingEnabled)
+ {
+ _disableSorting(__previousSortEle)
+ return false;
+ }
+
+ if(__prevOpenedBookmarkControl)
+ _bookmarkHideControl(__prevOpenedBookmarkControl);
+
+ _enableSorting(ele);
+}
+
+function _longPressStarted(lp)
{
// Remember the current LongPress object so we can cancel it if scrolling
// starts.
__currentLongPress = lp;
+ __cancelLinkOpening = false;
}
-function handlePanStarted(type)
+function _handlePanStarted(type)
{
+ __cancelLinkOpening = true;
+
// Scrolling started, cancel the LongPress.
- if(__currentLongPress != undefined) {
+ if (__currentLongPress != undefined) {
__currentLongPress.cancel();
__currentLongPress = undefined;
}
}
-function createBookmarkView()
+
+function _bookmarkHideControl(ele){
+ ele.childNodes[0].className = 'controlIn';
+ ele.childNodes[0].childNodes[0].className = 'collapsed';
+ ele.childNodes[1].style.width = (parseInt(window.innerWidth)-70)+"px";
+}
+
+function _bookmarkToggleControls(ele){
+ try {
+
+ if (__sortingEnabled && ele.parentNode.parentNode!=__previousSortEle)
+ {
+ _disableSorting(__previousSortEle)
+ return false;
+ }
+ else if (__sortingEnabled && (ele.parentNode.parentNode==__previousSortEle))
+ {
+ return false;
+ }
+
+ ele.parentNode.className = (ele.parentNode.className == 'controlIn') ? 'controlOut' : 'controlIn';
+ if (ele.parentNode.className == 'controlIn') {
+ ele.className = 'collapsed';
+ ele.parentNode.parentNode.childNodes[1].style.width = (parseInt(window.innerWidth)-70)+"px";
+ }
+ else {
+ ele.className = 'expanded';
+ ele.parentNode.parentNode.childNodes[1].style.width = (parseInt(window.innerWidth)-220)+"px";
+ }
+
+ if (__prevOpenedBookmarkControl != null && __prevOpenedBookmarkControl != ele.parentNode.parentNode)
+ _bookmarkHideControl(__prevOpenedBookmarkControl);
+
+ }catch(e) { alert(e); }
+
+ __prevOpenedBookmarkControl = ele.parentNode.parentNode;
+}
+
+function _addNewBookmark(bmtitle,bmurl)
{
- try
- {
- __currentLongPress = undefined;
- clearBookmarkList();
- //Get bookmarks data from database
- var bookmakrData = window.bookmarksManager.getBookmarksJSON();
- var myObject = eval('(' + bookmakrData + ')');
- var ul=document.getElementById('bookmarkListTree');
- for(x=0; x<myObject.length; x++)
- {
- var bmurl = myObject[x].urlvalue;
- var bmtitle = myObject[x].title;
- var bmtrimmedurl = bmurl.replace('http://','');
- bmtrimmedurl = bmtrimmedurl.replace('www.','');
- bmtrimmedurl = bmtrimmedurl.replace('file:///','');
-
- //create element and add it to bookmark view
- var li = createBookmarkElement(bmtitle,bmurl,bmtrimmedurl, x);
- li.className = 'no-sort';
- ul.appendChild(li);
- ul.childNodes[0].focus();
-
- new LongPress(li.id, longtapbm, longPressStarted);
- }
- } catch(E) { alert(E); }
- dragInit();
+ if (__previousSortEle != null)
+ _disableSorting(__previousSortEle)
+
+ __bookmarkCount += 1;
+ //create element and add it to bookmark view
+ var ul=document.getElementById('bookmarkListTree');
+ var dbgTitle = bmtitle.replace(/'/g, "'");
+ dbgTitle = dbgTitle.replace(/"/g, """);
+ var li = _createBookmarkElement(dbgTitle,bmurl,__bookmarkCount);
+ li.className = 'no-sort';
+ ul.insertBefore(li, ul.childNodes[0]);
+ ul.childNodes[0].focus();
+ new LongPress(li.id, _longPress, _longPressStarted);
+
+ $('html, body').animate({
+ scrollTop: 0}, 1000);
+}
+
+function _editBookmark(bmtitle,bmurl)
+{
+ __bookmarkEditElement.childNodes[1].childNodes[0].innerText = bmtitle;
+ __bookmarkEditElement.childNodes[1].childNodes[2].innerText = bmurl;
+}
+
+function _launchEditBookmark(r,bmtitle,bmurl)
+{
+ __bookmarkEditElement = r.parentNode.parentNode;
+ window.bookmarksManager.launchEditBookmark(bmtitle,bmurl);
+}
+
+function _deleteBookmark(r,bmtitle)
+{
+ window.bookmarksManager.deleteBookmark(bmtitle);
+ //ToDo : check for error code
+ r.parentNode.parentNode.parentNode.removeChild(r.parentNode.parentNode);
+
+}
+
+
+function _openUrl(ele, newUrl) {
+ // DragStart & DragEnd listeners are defined at bottom
+ if (__sortingEnabled && (ele.parentNode!=__previousSortEle))
+ {
+ _disableSorting(__previousSortEle)
+ return false;
+ }
+ else if (__sortingEnabled && (ele.parentNode==__previousSortEle))
+ {
+ return false;
+ }
+ else if (__dragendFlag)
+ {
+ __dragendFlag = false;
+ return false;
+ }
+ else if(__cancelLinkOpening)
+ {
+ __cancelLinkOpening = false;
+ return false;
+ }
+
+ window.views.WebView.showNormalPage();
+ window.ViewStack.switchView( "WebView","BookmarkTreeView");
+
+ // Laod a page to chrome view
+ window.views.WebView.loadUrlToCurrentPage(newUrl);
+ views.WebView.gesturesEnabled = true;
}
function _updateBookmarkViewGoemetry(displayMode)
{
- try{
- var _list = document.getElementsByClassName('Title');
- for(var i=0; i<_list.length; i++){
- if(_list[i].parentNode.childNodes[0].className == 'controlIn'){
- _list[i].style.width = (parseInt(window.innerWidth)-115)+"px";
- }
- else{
- _list[i].style.width = (parseInt(window.innerWidth)-195)+"px";
- }
- }
- }catch(e){ alert(e); }
+ try{
+ var _list = document.getElementsByClassName('Title');
+ for (var i=0; i<_list.length; i++){
+ if (_list[i].parentNode.childNodes[0].className == 'controlIn'){
+ _list[i].style.width = (parseInt(window.innerWidth)-70)+"px";
+ }
+ else{
+ _list[i].style.width = (parseInt(window.innerWidth)-220)+"px";
+ }
+ }
+ }catch(e){ alert(e); }
+
+}
+function _createBookmarkElement(bmtitle,bmfullurl,idValue)
+{
+ var _width = parseInt(window.innerWidth)-70;
+ var escapedTitle = bmtitle.replace(/'/g, "\\'");
+ var li=document.createElement('li');
+ li.id = idValue;
+ li.innerHTML =
+ '<div class="controlIn">'+
+ '<div class="collapsed" onClick="javascript:_bookmarkToggleControls(this);"></div>'+
+ '<img src="icons/edit_btn.png" width="56" height="56" vspace="7" hspace="5" '+
+ 'onclick="_launchEditBookmark(this,this.parentNode.parentNode.childNodes[1].childNodes[0].innerText,'+
+ 'this.parentNode.parentNode.childNodes[1].childNodes[2].innerText)">'+
+ '<img src="icons/delete_btn.png" width="56" height="56" vspace="7" hspace="5" '+
+ 'onclick="_deleteBookmark(this, \''+escapedTitle+'\')">'+
+ '</div>'+
+ '<div class="Title" style="width:'+_width+'px;" onclick="_openUrl(this,this.childNodes[2].innerText);">'+
+ '<span class="aTitle">'+bmtitle+'</span>'+
+ '<br/>'+
+ '<span class="aUrl">'+bmfullurl+'</span>'+
+ '</div>';
+
+ return li;
+}
+
+function _createBookmarkView()
+{
+ try
+ {
+ __currentLongPress = undefined;
+ //Get bookmarks data from database
+ var bookmakrData = window.bookmarksManager.getBookmarksJSON();
+ var myObject = eval('(' + bookmakrData + ')');
+ var ul=document.getElementById('bookmarkListTree');
+ for (x=0; x<myObject.length; x++)
+ {
+ var bmurl = myObject[x].urlvalue;
+ var bmtitle = myObject[x].title;
+
+ //create element and add it to bookmark view
+ var li = _createBookmarkElement(bmtitle,bmurl, x);
+ li.className = 'no-sort';
+ ul.appendChild(li);
+ ul.childNodes[0].focus();
+
+ new LongPress(li.id, _longPress, _longPressStarted);
+ __bookmarkCount = x;
+ }
+ } catch(E) { alert(E); }
+
+ _dragInit();
}
function launchBookmarkView()
{
- try{
+ try{
window.chrome.aspectChanged.connect(_updateBookmarkViewGoemetry);
-
- // Get Bookmarks from the database
- createBookmarkView();
+ window.bookmarksManager.bookmarkEntryAdded.connect(_addNewBookmark);
+ window.bookmarksManager.bookmarkEntryModified.connect(_editBookmark);
- // Watch for the start of scrolling in the view so we can cancel the
- // long presses to prevent them from interfere with scrolling. Otherwise
- // the long press callback will fire and trigger sortable mode.
- views.WebView.startingPanGesture.connect(handlePanStarted);
-
- }catch(e){ alert(e); }
-}
+ // Get Bookmarks from the database
+ _createBookmarkView();
-function dragInit()
-{
- $("#bookmarkListTree").sortable({
- placeholder: 'ui-state-highlight',
- axis:'y',
- cancel : 'li.no-sort',
- scrollSensitivity : 40,
- scrollSpeed : 40,
- start: function(event, ui) {
- __dragendFlag = true;
- },
- update: function(event, ui) {
- _sortingEnabled = false;
- views.WebView.gesturesEnabled = true;
- $("#bookmarkListTree").sortable('disable');
-
- var sortedItemId = ui.item[0].id;
- var _a = $('#bookmarkListTree').sortable('toArray');
- for(var i=0; i<_a.length; i++)
- {
- if(sortedItemId == _a[i])
- {
- var li = document.getElementById(sortedItemId);
- li.className = 'no-sort';
- var div = li.childNodes[1];
- window.bookmarksManager.reorderBokmarks(div.childNodes[0].firstChild.nodeValue,i);
- }
- }
- }
- });
-
- $("#bookmarkListTree").sortable('disable');
- $("#bookmarkListTree").disableSelection();
-
-}
+ // Watch for the start of scrolling in the view so we can cancel the
+ // long presses to prevent them from interfere with scrolling. Otherwise
+ // the long press callback will fire and trigger sortable mode.
+ views.WebView.startingPanGesture.connect(_handlePanStarted);
+
+ }catch(e){ alert(e); }
+}
\ No newline at end of file