From 2c717ad766efbb6897180b1b06ffbb21aabcdc28 Mon Sep 17 00:00:00 2001 From: Nikhil Dahake Date: Sat, 17 May 2025 19:34:28 +0530 Subject: [PATCH] Feature request: https://github.com/erickok/transdroid/issues/670 (Request to sort by trackers) Added method to sort torrents by number of trackers. --- .../transdroid/core/gui/TorrentsActivity.java | 5 ++ .../transdroid/core/gui/TorrentsFragment.java | 55 ++++++++++++++++++- .../java/org/transdroid/daemon/Torrent.java | 10 +++- .../transdroid/daemon/TorrentsComparator.java | 4 ++ .../org/transdroid/daemon/TorrentsSortBy.java | 4 +- .../res/menu/activity_torrents_secondary.xml | 3 + app/src/main/res/values/strings.xml | 1 + 7 files changed, 78 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/transdroid/core/gui/TorrentsActivity.java b/app/src/main/java/org/transdroid/core/gui/TorrentsActivity.java index 0a6083e8..8068bed8 100644 --- a/app/src/main/java/org/transdroid/core/gui/TorrentsActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/TorrentsActivity.java @@ -864,6 +864,11 @@ protected void sortBySize() { fragmentTorrents.sortBy(TorrentsSortBy.Size); } + @OptionsItem(R.id.action_sort_numTrackers) + protected void sortByNumberOfTrackers() { + fragmentTorrents.sortBy(TorrentsSortBy.NumberOfTrackers); + } + /** * Redirect the newly entered list filter to the torrents fragment. * diff --git a/app/src/main/java/org/transdroid/core/gui/TorrentsFragment.java b/app/src/main/java/org/transdroid/core/gui/TorrentsFragment.java index 9ff52029..04b0e98e 100644 --- a/app/src/main/java/org/transdroid/core/gui/TorrentsFragment.java +++ b/app/src/main/java/org/transdroid/core/gui/TorrentsFragment.java @@ -43,9 +43,11 @@ import org.androidannotations.annotations.ViewById; import org.transdroid.R; import org.transdroid.core.app.settings.ApplicationSettings; +import org.transdroid.core.app.settings.ServerSetting; import org.transdroid.core.app.settings.SystemSettings; import org.transdroid.core.gui.lists.TorrentsAdapter; import org.transdroid.core.gui.lists.TorrentsAdapter_; +import org.transdroid.core.gui.log.Log; import org.transdroid.core.gui.navigation.Label; import org.transdroid.core.gui.navigation.NavigationFilter; import org.transdroid.core.gui.navigation.RefreshableActivity; @@ -53,14 +55,28 @@ import org.transdroid.core.gui.navigation.SetLabelDialog; import org.transdroid.core.gui.navigation.SetLabelDialog.OnLabelPickedListener; import org.transdroid.daemon.Daemon; +import org.transdroid.daemon.IDaemonAdapter; import org.transdroid.daemon.Torrent; +import org.transdroid.daemon.TorrentDetails; import org.transdroid.daemon.TorrentsComparator; import org.transdroid.daemon.TorrentsSortBy; +import org.transdroid.daemon.task.DaemonTaskResult; +import org.transdroid.daemon.task.GetTorrentDetailsTask; +import org.transdroid.daemon.task.GetTorrentDetailsTaskSuccessResult; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Locale; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; /** * Fragment that shows a list of torrents that are active on the server. It supports sorting and filtering and can show connection progress and @@ -78,6 +94,8 @@ public class TorrentsFragment extends Fragment implements OnLabelPickedListener protected ApplicationSettings applicationSettings; @Bean protected SystemSettings systemSettings; + @Bean + protected Log log; @InstanceState protected ArrayList lastMultiSelectedTorrents; @InstanceState @@ -112,6 +130,7 @@ public class TorrentsFragment extends Fragment implements OnLabelPickedListener protected TextView errorText; @ViewById protected ProgressBar loadingProgress; + private static final String LOG_NAME = "Transdroid daemon"; private MultiChoiceModeListener onTorrentsSelected = new MultiChoiceModeListener() { private SelectionManagerMode selectionManagerMode; @@ -270,7 +289,7 @@ public void updateTorrents(ArrayList newTorrents, ArrayList