From 8ae1abfdb015a13dcd049a05c2ca4e596016ada6 Mon Sep 17 00:00:00 2001 From: Kumaresan Rajeswaran Date: Sat, 11 Jul 2015 18:24:50 +0530 Subject: [PATCH 1/5] Adding confirm dialog for removing torrents --- .../core/gui/ConfirmRemoveDialog.java | 53 +++++++++++++++++++ .../transdroid/core/gui/DetailsFragment.java | 13 ++--- .../transdroid/core/gui/TorrentsFragment.java | 12 +---- .../core/gui/navigation/NavigationHelper.java | 6 +-- .../gui/search/SearchHistoryProvider.java | 2 +- app/src/main/res/menu/fragment_details.xml | 4 -- .../main/res/menu/fragment_torrents_cab.xml | 4 -- app/src/main/res/values/strings.xml | 6 ++- 8 files changed, 66 insertions(+), 34 deletions(-) create mode 100644 app/src/main/java/org/transdroid/core/gui/ConfirmRemoveDialog.java diff --git a/app/src/main/java/org/transdroid/core/gui/ConfirmRemoveDialog.java b/app/src/main/java/org/transdroid/core/gui/ConfirmRemoveDialog.java new file mode 100644 index 00000000..89aa3593 --- /dev/null +++ b/app/src/main/java/org/transdroid/core/gui/ConfirmRemoveDialog.java @@ -0,0 +1,53 @@ +package org.transdroid.core.gui; + +import android.app.AlertDialog; +import android.app.DialogFragment; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; + +import org.transdroid.R; +import org.transdroid.daemon.Torrent; + +import java.util.List; + +public class ConfirmRemoveDialog { + + /** + * Opens a dialog that confirms the removal of a torrent, along with an option for with deleting downloaded files + * @param activity The torrents activity from which the dialog is started (and which received the callback) + * @param torrents List of torrents to be removed + */ + public static void startConfirmRemove(final TorrentsActivity activity, final List torrents) { + final CharSequence checkboxItems[] = {activity.getString(R.string.navigation_confirmdataremoval)}; + final boolean[] isRemoveDataChecked = {false}; + + new DialogFragment() { + public android.app.Dialog onCreateDialog(android.os.Bundle savedInstanceState) { + return new AlertDialog.Builder(activity).setTitle(R.string.navigation_confirmremove) + .setMultiChoiceItems(checkboxItems, null, new DialogInterface.OnMultiChoiceClickListener() { + @Override + public void onClick(DialogInterface dialog, int which, boolean isChecked) { + isRemoveDataChecked[0] = isChecked; + } + }) + .setPositiveButton(android.R.string.ok, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + for (Torrent torrent : torrents) { + activity.removeTorrent(torrent, isRemoveDataChecked[0]); + } + dialog.dismiss(); + } + }) + .setNegativeButton(android.R.string.cancel, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }) + .create(); + }; + }.show(activity.getFragmentManager(), "confirmremoval"); + } + +} diff --git a/app/src/main/java/org/transdroid/core/gui/DetailsFragment.java b/app/src/main/java/org/transdroid/core/gui/DetailsFragment.java index 013bbbab..93860d8a 100644 --- a/app/src/main/java/org/transdroid/core/gui/DetailsFragment.java +++ b/app/src/main/java/org/transdroid/core/gui/DetailsFragment.java @@ -17,6 +17,7 @@ package org.transdroid.core.gui; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -258,7 +259,6 @@ public void onPrepareOptionsMenu(Menu menu) { menu.findItem(R.id.action_start_direct).setVisible(false); menu.findItem(R.id.action_stop).setVisible(false); menu.findItem(R.id.action_remove).setVisible(false); - menu.findItem(R.id.action_remove_withdata).setVisible(false); menu.findItem(R.id.action_setlabel).setVisible(false); menu.findItem(R.id.action_forcerecheck).setVisible(false); menu.findItem(R.id.action_updatetrackers).setVisible(false); @@ -274,8 +274,6 @@ public void onPrepareOptionsMenu(Menu menu) { menu.findItem(R.id.action_start_direct).setVisible(startStop && !forcedStart && torrent.canStart()); menu.findItem(R.id.action_stop).setVisible(startStop && torrent.canStop()); menu.findItem(R.id.action_remove).setVisible(true); - boolean removeWithData = Daemon.supportsRemoveWithData(torrent.getDaemon()); - menu.findItem(R.id.action_remove_withdata).setVisible(removeWithData); boolean setLabel = Daemon.supportsSetLabel(torrent.getDaemon()); menu.findItem(R.id.action_setlabel).setVisible(setLabel); boolean forceRecheck = Daemon.supportsForceRecheck(torrent.getDaemon()); @@ -317,14 +315,9 @@ protected void stopTorrent() { getTasksExecutor().stopTorrent(torrent); } - @OptionsItem(resName = "action_remove_default") + @OptionsItem(resName = "action_remove") protected void removeTorrentDefault() { - getTasksExecutor().removeTorrent(torrent, false); - } - - @OptionsItem(resName = "action_remove_withdata") - protected void removeTorrentWithData() { - getTasksExecutor().removeTorrent(torrent, true); + ConfirmRemoveDialog.startConfirmRemove((TorrentsActivity) getActivity(), Arrays.asList(torrent)); } @OptionsItem(resName = "action_setlabel") 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 6bb7a267..cc6d0c84 100644 --- a/app/src/main/java/org/transdroid/core/gui/TorrentsFragment.java +++ b/app/src/main/java/org/transdroid/core/gui/TorrentsFragment.java @@ -302,16 +302,8 @@ public boolean onActionItemClicked(ActionMode mode, MenuItem item) { } mode.finish(); return true; - } else if (itemId == R.id.action_remove_default) { - for (Torrent torrent : checked) { - getTasksExecutor().removeTorrent(torrent, false); - } - mode.finish(); - return true; - } else if (itemId == R.id.action_remove_withdata) { - for (Torrent torrent : checked) { - getTasksExecutor().removeTorrent(torrent, true); - } + } else if (itemId == R.id.action_remove) { + ConfirmRemoveDialog.startConfirmRemove((TorrentsActivity) getActivity(), checked); mode.finish(); return true; } else if (itemId == R.id.action_setlabel) { diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/NavigationHelper.java b/app/src/main/java/org/transdroid/core/gui/navigation/NavigationHelper.java index 53b1584c..2f7f7d0e 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/NavigationHelper.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/NavigationHelper.java @@ -26,7 +26,7 @@ import android.text.SpannableString; import android.text.style.TypefaceSpan; -import com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiscCache; +import com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiskCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; @@ -78,8 +78,8 @@ public ImageLoader getImageCache() { if (imageCache == null) { imageCache = ImageLoader.getInstance(); try { - LruDiscCache diskCache = - new LruDiscCache(context.getCacheDir(), null, new Md5FileNameGenerator(), 640000, 25); + LruDiskCache diskCache = + new LruDiskCache(context.getCacheDir(), null, new Md5FileNameGenerator(), 640000, 25); // @formatter:off Builder imageCacheBuilder = new Builder(context) .defaultDisplayImageOptions( diff --git a/app/src/main/java/org/transdroid/core/gui/search/SearchHistoryProvider.java b/app/src/main/java/org/transdroid/core/gui/search/SearchHistoryProvider.java index 930472df..b3c6edb5 100644 --- a/app/src/main/java/org/transdroid/core/gui/search/SearchHistoryProvider.java +++ b/app/src/main/java/org/transdroid/core/gui/search/SearchHistoryProvider.java @@ -28,7 +28,7 @@ */ public class SearchHistoryProvider extends SearchRecentSuggestionsProvider { - public final static String AUTHORITY = BuildConfig.PACKAGE_NAME + ".search.SearchHistoryProvider"; + public final static String AUTHORITY = BuildConfig.APPLICATION_ID + ".search.SearchHistoryProvider"; public final static int MODE = DATABASE_MODE_QUERIES; public SearchHistoryProvider() { diff --git a/app/src/main/res/menu/fragment_details.xml b/app/src/main/res/menu/fragment_details.xml index 75a6043f..666121d3 100644 --- a/app/src/main/res/menu/fragment_details.xml +++ b/app/src/main/res/menu/fragment_details.xml @@ -57,10 +57,6 @@ android:showAsAction="always" android:title="@string/action_remove" android:orderInCategory="204"> - - - - - - - - Select finished Invert selection Add torrent to… - - STATUS: %1$s + Confirm torrent removal? + Also remove downloaded files? + + STATUS: %1$s Waiting to check… Verifying local data… Waiting to download %s From 91552322be3518e049bfe09c3a79f51b485b9b3e Mon Sep 17 00:00:00 2001 From: Kumaresan Rajeswaran Date: Sat, 11 Jul 2015 19:45:34 +0530 Subject: [PATCH 2/5] Fixing indent, improving delete logic --- .../transdroid/core/gui/ConfirmRemoveDialog.java | 7 +++++-- .../org/transdroid/core/gui/DetailsFragment.java | 2 +- .../org/transdroid/core/gui/TorrentsActivity.java | 14 +++++++------- .../org/transdroid/core/gui/TorrentsFragment.java | 2 +- .../core/gui/navigation/NavigationHelper.java | 2 -- .../gui/settings/PreferenceCompatActivity.java | 10 +++++----- app/src/main/res/menu/fragment_torrents_cab.xml | 2 +- app/src/main/res/values/strings.xml | 4 ++-- 8 files changed, 22 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/org/transdroid/core/gui/ConfirmRemoveDialog.java b/app/src/main/java/org/transdroid/core/gui/ConfirmRemoveDialog.java index 89aa3593..675a160e 100644 --- a/app/src/main/java/org/transdroid/core/gui/ConfirmRemoveDialog.java +++ b/app/src/main/java/org/transdroid/core/gui/ConfirmRemoveDialog.java @@ -6,6 +6,7 @@ import android.content.DialogInterface.OnClickListener; import org.transdroid.R; +import org.transdroid.daemon.Daemon; import org.transdroid.daemon.Torrent; import java.util.List; @@ -13,7 +14,7 @@ public class ConfirmRemoveDialog { /** - * Opens a dialog that confirms the removal of a torrent, along with an option for with deleting downloaded files + * Opens a dialog that confirms the removal of a torrent, along with an option for deleting downloaded files * @param activity The torrents activity from which the dialog is started (and which received the callback) * @param torrents List of torrents to be removed */ @@ -34,7 +35,9 @@ public void onClick(DialogInterface dialog, int which, boolean isChecked) { @Override public void onClick(DialogInterface dialog, int which) { for (Torrent torrent : torrents) { - activity.removeTorrent(torrent, isRemoveDataChecked[0]); + boolean shouldRemoveData = isRemoveDataChecked[0] && + Daemon.supportsRemoveWithData(torrent.getDaemon()); + activity.removeTorrent(torrent, shouldRemoveData); } dialog.dismiss(); } diff --git a/app/src/main/java/org/transdroid/core/gui/DetailsFragment.java b/app/src/main/java/org/transdroid/core/gui/DetailsFragment.java index 66e220b2..b9dcdda8 100644 --- a/app/src/main/java/org/transdroid/core/gui/DetailsFragment.java +++ b/app/src/main/java/org/transdroid/core/gui/DetailsFragment.java @@ -391,7 +391,7 @@ protected void stopTorrent() { @OptionsItem(resName = "action_remove") protected void removeTorrent() { - ConfirmRemoveDialog.startConfirmRemove((TorrentsActivity) getActivity(), Arrays.asList(torrent)); + ConfirmRemoveDialog.startConfirmRemove((TorrentsActivity) getActivity(), Arrays.asList(torrent)); } @OptionsItem(R.id.action_setlabel) 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 1b67e898..151d1345 100644 --- a/app/src/main/java/org/transdroid/core/gui/TorrentsActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/TorrentsActivity.java @@ -238,13 +238,13 @@ protected void init() { torrentsToolbar.addView(serverSelectionView); } actionsToolbar.addView(serverStatusView); -// actionsToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { -// @Override -// public boolean onMenuItemClick(MenuItem menuItem) { -// // Redirect to the classic activity implementation so we can use @OptionsItem methods -// return onOptionsItemSelected(menuItem); -// } -// }); + actionsToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem menuItem) { + // Redirect to the classic activity implementation so we can use @OptionsItem methods + return onOptionsItemSelected(menuItem); + } + }); setSupportActionBar(torrentsToolbar); // For direct menu item inflation by the contained fragments getSupportActionBar().setDisplayShowTitleEnabled(false); 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 0e09c09e..9c9d28a7 100644 --- a/app/src/main/java/org/transdroid/core/gui/TorrentsFragment.java +++ b/app/src/main/java/org/transdroid/core/gui/TorrentsFragment.java @@ -340,7 +340,7 @@ public boolean onActionItemClicked(ActionMode mode, MenuItem item) { mode.finish(); return true; } else if (itemId == R.id.action_remove) { - ConfirmRemoveDialog.startConfirmRemove((TorrentsActivity) getActivity(), checked); + ConfirmRemoveDialog.startConfirmRemove((TorrentsActivity) getActivity(), checked); mode.finish(); return true; } else if (itemId == R.id.action_setlabel) { diff --git a/app/src/main/java/org/transdroid/core/gui/navigation/NavigationHelper.java b/app/src/main/java/org/transdroid/core/gui/navigation/NavigationHelper.java index 157d31cf..cf468199 100644 --- a/app/src/main/java/org/transdroid/core/gui/navigation/NavigationHelper.java +++ b/app/src/main/java/org/transdroid/core/gui/navigation/NavigationHelper.java @@ -123,8 +123,6 @@ public ImageLoader getImageCache() { if (imageCache == null) { imageCache = ImageLoader.getInstance(); try { -// LruDiskCache diskCache = -// new LruDiskCache(context.getCacheDir(), null, new Md5FileNameGenerator(), 640000, 25); LruDiscCache diskCache = new LruDiscCache(context.getCacheDir(), null, new Md5FileNameGenerator(), 640000, 25); // @formatter:off Builder imageCacheBuilder = new Builder(context) diff --git a/app/src/main/java/org/transdroid/core/gui/settings/PreferenceCompatActivity.java b/app/src/main/java/org/transdroid/core/gui/settings/PreferenceCompatActivity.java index a2f3f8fb..f6b12ff9 100644 --- a/app/src/main/java/org/transdroid/core/gui/settings/PreferenceCompatActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/settings/PreferenceCompatActivity.java @@ -64,9 +64,9 @@ public void onSupportActionModeFinished(ActionMode actionMode) { } - @Nullable - @Override - public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback) { - return null; - } + @Nullable + @Override + public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback) { + return null; + } } diff --git a/app/src/main/res/menu/fragment_torrents_cab.xml b/app/src/main/res/menu/fragment_torrents_cab.xml index 5445774f..db770f4c 100644 --- a/app/src/main/res/menu/fragment_torrents_cab.xml +++ b/app/src/main/res/menu/fragment_torrents_cab.xml @@ -39,7 +39,7 @@ app:showAsAction="always" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 24263cf8..40ac8620 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -96,8 +96,8 @@ Select finished Invert selection Add torrent to… - Confirm torrent removal? - Also remove downloaded files? + Confirm torrent removal? + Also remove downloaded files? http://… STATUS: %1$s From dc4ffa56a4c22eb6602b70f7cd6b0b71d15c580f Mon Sep 17 00:00:00 2001 From: Kumaresan Rajeswaran Date: Sat, 11 Jul 2015 19:54:38 +0530 Subject: [PATCH 3/5] Adding a note to readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index f61b3336..97d86f21 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +*Note* This fork adds a confirmation dialog when removing torrents. One day, sleepy me deleted a rare torrent I was seeding, downloaded for many days painstakingly over 512 kbps "broadband"(#ThirdWorldProblems). I hit "Remove with data" instead of "Remove torrent", since the buttons were too close to each other. Here's a fix for that. + Transdroid ========== From 3b200707935e69d00af65e7e28e2f830c7d9338e Mon Sep 17 00:00:00 2001 From: Kumaresan Rajeswaran Date: Sat, 11 Jul 2015 19:54:38 +0530 Subject: [PATCH 4/5] Adding a note to readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index f61b3336..97d86f21 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +*Note* This fork adds a confirmation dialog when removing torrents. One day, sleepy me deleted a rare torrent I was seeding, downloaded for many days painstakingly over 512 kbps "broadband"(#ThirdWorldProblems). I hit "Remove with data" instead of "Remove torrent", since the buttons were too close to each other. Here's a fix for that. + Transdroid ========== From eac2b0a470609fab3d0e2bf778065b29d5cc1fe9 Mon Sep 17 00:00:00 2001 From: Kumaresan Rajeswaran Date: Sat, 11 Jul 2015 20:03:40 +0530 Subject: [PATCH 5/5] Revert "Adding a note to readme" This reverts commit 3b200707935e69d00af65e7e28e2f830c7d9338e. --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 97d86f21..f61b3336 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -*Note* This fork adds a confirmation dialog when removing torrents. One day, sleepy me deleted a rare torrent I was seeding, downloaded for many days painstakingly over 512 kbps "broadband"(#ThirdWorldProblems). I hit "Remove with data" instead of "Remove torrent", since the buttons were too close to each other. Here's a fix for that. - Transdroid ==========