Author: toad
Date: 2008-05-07 12:45:34 +0000 (Wed, 07 May 2008)
New Revision: 19815

Modified:
   trunk/freenet/src/freenet/clients/http/QueueToadlet.java
Log:
Don't allow users to set VERY_HIGH/EMERGENCY if advanced mode is not enabled.
Don't show them in the key either unless advanced mode is enabled or there are 
requests at those priorities.

Modified: trunk/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/QueueToadlet.java    2008-05-07 
12:31:52 UTC (rev 19814)
+++ trunk/freenet/src/freenet/clients/http/QueueToadlet.java    2008-05-07 
12:45:34 UTC (rev 19815)
@@ -498,6 +498,8 @@
                        return;
                }

+               short lowestQueuedPrio = RequestStarter.MINIMUM_PRIORITY_CLASS;
+               
                for(int i=0;i<reqs.length;i++) {
                        ClientRequest req = reqs[i];
                        if(req instanceof ClientGet) {
@@ -513,6 +515,9 @@
                                } else if(cg.hasFinished()) {
                                        failedDownload.add(cg);
                                } else {
+                                       short prio = cg.getPriority();
+                                       if(prio < lowestQueuedPrio)
+                                               lowestQueuedPrio = prio;
                                        uncompletedDownload.add(cg);
                                }
                        } else if(req instanceof ClientPut) {
@@ -522,6 +527,9 @@
                                } else if(cp.hasFinished()) {
                                        failedUpload.add(cp);
                                } else {
+                                       short prio = req.getPriority();
+                                       if(prio < lowestQueuedPrio)
+                                               lowestQueuedPrio = prio;
                                        uncompletedUpload.add(cp);
                                }
                        } else if(req instanceof ClientPutDir) {
@@ -531,6 +539,9 @@
                                } else if(cp.hasFinished()) {
                                        failedDirUpload.add(cp);
                                } else {
+                                       short prio = req.getPriority();
+                                       if(prio < lowestQueuedPrio)
+                                               lowestQueuedPrio = prio;
                                        uncompletedDirUpload.add(cp);
                                }
                        }
@@ -661,20 +672,21 @@
                                L10n.getString("QueueToadlet.priority6")
                };

+               boolean advancedModeEnabled = core.isAdvancedModeEnabled();
+
                HTMLNode legendBox = 
contentNode.addChild(pageMaker.getInfobox("legend", 
L10n.getString("QueueToadlet.legend")));
                HTMLNode legendContent = pageMaker.getContentNode(legendBox);
                HTMLNode legendTable = legendContent.addChild("table", "class", 
"queue");
                HTMLNode legendRow = legendTable.addChild("tr");
                for(int i=0; i<7; i++){
-                       legendRow.addChild("td", "class", "priority" + i, 
priorityClasses[i]);
+                       if(i > 1 || advancedModeEnabled || i <= 
lowestQueuedPrio)
+                               legendRow.addChild("td", "class", "priority" + 
i, priorityClasses[i]);
                }

                if (reqs.length > 1 && 
SimpleToadletServer.isPanicButtonToBeShown) {
                        contentNode.addChild(createPanicBox(pageMaker, ctx));
                }

-               boolean advancedModeEnabled = core.isAdvancedModeEnabled();
-
                if (!completedDownloadToTemp.isEmpty()) {
                        contentNode.addChild("a", "id", 
"completedDownloadToTemp");
                        HTMLNode completedDownloadsTempInfobox = 
contentNode.addChild(pageMaker.getInfobox("completed_requests", 
L10n.getString("QueueToadlet.completedDinTempDirectory", new String[]{ "size" 
}, new String[]{ String.valueOf(completedDownloadToTemp.size()) })));
@@ -860,13 +872,14 @@
                return filenameCell;
        }

-       private HTMLNode createPriorityCell(PageMaker pageMaker, String 
identifier, short priorityClass, ToadletContext ctx, String[] priorityClasses) {
+       private HTMLNode createPriorityCell(PageMaker pageMaker, String 
identifier, short priorityClass, ToadletContext ctx, String[] priorityClasses, 
boolean advancedModeEnabled) {

                HTMLNode priorityCell = new HTMLNode("td", "class", 
"request-priority nowrap");
                HTMLNode priorityForm = ctx.addFormChild(priorityCell, 
"/queue/", "queueChangePriorityCell-" + identifier.hashCode());
                priorityForm.addChild("input", new String[] { "type", "name", 
"value" }, new String[] { "hidden", "identifier", identifier });
                HTMLNode prioritySelect = priorityForm.addChild("select", 
"name", "priority");
                for (int p = 0; p < RequestStarter.NUMBER_OF_PRIORITY_CLASSES; 
p++) {
+                       if(p < 1 && !advancedModeEnabled) continue;
                        if (p == priorityClass) {
                                prioritySelect.addChild("option", new String[] 
{ "value", "selected" }, new String[] { String.valueOf(p), "selected" }, 
priorityClasses[p]);
                        } else {
@@ -1071,7 +1084,7 @@
                                                
requestRow.addChild(createFilenameCell(((ClientPut) 
clientRequest).getOrigFilename()));
                                        }
                                } else if (column == LIST_PRIORITY) {
-                                       
requestRow.addChild(createPriorityCell(pageMaker, 
clientRequest.getIdentifier(), clientRequest.getPriority(), ctx, 
priorityClasses));
+                                       
requestRow.addChild(createPriorityCell(pageMaker, 
clientRequest.getIdentifier(), clientRequest.getPriority(), ctx, 
priorityClasses, advancedModeEnabled));
                                } else if (column == LIST_FILES) {
                                        
requestRow.addChild(createNumberCell(((ClientPutDir) 
clientRequest).getNumberOfFiles()));
                                } else if (column == LIST_TOTAL_SIZE) {


Reply via email to