From cc834a7ff51ddfc36b70b22f97884fe62a4c07a9 Mon Sep 17 00:00:00 2001 From: Eric Kok Date: Thu, 21 Mar 2013 12:04:47 +0100 Subject: [PATCH] Fix state in which no settings are know and no loading is performed. --- core/res/drawable/loading_progress.xml | 16 ++++++++++++---- core/res/layout/fragment_torrents.xml | 18 +++++++++++------- core/res/values-sw500dp/bools.xml | 2 +- core/res/values/bools.xml | 2 +- .../transdroid/core/gui/DetailsFragment.java | 13 +++++++++++++ .../transdroid/core/gui/TorrentsActivity.java | 14 ++++++++++++++ .../core/gui/navigation/NavigationHelper.java | 2 +- 7 files changed, 53 insertions(+), 14 deletions(-) diff --git a/core/res/drawable/loading_progress.xml b/core/res/drawable/loading_progress.xml index df2175ef..3ac28bc2 100644 --- a/core/res/drawable/loading_progress.xml +++ b/core/res/drawable/loading_progress.xml @@ -1,5 +1,13 @@ - \ No newline at end of file + + + + + + + \ No newline at end of file diff --git a/core/res/layout/fragment_torrents.xml b/core/res/layout/fragment_torrents.xml index c2a223ca..a72b0fe4 100644 --- a/core/res/layout/fragment_torrents.xml +++ b/core/res/layout/fragment_torrents.xml @@ -16,31 +16,35 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" + android:indeterminate="true" + android:indeterminateOnly="true" android:indeterminateDrawable="@drawable/loading_progress" android:visibility="visible" /> - + - + - + \ No newline at end of file diff --git a/core/res/values-sw500dp/bools.xml b/core/res/values-sw500dp/bools.xml index 4a4c7757..f701a217 100644 --- a/core/res/values-sw500dp/bools.xml +++ b/core/res/values-sw500dp/bools.xml @@ -1,5 +1,5 @@ - false + false \ No newline at end of file diff --git a/core/res/values/bools.xml b/core/res/values/bools.xml index 2a472937..63d71d3e 100644 --- a/core/res/values/bools.xml +++ b/core/res/values/bools.xml @@ -1,5 +1,5 @@ - true + true \ No newline at end of file diff --git a/core/src/org/transdroid/core/gui/DetailsFragment.java b/core/src/org/transdroid/core/gui/DetailsFragment.java index 10eaf5f2..15250beb 100644 --- a/core/src/org/transdroid/core/gui/DetailsFragment.java +++ b/core/src/org/transdroid/core/gui/DetailsFragment.java @@ -127,6 +127,7 @@ public class DetailsFragment extends SherlockFragment { torrent = null; torrentDetails = null; torrentFiles = null; + getActivity().supportInvalidateOptionsMenu(); } /** @@ -143,12 +144,24 @@ public class DetailsFragment extends SherlockFragment { public void onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); + if (torrent == null) { + menu.findItem(R.id.action_resume).setVisible(false); + menu.findItem(R.id.action_pause).setVisible(false); + menu.findItem(R.id.action_start).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_updatetrackers).setVisible(false); + return; + } // Update action availability boolean startStop = Daemon.supportsStoppingStarting(torrent.getDaemon()); menu.findItem(R.id.action_resume).setVisible(torrent.canResume()); menu.findItem(R.id.action_pause).setVisible(torrent.canPause()); menu.findItem(R.id.action_start).setVisible(startStop && 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()); diff --git a/core/src/org/transdroid/core/gui/TorrentsActivity.java b/core/src/org/transdroid/core/gui/TorrentsActivity.java index dd45f2a1..2c29b439 100644 --- a/core/src/org/transdroid/core/gui/TorrentsActivity.java +++ b/core/src/org/transdroid/core/gui/TorrentsActivity.java @@ -142,8 +142,10 @@ public class TorrentsActivity extends SherlockFragmentActivity implements OnNavi ServerSetting lastUsed = applicationSettings.getLastUsedServer(); if (lastUsed == null) { // Still no settings + updateFragmentVisibility(false); return; } + // TODO: See if this does not mean the refresh is called twice (first in onCreate) // There is a server now: select it to establish a connection filterSelected(lastUsed); } @@ -254,6 +256,7 @@ public class TorrentsActivity extends SherlockFragmentActivity implements OnNavi currentConnection = server.createServerAdapter(); applicationSettings.setLastUsedServer(server); clearScreens(); + updateFragmentVisibility(true); refreshTorrents(); return; @@ -281,6 +284,17 @@ public class TorrentsActivity extends SherlockFragmentActivity implements OnNavi return currentConnection.getSettings().getName(); } + /** + * Hides the filter list and details fragment's full view if there is no configured connection + * @param hasServerSettings Whether there are server settings available, so we can continue to connect + */ + private void updateFragmentVisibility(boolean hasServerSettings) { + if (filtersList != null) + filtersList.setVisibility(hasServerSettings? View.VISIBLE: View.GONE); + if (fragmentDetails != null) + getSupportFragmentManager().beginTransaction().hide(fragmentDetails).commit(); + } + /** * If required, add torrents, switch to a specific server, etc. */ diff --git a/core/src/org/transdroid/core/gui/navigation/NavigationHelper.java b/core/src/org/transdroid/core/gui/navigation/NavigationHelper.java index cb271715..96d26edd 100644 --- a/core/src/org/transdroid/core/gui/navigation/NavigationHelper.java +++ b/core/src/org/transdroid/core/gui/navigation/NavigationHelper.java @@ -38,7 +38,7 @@ public class NavigationHelper { * @return True if the app runs on a small device, false otherwise */ public boolean isSmallScreen() { - return context.getResources().getBoolean(R.bool.small_screen); + return context.getResources().getBoolean(R.bool.show_dialog_fullscreen); } /**