am 9b5fdb9c: docs: add checkbox to toggle the api level filter on and off; this includes some function renaming for the related scripts.
Merge commit '9b5fdb9c23f9301d1a963a6e9be4b46ad70922d7' into eclair
* commit '9b5fdb9c23f9301d1a963a6e9be4b46ad70922d7':
docs: add checkbox to toggle the api level filter on and off;
diff --git a/tools/droiddoc/templates-sdk/customization.cs b/tools/droiddoc/templates-sdk/customization.cs
index 6bdb992..6ae8446 100644
--- a/tools/droiddoc/templates-sdk/customization.cs
+++ b/tools/droiddoc/templates-sdk/customization.cs
@@ -73,9 +73,10 @@
call:default_search_box() ?><?cs
if:reference ?>
<div id="api-level-toggle">
- <label for="apiLevelControl"><a href="<?cs var:toroot ?>guide/appendix/api-levels.html">Filter by API Level</a>: </label>
- <select id="apiLevelControl">
- <!-- option elements added by buildApiLevelToggle() -->
+ <input type="checkbox" id="apiLevelCheckbox" onclick="toggleApiLevelSelector(this)" />
+ <label for="apiLevelCheckbox" class="disabled">Filter by API Level: </label>
+ <select id="apiLevelSelector">
+ <!-- option elements added by buildApiLevelSelector() -->
</select>
</div>
<script>
@@ -85,7 +86,7 @@
if:!last(since) ?>, <?cs /if ?><?cs
/each
?> ];
- buildApiLevelToggle();
+ buildApiLevelSelector();
</script><?cs
/if ?>
</div><!-- headerRight -->
diff --git a/tools/droiddoc/templates/assets/android-developer-core.css b/tools/droiddoc/templates/assets/android-developer-core.css
index eb7e107..954032b 100644
--- a/tools/droiddoc/templates/assets/android-developer-core.css
+++ b/tools/droiddoc/templates/assets/android-developer-core.css
@@ -48,11 +48,12 @@
}
input, select,
-textarea, option {
+textarea, option, label {
font-family:inherit;
font-size:inherit;
padding:0;
margin:0;
+ vertical-align:middle;
}
option {
diff --git a/tools/droiddoc/templates/assets/android-developer-docs.css b/tools/droiddoc/templates/assets/android-developer-docs.css
index e8dc20b..d700c0e 100644
--- a/tools/droiddoc/templates/assets/android-developer-docs.css
+++ b/tools/droiddoc/templates/assets/android-developer-docs.css
@@ -341,6 +341,9 @@
#api-level-toggle {
padding:0 10px;
font-size:11px;
+}
+
+#api-level-toggle label.disabled {
color:#999;
}
diff --git a/tools/droiddoc/templates/assets/android-developer-docs.js b/tools/droiddoc/templates/assets/android-developer-docs.js
index 5f472f6..db5e64f 100644
--- a/tools/droiddoc/templates/assets/android-developer-docs.js
+++ b/tools/droiddoc/templates/assets/android-developer-docs.js
@@ -99,7 +99,7 @@
}
function writeCookie(cookie, val, section, expiration) {
- if (!val) return;
+ if (val==undefined) return;
section = section == null ? "_" : "_"+section+"_";
if (expiration == null) {
var date = new Date();
diff --git a/tools/droiddoc/templates/assets/android-developer-reference.js b/tools/droiddoc/templates/assets/android-developer-reference.js
index 3080760..b96e136 100644
--- a/tools/droiddoc/templates/assets/android-developer-reference.js
+++ b/tools/droiddoc/templates/assets/android-developer-reference.js
@@ -1,48 +1,77 @@
/* API LEVEL TOGGLE */
addLoadEvent(changeApiLevel);
+
+var API_LEVEL_ENABLED_COOKIE = "api_level_enabled";
var API_LEVEL_COOKIE = "api_level";
var minLevel = 1;
-function buildApiLevelToggle() {
- var maxLevel = SINCE_DATA.length;
- var userApiLevel = readCookie(API_LEVEL_COOKIE);
-
- if (userApiLevel != 0) {
- selectedLevel = userApiLevel;
- } else {
- selectedLevel = maxLevel;
- }
+function toggleApiLevelSelector(checkbox) {
+ var date = new Date();
+ date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years
+ var expiration = date.toGMTString();
+ if (checkbox.checked) {
+ $("#apiLevelSelector").removeAttr("disabled");
+ $("#api-level-toggle label").removeClass("disabled");
+ writeCookie(API_LEVEL_ENABLED_COOKIE, 1, null, expiration);
+ } else {
+ $("#apiLevelSelector").attr("disabled","disabled");
+ $("#api-level-toggle label").addClass("disabled");
+ writeCookie(API_LEVEL_ENABLED_COOKIE, 0, null, expiration);
+ }
+ changeApiLevel();
+}
+
+function buildApiLevelSelector() {
+ var maxLevel = SINCE_DATA.length;
+ var userApiLevelEnabled = readCookie(API_LEVEL_ENABLED_COOKIE);
+ var userApiLevel = readCookie(API_LEVEL_COOKIE);
+
+ if (userApiLevelEnabled == 0) {
+ $("#apiLevelSelector").attr("disabled","disabled");
+ } else {
+ $("#apiLevelCheckbox").attr("checked","checked");
+ $("#api-level-toggle label").removeClass("disabled");
+ }
minLevel = $("body").attr("class");
- var select = $("#apiLevelControl").html("").change(changeApiLevel);
- for (var i = maxLevel-1; i >= 0; i--) {
- var option = $("<option />").attr("value",""+SINCE_DATA[i]).append(""+SINCE_DATA[i]);
-// if (SINCE_DATA[i] < minLevel) option.addClass("absent"); // always false for strings (codenames)
- select.append(option);
- }
+ var select = $("#apiLevelSelector").html("").change(changeApiLevel);
+ for (var i = maxLevel-1; i >= 0; i--) {
+ var option = $("<option />").attr("value",""+SINCE_DATA[i]).append(""+SINCE_DATA[i]);
+ // if (SINCE_DATA[i] < minLevel) option.addClass("absent"); // always false for strings (codenames)
+ select.append(option);
+ }
// get the DOM element and use setAttribute cuz IE6 fails when using jquery .attr('selected',true)
- var selectedLevelItem = $("#apiLevelControl option[value='"+selectedLevel+"']").get(0);
+ var selectedLevelItem = $("#apiLevelSelector option[value='"+userApiLevel+"']").get(0);
selectedLevelItem.setAttribute('selected',true);
}
function changeApiLevel() {
- var selectedLevel = $("#apiLevelControl option:selected").val();
- toggleVisisbleApis(selectedLevel, "body");
+ var maxLevel = SINCE_DATA.length;
+ var userApiLevelEnabled = readCookie(API_LEVEL_ENABLED_COOKIE);
+ var selectedLevel = maxLevel;
+
+ if (userApiLevelEnabled == 0) {
+ toggleVisisbleApis(selectedLevel, "body");
+ } else {
+ selectedLevel = $("#apiLevelSelector option:selected").val();
+ toggleVisisbleApis(selectedLevel, "body");
+
+ var date = new Date();
+ date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years
+ var expiration = date.toGMTString();
+ writeCookie(API_LEVEL_COOKIE, selectedLevel, null, expiration);
+ }
- var date = new Date();
- date.setTime(date.getTime()+(50*365*24*60*60*1000)); // keep this for 50 years
- writeCookie(API_LEVEL_COOKIE, selectedLevel, null, date);
-
- if (selectedLevel < minLevel) {
- var thing = ($("#jd-header").html().indexOf("package") != -1) ? "package" : "class";
- $("#naMessage").show().html("<div><p><strong>This " + thing + " is not available with API Level " + selectedLevel + ".</strong></p>"
+ if (selectedLevel < minLevel) {
+ var thing = ($("#jd-header").html().indexOf("package") != -1) ? "package" : "class";
+ $("#naMessage").show().html("<div><p><strong>This " + thing + " is not available with API Level " + selectedLevel + ".</strong></p>"
+ "<p>To use this " + thing + ", your application must specify API Level " + minLevel + " or higher in its manifest "
+ "and be compiled against a version of the Android library that supports an equal or higher API Level. To reveal this "
+ "document, change the value of the API Level filter above.</p>"
+ "<p><a href='" +toRoot+ "guide/appendix/api-levels.html'>What is the API Level?</a></p></div>");
- } else {
+ } else {
$("#naMessage").hide();
}
}
@@ -156,7 +185,7 @@
node.expanded = true;
// perform api level toggling because new nodes are new to the DOM
- var selectedLevel = $("#apiLevelControl option:selected").val();
+ var selectedLevel = $("#apiLevelSelector option:selected").val();
toggleVisisbleApis(selectedLevel, "#side-nav");
}
}
@@ -228,7 +257,7 @@
init_navtree("nav-tree", toroot, NAVTREE_DATA);
// perform api level toggling because because the whole tree is new to the DOM
- var selectedLevel = $("#apiLevelControl option:selected").val();
+ var selectedLevel = $("#apiLevelSelector option:selected").val();
toggleVisisbleApis(selectedLevel, "#side-nav");
}