OSDN Git Service

docs: add checkbox to toggle the api level filter on and off;
authorScott Main <smain@google.com>
Tue, 27 Oct 2009 22:09:15 +0000 (15:09 -0700)
committerScott Main <smain@google.com>
Tue, 27 Oct 2009 23:56:08 +0000 (16:56 -0700)
this includes some function renaming for the related scripts.

the checkbox will be unchecked by default, so any users
that currently have an api level filter selected will now
see all apis until they click the checkbox. the old api level
cookie is still saved the same, but the selected value will only
be applied if the checkbox is selected, which has its own cookie
for on or off.

tools/droiddoc/templates-sdk/customization.cs
tools/droiddoc/templates/assets/android-developer-core.css
tools/droiddoc/templates/assets/android-developer-docs.css
tools/droiddoc/templates/assets/android-developer-docs.js
tools/droiddoc/templates/assets/android-developer-reference.js

index 6bdb992..6ae8446 100644 (file)
@@ -73,9 +73,10 @@ def:custom_masthead() ?>
           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 @@ def:custom_masthead() ?>
                   if:!last(since) ?>, <?cs /if ?><?cs
                 /each 
               ?> ];
-              buildApiLevelToggle();
+              buildApiLevelSelector();
             </script><?cs 
                        /if ?>
       </div><!-- headerRight -->
index eb7e107..954032b 100644 (file)
@@ -48,11 +48,12 @@ a:visited code {
 }
 
 input, select,
-textarea, option {
+textarea, option, label {
   font-family:inherit;
   font-size:inherit;
   padding:0;
   margin:0;
+  vertical-align:middle;
 }
 
 option {
index e8dc20b..d700c0e 100644 (file)
@@ -341,6 +341,9 @@ links to summary tables) */
 #api-level-toggle {
   padding:0 10px;
   font-size:11px;
+}
+
+#api-level-toggle label.disabled {
   color:#999;
 }
 
index 5f472f6..db5e64f 100644 (file)
@@ -99,7 +99,7 @@ function readCookie(cookie) {
 }
 
 function writeCookie(cookie, val, section, expiration) {
-  if (!val) return;  
+  if (val==undefined) return;
   section = section == null ? "_" : "_"+section+"_";
   if (expiration == null) {
     var date = new Date();
index 3080760..b96e136 100644 (file)
@@ -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 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);
+  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);
+  }
   
-       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 @@ function expand_node(me, node)
     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 @@ function init_default_navtree(toroot) {
   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");
 }