diff options
Diffstat (limited to 'MobileCydia.app/package.js')
-rw-r--r-- | MobileCydia.app/package.js | 330 |
1 files changed, 330 insertions, 0 deletions
diff --git a/MobileCydia.app/package.js b/MobileCydia.app/package.js new file mode 100644 index 0000000..b9f85ff --- /dev/null +++ b/MobileCydia.app/package.js @@ -0,0 +1,330 @@ +/*var package = { + "name": "MobileTerminal", + "latest": "286u-5", + "author": { + "name": "Allen Porter", + "address": "allen.porter@gmail.com" + }, + //"depiction": "http://planet-iphones.com/repository/info/chromium1.3.php", + "depiction": "http://cydia.saurik.com/terminal.html", + "longDescription": "this is a sample description", + "homepage": "http://cydia.saurik.com/terminal.html", + "installed": "286u-4", + "id": "mobileterminal", + "section": "Terminal Support", + "size": 552*1024, + "maintainer": { + "name": "Jay Freeman", + "address": "saurik@saurik.com" + }, + "source": { + "name": "Telesphoreo Tangelo", + "description": "Distribution of Unix Software for the iPhone" + } +};*/ + +function space(selector, html, max) { + var node = $(selector); + node.html(html); + var width = node.width(); + if (width > max) { + var spacing = (max - node.width()) / (html.length - 1) + "px"; + node.css("letter-spacing", spacing); + } +} + +var swap_, swap = function (on, off, time) { + setTimeout(swap_(on, off, time), time); +}; + +swap_ = function (on, off, time) { + return function () { + on.className = 'fade-out'; + off.className = 'fade-in'; + swap(off, on, time); + }; +}; + +var special_ = function () { + if (package == null) + return; + + var id = package.id; + var idc = encodeURIComponent(id); + var name = package.name; + var icon = 'cydia://package-icon/' + idc; + + var api = 'http://cydia.saurik.com/api/'; + var capi = 'http://cache.cydia.saurik.com/api/'; + + var support = package.support; + + var regarding = function (type) { + return encodeURIComponent("Cydia/APT(" + type + "): " + name); + }; + + $("#icon").css("background-image", 'url("' + icon + '")'); + //$("#reflection").src("cydia://package-icon/" + idc); + + $("#name").html(name); + space("#latest", package.latest, 96); + + $.xhr(capi + 'package/' + idc, 'GET', {}, null, { + success: function (value) { + value = eval(value); + + if (typeof value.notice == "undefined") + $(".notice").addClass("deleted"); + else + $("#notice-src").src(value.notice); + + if (typeof value.rating == "undefined") + $(".rating").addClass("deleted"); + else { + $("#rating-load").addClass("deleted"); + $("#rating-href").href(value.reviews); + + var none = $("#rating-none"); + var done = $("#rating-done"); + + if (value.rating == null) { + none.css("display", "block"); + } else { + done.css("display", "block"); + + $("#rating-value").css('width', 16 * value.rating); + } + } + + if (typeof value.icon != "undefined" && value.icon != null) { + var icon = $("#icon"); + var thumb = $("#thumb"); + + icon[0].className = 'flip-180'; + thumb[0].className = 'flip-360'; + + thumb.css("background-image", 'url("' + value.icon + '")'); + + setTimeout(function () { + icon.addClass("deleted"); + thumb[0].className = 'flip-0'; + }, 2000); + } + }, + + failure: function (status) { + $(".rating").addClass("deleted"); + } + }); + + $("#settings").href("cydia://package-settings/" + idc); + + var mode = package.mode; + if (mode == null) + $(".mode").addClass("deleted"); + else { + $("#mode").html(cydia.localize(mode)); + $("#mode-src").src("Modes/" + mode + ".png"); + } + + var warnings = package.warnings; + var length = warnings == null ? 0 : warnings.length; + if (length == 0) + $(".warnings").addClass("deleted"); + else { + var parent = $("#warnings"); + var child = $("#warning"); + + for (var i = 0; i != length; ++i) { + var clone = child.clone(true); + clone.addClass("inserted"); + parent.append(clone); + clone.xpath("./div/label").html($.xml(warnings[i])); + } + + child.addClass("deleted"); + } + + var applications = package.applications; + var length = applications == null ? 0 : applications.length; + + var child = $("#application"); + + /*if (length != 0) { + var parent = $("#actions"); + + for (var i = 0; i != length; ++i) { + var application = applications[i]; + var clone = child.clone(true); + parent.append(clone); + clone.href("cydia://launch/" + application[0]); + clone.xpath("label").html("Run " + $.xml(application[1])); + clone.xpath("img").src(application[2]); + } + }*/ + + child.addClass("deleted"); + + var commercial = package.hasTag('cydia::commercial'); + if (!commercial) + $(".commercial").addClass("deleted"); + + var _console = package.hasTag('purpose::console'); + if (!_console) + $(".console").addClass("deleted"); + + var author = package.author; + if (author == null) + $(".author").addClass("deleted"); + else { + space("#author", author.name, 160); + if (author.address == null) + $("#author-icon").addClass("deleted"); + else if (support == null) + $("#author-href").href("mailto:" + author.address + "?subject=" + regarding("A")); + else + $("#author-href").href(support); + } + + /*var store = commercial; + if (!store) + $(".activation").addClass("deleted"); + else { + var activation = api + 'activation/' + idc; + $("#activation-src").src(activation); + }*/ + + var depiction = package.depiction; + if (depiction != null) { + $(".description").addClass("deleted"); + $("#depiction-src").src(depiction); + } else { + $(".depiction").addClass("deleted"); + + var description = package.longDescription; + if (description == null) + description = package.shortDescription; + + if (description == null) + $(".description").addClass("deleted"); + else { + description = $.xml(description).replace(/\n/g, "<br/>"); + $("#description").html(description); + } + } + + var homepage = package.homepage; + if (homepage == null) + $(".homepage").addClass("deleted"); + else + $("#homepage-href").href(homepage); + + var installed = package.installed; + if (installed == null) + $(".installed").addClass("deleted"); + else { + $("#installed").html(installed); + $("#files-href").href("cydia://files/" + idc); + } + + space("#id", id, 220); + + var section = package.longSection; + if (section == null) + $(".section").addClass("deleted"); + else { + $("#section-src").src("cydia://section-icon/" + encodeURIComponent(section)); + $("#section").html(section); + } + + var size = package.size; + if (size == 0) + $(".size").addClass("deleted"); + else + $("#size").html(size / 1024 + " kB"); + + var maintainer = package.maintainer; + if (maintainer == null) + $(".maintainer").addClass("deleted"); + else { + space("#maintainer", maintainer.name, 153); + if (maintainer.address == null) + $("#maintainer-icon").addClass("deleted"); + else if (support == null) + $("#maintainer-href").href("mailto:" + maintainer.address + "?subject=" + regarding("M")); + else + $("#maintainer-href").href(support); + } + + var sponsor = package.sponsor; + if (sponsor == null) + $(".sponsor").addClass("deleted"); + else { + space("#sponsor", sponsor.name, 152); + $("#sponsor-href").href(sponsor.address); + } + + var source = package.source; + if (source == null) { + $(".source").addClass("deleted"); + $(".trusted").addClass("deleted"); + } else { + var host = source.host; + + $("#source-src").src("cydia://source-icon/" + encodeURIComponent(host)); + $("#source-name").html(source.name); + + if (source.trusted) + $("#trusted").href("cydia://package-signature/" + idc); + else + $(".trusted").addClass("deleted"); + + var description = source.description; + if (description == null) + $(".source-description").addClass("deleted"); + else + $("#source-description").html($.xml(description)); + } +}; + +$(special_); + +var special = function () { + $(".deleted").removeClass("deleted"); + $(".inserted").remove(); + + $("#icon")[0].className = 'flip-0'; + $("#thumb")[0].className = 'flip-180'; + + /* XXX: this could be better */ + $("#rating-href").href(null); + $("#rating-none").css("display", "none"); + $("#rating-done").css("display", "none"); + + var notice = $("#notice-src"); + + notice[0].outerHTML = '<iframe' + + ' class="notice"' + + ' id="notice-src"' + + ' frameborder="0"' + + ' width="320"' + + ' height="0"' + + ' target="_top"' + + '></iframe>'; + + var depiction = $("#depiction-src"); + + depiction[0].outerHTML = '<iframe' + + ' class="depiction"' + + ' id="depiction-src"' + + ' frameborder="0"' + + ' width="320"' + + ' height="0"' + + ' target="_top"' + + ' onload_="loaded()"' + + '></iframe>'; + + special_(); +}; + +cydia.setSpecial(special); |