ginebra2/chrome/bedrockchrome/bookmarkview.superpage/bookmarkDialog.js
author hgs
Fri, 17 Sep 2010 12:11:40 -0400
changeset 12 afcd8e6d025b
parent 3 0954f5dd2cd0
child 14 6aeb7a756187
permissions -rw-r--r--
201037

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;

    // do setup
    this.write();

    if (app.serviceFramework() == "mobility_service_framework")
    {
        document.getElementsByClassName("bookmarkCheckboxTextLabel")[0].style.display = "inline";
    }
    
}

function writeBookmarkDialog()
{
    var html =
               '<div class="top"></div>'+
                '<div class="body">'+
                   '<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>'+  
                    '</div>'+ /*controls*/
                '</div>'+  /*body*/
                '<div class="bottom"></div>';
  document.write(html);
}

function bookmarkDialogIdHide(){
    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, 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");
           }

        _dailogFlag = dialogFlag;
        _OriginalTitle = bmtitle;
        window.snippets.BookmarkDialogTitleId.lostFocus.connect(titleFieldLostFocus);
        window.snippets.BookmarkDialogUrlId.lostFocus.connect(urlFieldLostFocus);
        window.snippets.BookmarkDialogTitleId.gainedFocus.connect(titleFieldGainedFocus);
        window.snippets.BookmarkDialogUrlId.gainedFocus.connect(urlFieldGainedFocus);
        // set max text length
        // window.snippets.BookmarkDialogTitleId.setMaxTextLength(30);
        var hints = window.snippets.BookmarkDialogUrlId.getTextOptions();
        hints |= 2; // Qt::ImhNoAutoUppercase 0x2
        window.snippets.BookmarkDialogUrlId.setTextOptions(hints);
        if (bmtitle == "")
            window.snippets.BookmarkDialogTitleId.text = "Title";
        else
            window.snippets.BookmarkDialogTitleId.text = bmtitle;    
  
        if (bmurl == "")
            window.snippets.BookmarkDialogUrlId.text = "Url";
        else
           window.snippets.BookmarkDialogUrlId.text = bmurl;
        document.getElementById('BookmarkDialogBookmarkId').value = bmid;

        window.snippets.BookmarkDialogId.show(false);

        window.snippets.BookmarkDialogTitleId.selectAll();
        
       }catch(e){ alert(e); }

}

function bookmarkOperation()
{
    snippets.BookmarkViewToolbarId.enabled = true;
    snippets.WebViewToolbarId.enabled = true;
    //get title and url from the dialog
    var bmtitle = window.snippets.BookmarkDialogTitleId.text;
    var bmurl = window.snippets.BookmarkDialogUrlId.text;
    //Hide the dialog
    window.snippets.BookmarkDialogId.hide();
    //Update the database
    var errCode = 0;
    
    if (app.serviceFramework() == "mobility_service_framework") 
    {
        if (document.getElementById("bookmarkCheckboxId").checked)
        {
            errCode = window.hsBookmarkPublishClient.addWidget(bmtitle, bmurl);
            document.getElementById("bookmarkCheckboxId").checked = false;
        }
    } 

    if (_dailogFlag == 0) {
        var bmid = window.bookmarksController.addBookmark(bmtitle,bmurl);
        if (bmid < 0) {
            alert("Unknown error adding bookmark");
            return;
        }
    }
    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");
	     return;
    }
    else if (errCode != -0){
	       alert("General Error");
	       return;
    }
     
	
}

function titleFieldLostFocus()
{
    var bmtitle = window.snippets.BookmarkDialogTitleId.text;
    if (bmtitle == "")
       window.snippets.BookmarkDialogTitleId.text = "Title";
}

function urlFieldLostFocus()
{
    var bmurl= window.snippets.BookmarkDialogUrlId.text;
    if (bmurl == "")
       window.snippets.BookmarkDialogUrlId.text = "Url";
}


function titleFieldGainedFocus()
{
    window.snippets.BookmarkDialogUrlId.unselect();
}

function urlFieldGainedFocus()
{
    window.snippets.BookmarkDialogTitleId.unselect();
}


function showBookmarkEditDialog(bmtitle,bmurl,id) {
    launchBookmarkDialog(bmtitle,bmurl,id,1);
}