diff --git a/README.md b/README.md index e0a2402e..cfd00345 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Designed and developed by [Eric Kok](eric@2312.nl) of [2312 development](http:// License ======= - Copyright 2010-2013 Eric Kok et al. + Copyright 2010-2014 Eric Kok et al. Transdroid is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/core/AndroidManifest.xml b/core/AndroidManifest.xml index 213dc79b..15c7bfd5 100644 --- a/core/AndroidManifest.xml +++ b/core/AndroidManifest.xml @@ -17,7 +17,7 @@ --> + diff --git a/core/res/menu/fragment_rssitems_cab.xml b/core/res/menu/fragment_rssitems_cab.xml index 07ca6b1a..6e0f14df 100644 --- a/core/res/menu/fragment_rssitems_cab.xml +++ b/core/res/menu/fragment_rssitems_cab.xml @@ -20,24 +20,25 @@ android:id="@+id/action_addall" android:icon="?attr/ic_action_new" android:showAsAction="always" - android:title="@string/action_addall" /> - + android:title="@string/action_addall"/> - + android:title="@string/action_showdetails"/> - + android:title="@string/action_openwebsite"/> - - + android:title="@string/action_useassearch"/> + + + \ No newline at end of file diff --git a/core/res/values/strings.xml b/core/res/values/strings.xml index 391908ef..eaa7d429 100644 --- a/core/res/values/strings.xml +++ b/core/res/values/strings.xml @@ -61,6 +61,7 @@ High Remote play in VLC Download using FTP(S) + Copy to clipboard Show details Open website Use as new search @@ -90,6 +91,7 @@ Select all Select finished Invert selection + Add torrent to… STATUS: %1$s Waiting to check… @@ -216,6 +218,9 @@ Servers Add new server Add seedbox + Default server + Last used + Ask when adding torrent Search sites Set default site Add web search site diff --git a/core/res/xml/pref_main.xml b/core/res/xml/pref_main.xml index 9fb7cff8..584b1cab 100644 --- a/core/res/xml/pref_main.xml +++ b/core/res/xml/pref_main.xml @@ -24,7 +24,12 @@ + android:order="98" /> + order) { + // Move 'up' one place to account for the removed server setting + edit.putInt("header_defaultserver", --order); + } + edit.commit(); } + /** + * Returns the settings of the server that was explicitly selected by the user to select as default or, when no + * specific default server was selected, the last used server settings. As opposed to getDefaultServerKey(int), this + * method checks whether the particular server still exists (and returns the first server if not). If no servers are + * configured, null is returned. + * @return A server settings object of the server to use by default, or null if no server is yet configured + */ + public ServerSetting getDefaultServer() { + + int defaultServer = getDefaultServerKey(); + if (defaultServer == DEFAULTSERVER_LASTUSED || defaultServer == DEFAULTSERVER_ASKONADD) { + return getLastUsedServer(); + } + + // Use the explicitly selected default server + int max = getMaxOfAllServers(); // Zero-based index, so with max == 0 there is 1 server + if (max < 0) { + // No servers configured + return null; + } + if (defaultServer < 0 || defaultServer > max) { + // Last server was never set or no longer exists + return getServerSetting(0); + } + return getServerSetting(defaultServer); + + } + + /** + * Returns the unique key of the server setting that the user selected as their default server, or code indicating + * that the last used server should be selected by default; use with getDefaultServer directly. WARNING: the + * returned string may no longer refer to a known server setting key. + * @return An integer; if it is 0 or higher it represents the unique key of a configured server setting, -2 means + * the last used server should be selected as default instead and -1 means the last used server should be + * selected by default for viewing yet it should always ask when adding a new torrent + */ + public int getDefaultServerKey() { + String defaultServer = prefs.getString("header_defaultserver", Integer.toString(DEFAULTSERVER_LASTUSED)); + try { + return Integer.parseInt(defaultServer); + } catch (NumberFormatException e) { + // This should NEVER happen but if the setting somehow is not a number, return the default + return DEFAULTSERVER_LASTUSED; + } + } + /** * Returns the settings of the server that was last used by the user. As opposed to getLastUsedServerKey(int), this * method checks whether a server was already registered as being last used and check whether the server still diff --git a/core/src/org/transdroid/core/gui/DetailsActivity.java b/core/src/org/transdroid/core/gui/DetailsActivity.java index bba9c423..65021523 100644 --- a/core/src/org/transdroid/core/gui/DetailsActivity.java +++ b/core/src/org/transdroid/core/gui/DetailsActivity.java @@ -104,7 +104,7 @@ public class DetailsActivity extends Activity implements TorrentTasksExecutor, R private PullToRefreshAttacher pullToRefreshAttacher = null; // Details view components - @FragmentById(resName = "torrent_details") + @FragmentById(resName = "torrentdetails_fragment") protected DetailsFragment fragmentDetails; @Override diff --git a/core/src/org/transdroid/core/gui/DetailsFragment.java b/core/src/org/transdroid/core/gui/DetailsFragment.java index f6fd5516..e7af1e2a 100644 --- a/core/src/org/transdroid/core/gui/DetailsFragment.java +++ b/core/src/org/transdroid/core/gui/DetailsFragment.java @@ -52,6 +52,9 @@ import org.transdroid.daemon.TorrentFile; import android.annotation.SuppressLint; import android.app.Fragment; +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; import android.content.Intent; import android.net.Uri; import android.view.ActionMode; @@ -475,6 +478,20 @@ public class DetailsFragment extends Fragment implements OnTrackersUpdatedListen mode.finish(); return true; + } else if (itemId == R.id.action_copytoclipboard) { + + StringBuilder names = new StringBuilder(); + for (int f = 0; f < checked.size(); f++) { + if (f != 0) + names.append("\n"); + names.append(checked.get(f).getName()); + } + ClipboardManager clipboardManager = (ClipboardManager) getActivity().getSystemService( + Context.CLIPBOARD_SERVICE); + clipboardManager.setPrimaryClip(ClipData.newPlainText("Transdroid", names.toString())); + mode.finish(); + return true; + } else { Priority priority = Priority.Off; if (itemId == R.id.action_priority_low) diff --git a/core/src/org/transdroid/core/gui/ServerPickerDialog.java b/core/src/org/transdroid/core/gui/ServerPickerDialog.java new file mode 100644 index 00000000..c1f12920 --- /dev/null +++ b/core/src/org/transdroid/core/gui/ServerPickerDialog.java @@ -0,0 +1,41 @@ +package org.transdroid.core.gui; + +import java.util.List; + +import org.transdroid.core.R; +import org.transdroid.core.app.settings.ServerSetting; + +import android.app.AlertDialog; +import android.app.DialogFragment; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; + +public class ServerPickerDialog { + + /** + * Opens a dialog that allows the selection of a configured server (manual or seedbox). The calling activity will + * receive a callback on its switchServerAndAddFromIntent(int) method. + * @param activity The torrents activity from which the picker is started (and which received the callback) + * @param serverSettings The list of all available servers, of which their names will be offered to the user to pick + * from (and its position in the list is returned to the activity) + */ + public static void startServerPicker(final TorrentsActivity activity, List serverSettings) { + final String[] serverNames = new String[serverSettings.size()]; + for (int i = 0; i < serverSettings.size(); i++) { + serverNames[i] = serverSettings.get(i).getName(); + } + new DialogFragment() { + public android.app.Dialog onCreateDialog(android.os.Bundle savedInstanceState) { + return new AlertDialog.Builder(activity).setTitle(R.string.navigation_pickserver) + .setItems(serverNames, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (activity != null) + activity.switchServerAndAddFromIntent(which); + } + }).create(); + }; + }.show(activity.getFragmentManager(), "serverpicker"); + } + +} diff --git a/core/src/org/transdroid/core/gui/TorrentsActivity.java b/core/src/org/transdroid/core/gui/TorrentsActivity.java index 4a9ffd87..3d6bd178 100644 --- a/core/src/org/transdroid/core/gui/TorrentsActivity.java +++ b/core/src/org/transdroid/core/gui/TorrentsActivity.java @@ -51,11 +51,6 @@ import org.transdroid.core.gui.lists.NoProgressHeaderTransformer; import org.transdroid.core.gui.lists.SimpleListItem; import org.transdroid.core.gui.log.*; import org.transdroid.core.gui.navigation.*; -import org.transdroid.core.gui.navigation.Label; -import org.transdroid.core.gui.navigation.NavigationFilter; -import org.transdroid.core.gui.navigation.NavigationHelper; -import org.transdroid.core.gui.navigation.RefreshableActivity; -import org.transdroid.core.gui.navigation.StatusType; import org.transdroid.core.gui.rss.*; import org.transdroid.core.gui.search.BarcodeHelper; import org.transdroid.core.gui.search.FilePickerHelper; @@ -173,9 +168,9 @@ public class TorrentsActivity extends Activity implements OnNavigationListener, protected ArrayList