ginebra2/chrome/bedrockchrome/bookmarkview.superpage/bookmarkDialog.js
changeset 15 73c48011b8c7
parent 6 1c3b8676e58c
--- a/ginebra2/chrome/bedrockchrome/bookmarkview.superpage/bookmarkDialog.js	Fri Sep 17 08:27:10 2010 +0300
+++ b/ginebra2/chrome/bedrockchrome/bookmarkview.superpage/bookmarkDialog.js	Mon Oct 04 00:04:54 2010 +0300
@@ -1,12 +1,33 @@
 var _dailogFlag = 0;
 var _OriginalTitle = 0;
 
+document.getElementsByClassName = function(class_name) {
+    var docList = this.all || this.getElementsByTagName('*');
+    var matchArray = new Array();
+
+    /*Create a regular expression object for class*/
+    var re = new RegExp("(?:^|\\s)"+class_name+"(?:\\s|$)");
+    for (var i = 0; i < docList.length; i++) {
+        if (re.test(docList[i].className) ) {
+            matchArray[matchArray.length] = docList[i];
+        }
+    }
+
+	return matchArray;
+}
+
 function bookmarkDialog()
 {
-   this.write = writeBookmarkDialog;
+    this.write = writeBookmarkDialog;
+
+    // do setup
+    this.write();
 
-   // do setup
-    this.write();
+    if (app.serviceFramework() == "mobility_service_framework")
+    {
+        document.getElementsByClassName("bookmarkCheckboxTextLabel")[0].style.display = "inline";
+    }
+    
 }
 
 function writeBookmarkDialog()
@@ -17,6 +38,8 @@
                    '<div class="bookmarkTextLabel" id="bookmarkDialogTitle">Add Bookmark</div>'+
                    '<div class="GinebraSnippet" id="BookmarkDialogTitleId" data-GinebraNativeClass="TextEditSnippet" data-GinebraVisible="true"></div>'+ 
                    '<div class="GinebraSnippet" id="BookmarkDialogUrlId" data-GinebraNativeClass="TextEditSnippet" data-GinebraVisible="true"></div>'+
+                   '<div class="bookmarkCheckboxTextLabel"><input type="checkbox" id="bookmarkCheckboxId"/>Add shortcut to home screen</div>'+
+                   '<div><input type="hidden" id="BookmarkDialogBookmarkId" name="BookmarkDialogBookmarkId" value=""/></div>'+
                    '<div class="controls">' +
                       '<div type="button"  onmouseup="bookmarkOperation();" class="bookmarkDoneButton"></div>'+     
                        '<div type="button" onmouseup="bookmarkDialogIdHide();" class="bookmarkCancelButton"></div>'+  
@@ -30,23 +53,38 @@
     window.snippets.BookmarkDialogId.hide();
     snippets.BookmarkViewToolbarId.enabled = true;
     snippets.WebViewToolbarId.enabled = true;
+    
+    if (app.serviceFramework() == "mobility_service_framework") 
+    {
+        if (document.getElementById("bookmarkCheckboxId").checked)
+        {
+            document.getElementById("bookmarkCheckboxId").checked = false;
+        }
+    }    
 }
 
-function launchBookmarkDialog(bmtitle, bmurl, dialogFlag)
+function launchBookmarkDialog(bmtitle, bmurl, bmid, dialogFlag)
 {
     try{
         snippets.BookmarkViewToolbarId.enabled = false;
         snippets.WebViewToolbarId.enabled = false;
 
         if (dialogFlag == 0) {
-                var dlgTitle = document.getElementById("bookmarkDialogTitle");
-                  dlgTitle.firstChild.nodeValue= window.localeDelegate.translateText("txt_browser_input_dial_add_bm");                 
-           }
-           else if (dialogFlag == 1) {
-                var dlgTitle = document.getElementById("bookmarkDialogTitle");
-                dlgTitle.firstChild.nodeValue= window.localeDelegate.translateText("txt_browser_input_dial_edit_bm");
-           }
-
+            if (app.serviceFramework() == "mobility_service_framework")
+            {
+                document.getElementsByClassName("bookmarkCheckboxTextLabel")[0].style.display = "inline"; 
+            }
+            var dlgTitle = document.getElementById("bookmarkDialogTitle");
+            dlgTitle.firstChild.nodeValue= window.localeDelegate.translateText("txt_browser_input_dial_add_bm");
+            var chkboxTitle = document.getElementsByClassName("bookmarkCheckboxTextLabel")[0];
+            chkboxTitle.firstChild.nodeValue= window.localeDelegate.translateText("txt_browser_bookmarks_also_add_to_home_screen");
+        }
+        else if (dialogFlag == 1) {
+             document.getElementsByClassName("bookmarkCheckboxTextLabel")[0].style.display = "none";
+             var dlgTitle = document.getElementById("bookmarkDialogTitle");
+             dlgTitle.firstChild.nodeValue= window.localeDelegate.translateText("txt_browser_input_dial_edit_bm");
+        }
+       
         _dailogFlag = dialogFlag;
         _OriginalTitle = bmtitle;
         window.snippets.BookmarkDialogTitleId.lostFocus.connect(titleFieldLostFocus);
@@ -66,7 +104,8 @@
         if (bmurl == "")
             window.snippets.BookmarkDialogUrlId.text = "Url";
         else
-           window.snippets.BookmarkDialogUrlId.text = bmurl; 
+           window.snippets.BookmarkDialogUrlId.text = bmurl;
+        document.getElementById('BookmarkDialogBookmarkId').value = bmid;
 
         window.snippets.BookmarkDialogId.show(false);
 
@@ -76,7 +115,6 @@
 
 }
 
-
 function bookmarkOperation()
 {
     snippets.BookmarkViewToolbarId.enabled = true;
@@ -87,13 +125,27 @@
     //Hide the dialog
     window.snippets.BookmarkDialogId.hide();
     //Update the database
-    var errCode;
+    var errCode = 0;
 
-    if (_dailogFlag == 0)
-       errCode = window.bookmarksManager.addBookmark(bmtitle,bmurl);
-    else if (_dailogFlag == 1)
-       errCode = window.bookmarksManager.modifyBookmark(_OriginalTitle,bmtitle,bmurl);
-    
+    if (_dailogFlag == 0) {
+        var bmid = window.bookmarksController.addBookmark(bmtitle,bmurl);
+        if (bmid < 0) {
+            alert("Unknown error adding bookmark");
+            return;
+        }
+        if (app.serviceFramework() == "mobility_service_framework") 
+        {
+            if (document.getElementById("bookmarkCheckboxId").checked)
+            {
+                errCode = window.hsBookmarkPublishClient.addWidget(bmtitle, bmurl);
+                document.getElementById("bookmarkCheckboxId").checked = false;
+            }
+        } 
+    }
+    else if (_dailogFlag == 1) {
+        var bmid = document.getElementById('BookmarkDialogBookmarkId').value;
+        errCode = window.bookmarksController.modifyBookmark(bmid,bmtitle,bmurl);
+    }
     
     if (errCode == -3){
 	     alert("Bookmark Url Is Empty");
@@ -133,6 +185,6 @@
 }
 
 
-function showBookmarkEditDialog(bmtitle,bmurl) {
-    launchBookmarkDialog(bmtitle,bmurl,1);
+function showBookmarkEditDialog(bmtitle,bmurl,id) {
+    launchBookmarkDialog(bmtitle,bmurl,id,1);
 }