Changeset e24ebf4 for apps


Ignore:
Timestamp:
Jul 12, 2018 1:41:44 PM (2 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
5fd1b69
Parents:
d34087f
Message:

i2psnark: UI config for sequential download (ticket #2234)
Sort with Collator
CSS TODO

Location:
apps/i2psnark/java/src/org/klomp/snark
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • apps/i2psnark/java/src/org/klomp/snark/Storage.java

    rd34087f re24ebf4  
    2626import java.io.IOException;
    2727import java.io.RandomAccessFile;
     28import java.io.Serializable;
    2829import java.nio.charset.Charset;
    2930import java.nio.charset.CharsetEncoder;
    3031import java.security.MessageDigest;
     32import java.text.Collator;
    3133import java.util.ArrayList;
    3234import java.util.Collections;
     35import java.util.Comparator;
    3336import java.util.Iterator;
    3437import java.util.List;
     
    518521          return;
    519522      if (yes) {
    520           int sz = _torrentFiles.size();
     523          List<TorrentFile> sorted = _torrentFiles;
     524          int sz = sorted.size();
     525          if (sz > 1) {
     526              sorted = new ArrayList<TorrentFile>(sorted);
     527              Collections.sort(sorted, new FileNameComparator());
     528          }
    521529          for (int i = 0; i < sz; i++) {
    522               _torrentFiles.get(i).priority = sz - i;
     530              TorrentFile tf = sorted.get(i);
     531              // higher number is higher priority
     532              if (tf.priority >= PRIORITY_NORMAL)
     533                  tf.priority = sz - i;
    523534          }
    524535      } else {
     
    528539          }
    529540      }
     541  }
     542
     543  /**
     544   *  Sort with locale comparator.
     545   *  (not using TorrentFile.compareTo())
     546   *  @since 0.9.36
     547   */
     548  private static class FileNameComparator implements Comparator<TorrentFile>, Serializable {
     549
     550     private final Collator c = Collator.getInstance();
     551
     552     public int compare(TorrentFile l, TorrentFile r) {
     553         return c.compare(l.toString(), r.toString());
     554     }
    530555  }
    531556
  • apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java

    rd34087f re24ebf4  
    29322932                String nonce = val[0];
    29332933                if (String.valueOf(_nonce).equals(nonce)) {
    2934                     if (postParams.get("savepri") != null) {
     2934                    if (postParams.get("savepri") != null ||
     2935                        postParams.get("setInOrderEnabled") != null) {
    29352936                        savePriorities(snark, postParams);
    29362937                    } else if (postParams.get("addComment") != null) {
     
    29752976
    29762977        boolean showStopStart = snark != null;
    2977         boolean showPriority = snark != null && snark.getStorage() != null && !snark.getStorage().complete() &&
     2978        Storage storage = snark != null ? snark.getStorage() : null;
     2979        boolean showPriority = storage != null && !storage.complete() &&
    29782980                               r.isDirectory();
    29792981
     
    30373039               .append(DataHelper.escapeHTML(fullPath))
    30383040               .append("</a></td></tr>\n");
    3039             if (snark.getStorage() != null) {
     3041            if (storage != null) {
    30403042                buf.append("<tr><td>");
    30413043                toThemeImg(buf, "file");
     
    30433045                   .append(_t("Data location"))
    30443046                   .append(":</b> ")
    3045                    .append(DataHelper.escapeHTML(snark.getStorage().getBase().getPath()))
     3047                   .append(DataHelper.escapeHTML(storage.getBase().getPath()))
    30463048                   .append("</td></tr>\n");
    30473049            }
     
    32863288                buf.append("</td></tr>\n");
    32873289            }
     3290
     3291            boolean showInOrder = storage != null && !storage.complete() &&
     3292                                  meta != null && meta.getFiles() != null && meta.getFiles().size() > 1;
     3293            if (showInOrder) {
     3294                buf.append("<tr id=\"torrentOrderControl\"><td colspan=\"2\">");
     3295                buf.append(_t("Download files in order"));
     3296                buf.append(":<label><input type=\"checkbox\" class=\"optbox\" name=\"enableInOrder\" id=\"enableInOrder\" ");
     3297                if (storage.getInOrder())
     3298                    buf.append("checked=\"checked\"");
     3299                buf.append(">&nbsp;");
     3300                buf.append(_t("Enable for this torrent"));
     3301                buf.append("</label>" +
     3302                           "<input type=\"submit\" name=\"setInOrderEnabled\" value=\"");
     3303                buf.append(_t("Save Preference"));
     3304                buf.append("\" class=\"accept\">" +
     3305                           "</td></tr>\n");
     3306            }
    32883307        } else {
    32893308            // snark == null
     
    33243343        }
    33253344
    3326         Storage storage = snark != null ? snark.getStorage() : null;
    33273345        List<Sorters.FileAndIndex> fileList = new ArrayList<Sorters.FileAndIndex>(ls.length);
    33283346        // precompute remaining for all files for efficiency
     
    34253443        boolean showSaveButton = false;
    34263444        boolean rowEven = true;
     3445        boolean inOrder = storage != null && storage.getInOrder();
    34273446        for (Sorters.FileAndIndex fai : fileList)
    34283447        {
     
    34483467                //status = toImg("tick") + ' ' + _t("Directory");
    34493468            } else {
    3450                 if (snark == null || snark.getStorage() == null) {
     3469                if (storage == null) {
    34513470                    // Assume complete, perhaps he removed a completed torrent but kept a bookmark
    34523471                    complete = true;
     
    35283547                buf.append("<td class=\"priority\">");
    35293548                if ((!complete) && (!item.isDirectory())) {
    3530                     buf.append("<label class=\"priorityHigh\" title=\"").append(_t("Download file at high priority")).append("\">" +
    3531                                "\n<input type=\"radio\" onclick=\"priorityclicked();\" class=\"prihigh\" value=\"5\" name=\"pri.").append(fileIndex).append("\" ");
    3532                     if (priority > 0)
    3533                         buf.append("checked=\"checked\"");
    3534                     buf.append('>')
    3535                        .append(_t("High")).append("</label>");
     3549                    if (!inOrder) {
     3550                        buf.append("<label class=\"priorityHigh\" title=\"").append(_t("Download file at high priority")).append("\">" +
     3551                                   "\n<input type=\"radio\" onclick=\"priorityclicked();\" class=\"prihigh\" value=\"5\" name=\"pri.").append(fileIndex).append("\" ");
     3552                        if (priority > 0)
     3553                            buf.append("checked=\"checked\"");
     3554                        buf.append('>')
     3555                           .append(_t("High")).append("</label>");
     3556                    }
    35363557
    35373558                    buf.append("<label class=\"priorityNormal\" title=\"").append(_t("Download file at normal priority")).append("\">" +
    35383559                               "\n<input type=\"radio\" onclick=\"priorityclicked();\" class=\"prinorm\" value=\"0\" name=\"pri.").append(fileIndex).append("\" ");
    3539                     if (priority == 0)
     3560                    if (priority == 0 || (inOrder && priority >= 0))
    35403561                        buf.append("checked=\"checked\"");
    35413562                    buf.append('>')
     
    35563577        if (showSaveButton) {
    35573578            buf.append("<thead><tr id=\"setPriority\"><th class=\"headerpriority\" colspan=\"5\">" +
    3558                        "<span class=\"script\"><a class=\"control\" id=\"setallhigh\" href=\"javascript:void(null);\" onclick=\"setallhigh();\">")
    3559                .append(toImg("clock_red")).append(_t("Set all high")).append("</a>\n" +
    3560                        "<a class=\"control\" id=\"setallnorm\" href=\"javascript:void(null);\" onclick=\"setallnorm();\">")
     3579                       "<span class=\"script\">");
     3580            if (!inOrder) {
     3581                buf.append("<a class=\"control\" id=\"setallhigh\" href=\"javascript:void(null);\" onclick=\"setallhigh();\">")
     3582                   .append(toImg("clock_red")).append(_t("Set all high")).append("</a>\n");
     3583            }
     3584            buf.append("<a class=\"control\" id=\"setallnorm\" href=\"javascript:void(null);\" onclick=\"setallnorm();\">")
    35613585               .append(toImg("clock")).append(_t("Set all normal")).append("</a>\n" +
    35623586                       "<a class=\"control\" id=\"setallskip\" href=\"javascript:void(null);\" onclick=\"setallskip();\">")
     
    39273951            }
    39283952        }
     3953        if (postParams.get("setInOrderEnabled") != null)
     3954            storage.setInOrder(postParams.get("enableInOrder") != null);
    39293955        snark.updatePiecePriorities();
    39303956        _manager.saveTorrentStatus(snark);
Note: See TracChangeset for help on using the changeset viewer.