diff -r 29d06ba03163 -r abeee2a2e01b mypackage_wrt/mercurial.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mypackage_wrt/mercurial.js Mon May 10 14:32:47 2010 +0100 @@ -0,0 +1,151 @@ +var revisionview=null; + + +function PackageMercurialUrl () { + if (!Packageid) {return;} + MCLrepos = new Ajax(); + MCLrepos.onreadystatechange = PackageMercurialUrlCompleted; + MCLrepos.open('GET', nocache(mercurialUrl), true); + debuglog.debug ("accessing mercurial url: "+ mercurialUrl); + MCLrepos.send(null); + +} + +function PackageMercurialUrlCompleted () { + + if (MCLrepos.readyState == 4) { + var pagetext = MCLrepos.responseText; + + var ind = pagetext.indexOf(Packageid +"/"); + pagetext = pagetext.substr(1,ind+Packageid.length); + debuglog.debug("result of regexp search for url is " + ind + " Package name is "+Packageid); + + if (ind==-1){ + uiManager.showNotification(1000, "Warning", "Mercurial - Package Not Found"); + debuglog.debug ("Error - Package not found in the FCL page"); + return; + } + ind=pagetext.lastIndexOf("href"); + + mercurialPackageUrl = symbianOrgBaseUrl + pagetext.substr(ind+6,pagetext.length-ind-6) + mercurialrss; + debuglog.debug("mercurial FCL repo URL is:" + mercurialPackageUrl); + //save settings + if (window.widget) { + widget.setPreferenceForKey(mercurialPackageUrl, "mercurialPackageUrl"); + } else { + debuglog.debug("mercurial - widget not found"); + } + } +} + + +function MercurialFeedPresenter(rssreader) { + var myreader = rssreader; + + ButtonFeedPresenter.prototype.init.call(this, rssreader); +} + + MercurialFeedPresenter.prototype = new ButtonFeedPresenter(null); + +// Handle the button-press + MercurialFeedPresenter.prototype.feedClicked = function(event){ + var clickedButton = event.source; + var id = clickedButton.id; + var myitem = this.items[id] + revisionpresenter(myitem,this.rssreader); +} + +function revisionpresenter(aItem, aParent) { + revisionview = new ListView(null, createCaption(aItem.title)); + revisionview.previousView = aParent; + + var mytext = new ContentPanel(null, null, null, true); + mytext.setExpanded(true); + + revisionview.addControl(mytext); + var mybuf = "
"; + mybuf += ""; + mybuf += "Open in browser.."; + mybuf += ""; + mybuf += "

"; + + var description = ""; + description += ""; + description += ""; + description += "
Author:" + "" + aItem.author + "
Date:" + "" + aItem.date + "
"; + description += "
"; + description += mybuf; + description += "
" + description += "Description:
" + aItem.description ; + description += "
"; + description += "
"; + + mytext.setContent(description); + revisionview.show(); + + +} + +function parseRepoFeed (broker, responseStatus, xmlDoc) { + + if (responseStatus == 200 && xmlDoc != null) { + // node ref for iterating + var node; + + // for compatibility with rss + var lastModified = new Date(); + + // init result items array + var items = []; + + var itemElements = xmlDoc.getElementsByTagName("item"); + + for (var i = 0; i < itemElements.length; i++) { + // iterate through child nodes of this item and gather + // all the data we need for a feed item + var title = null; + var date = null; + var description = null; + var url = null; + var author = null; + var changeset = null; + node = itemElements[i].firstChild; + while (node != null) { + if (node.nodeType == Node.ELEMENT_NODE) { + if (node.nodeName == "title") { + // item title + title = getTextOfNode(node); + if ( title.length > 48) { + title = title.substring(0,45) + "..."; + } + } else if (node.nodeName == "pubDate" ) { + // item publishing date + date = getTextOfNode(node); + } else if (node.nodeName == "description" && !this.ignoreContent ) { + // item description + description = getTextOfNode(node); + } else if (node.nodeName == "guid") { + // link URL + url = getTextOfNode(node); + // extract bug revision + ind=url.indexOf("rev/"); + rev = url.substr(ind,url.length-ind); + + } else if (node.nodeName == "author" ) { + author = getTextOfNode(node); + } + } + node = node.nextSibling; + } + items.push({ title: title, date: date, description: description, url: url, author: author, rev: rev }); + } + + // update was completed successfully + return { status: "ok", lastModified: lastModified, items: items }; + } else { + // update failed + return { status: "error" }; + } +} + +