From fb9f19500f0929efef7b5ddf4d65d2d01f93003b Mon Sep 17 00:00:00 2001 From: Eric Kok Date: Thu, 4 Apr 2013 15:20:05 +0200 Subject: [PATCH] rTorrent adapter should return the labels that it encountered during torrents retrieval. --- .../transdroid/core/gui/TorrentsActivity.java | 4 ++- .../gui/navigation/FilterListAdapter.java | 27 ++++++++++++++---- .../transdroid/core/gui/navigation/Label.java | 15 +++++++++- .../daemon/Rtorrent/RtorrentAdapter.java | 28 ++++++++++++++----- 4 files changed, 60 insertions(+), 14 deletions(-) diff --git a/core/src/org/transdroid/core/gui/TorrentsActivity.java b/core/src/org/transdroid/core/gui/TorrentsActivity.java index 500bd586..168e9024 100644 --- a/core/src/org/transdroid/core/gui/TorrentsActivity.java +++ b/core/src/org/transdroid/core/gui/TorrentsActivity.java @@ -109,8 +109,10 @@ public class TorrentsActivity extends SherlockFragmentActivity implements OnNavi navigationSpinnerAdapter = FilterListDropDownAdapter_.getInstance_(this).setNavigationFilterManager(this); // Servers are always added to the action bar spinner navigationSpinnerAdapter.updateServers(applicationSettings.getServerSettings()); + + // Check if there was room for a dedicated filter list (i.e. on tablets) if (filtersList != null) { - // There was room for a dedicated filter list; create adapter and add the status types + // Create dedicated side list adapter and add the status types navigationListAdapter = FilterListAdapter_.getInstance_(this); navigationListAdapter.updateStatusTypes(StatusType.getAllStatusTypes(this)); // Add an empty labels list (which will be updated later, but the adapter needs to be created now) diff --git a/core/src/org/transdroid/core/gui/navigation/FilterListAdapter.java b/core/src/org/transdroid/core/gui/navigation/FilterListAdapter.java index 4d74869f..5b904d2c 100644 --- a/core/src/org/transdroid/core/gui/navigation/FilterListAdapter.java +++ b/core/src/org/transdroid/core/gui/navigation/FilterListAdapter.java @@ -10,6 +10,7 @@ import org.transdroid.core.gui.lists.SimpleListItemAdapter; import org.transdroid.core.gui.navigation.NavigationSelectionView.NavigationFilterManager; import android.content.Context; +import android.view.View; import com.commonsware.cwac.merge.MergeAdapter; @@ -27,6 +28,9 @@ public class FilterListAdapter extends MergeAdapter { private SimpleListItemAdapter statusTypeItems = null; private SimpleListItemAdapter labelItems = null; protected NavigationFilterManager navigationFilterManager; + private FilterSeparatorView statusTypeSeparator; + private FilterSeparatorView labelSeperator; + private FilterSeparatorView serverSeparator; /** * Stores which screen, or manager, handles navigation selection and display @@ -37,19 +41,23 @@ public class FilterListAdapter extends MergeAdapter { this.navigationFilterManager = manager; return this; } - + /** * Update the list of available servers * @param servers The new list of available servers */ public void updateServers(List servers) { if (this.serverItems == null && servers != null) { - addView(FilterSeparatorView_.build(context).setText(context.getString(R.string.navigation_servers)), false); + serverSeparator = FilterSeparatorView_.build(context).setText(context.getString(R.string.navigation_servers)); + serverSeparator.setVisibility(serverItems.isEmpty()? View.GONE: View.VISIBLE); + addView(serverSeparator, false); this.serverItems = new SimpleListItemAdapter(context, servers); addAdapter(serverItems); } else if (this.serverItems != null && servers != null) { + serverSeparator.setVisibility(serverItems.isEmpty()? View.GONE: View.VISIBLE); this.serverItems.update(servers); } else { + serverSeparator.setVisibility(View.GONE); this.serverItems = null; } } @@ -60,12 +68,17 @@ public class FilterListAdapter extends MergeAdapter { */ public void updateStatusTypes(List statusTypes) { if (this.statusTypeItems == null && statusTypes != null) { - addView(FilterSeparatorView_.build(context).setText(context.getString(R.string.navigation_status)), false); + statusTypeSeparator = FilterSeparatorView_.build(context).setText( + context.getString(R.string.navigation_status)); + statusTypeSeparator.setVisibility(statusTypeItems.isEmpty()? View.GONE: View.VISIBLE); + addView(statusTypeSeparator, false); this.statusTypeItems = new SimpleListItemAdapter(context, statusTypes); addAdapter(statusTypeItems); } else if (this.statusTypeItems != null && statusTypes != null) { + statusTypeSeparator.setVisibility(statusTypeItems.isEmpty()? View.GONE: View.VISIBLE); this.statusTypeItems.update(statusTypes); } else { + statusTypeSeparator.setVisibility(View.GONE); this.statusTypeItems = null; } } @@ -76,14 +89,18 @@ public class FilterListAdapter extends MergeAdapter { */ public void updateLabels(List labels) { if (this.labelItems == null && labels != null) { - addView(FilterSeparatorView_.build(context).setText(context.getString(R.string.navigation_labels)), false); + labelSeperator = FilterSeparatorView_.build(context).setText(context.getString(R.string.navigation_labels)); + labelSeperator.setVisibility(labelItems.isEmpty()? View.GONE: View.VISIBLE); + addView(labelSeperator, false); this.labelItems = new SimpleListItemAdapter(context, labels); addAdapter(labelItems); } else if (this.serverItems != null && labels != null) { + labelSeperator.setVisibility(labelItems.isEmpty()? View.GONE: View.VISIBLE); this.labelItems.update(labels); } else { + labelSeperator.setVisibility(View.GONE); this.labelItems = null; } } - + } diff --git a/core/src/org/transdroid/core/gui/navigation/Label.java b/core/src/org/transdroid/core/gui/navigation/Label.java index 748d3a7e..04154b7d 100644 --- a/core/src/org/transdroid/core/gui/navigation/Label.java +++ b/core/src/org/transdroid/core/gui/navigation/Label.java @@ -1,5 +1,8 @@ package org.transdroid.core.gui.navigation; +import java.util.ArrayList; +import java.util.List; + import org.transdroid.core.gui.lists.SimpleListItem; import org.transdroid.daemon.Torrent; @@ -10,7 +13,7 @@ import android.os.Parcelable; * Represents some label that is active or available on the server. * @author Eric Kok */ -public class Label implements SimpleListItem, NavigationFilter { +public class Label extends org.transdroid.daemon.Label implements SimpleListItem, NavigationFilter { private final String name; @@ -28,6 +31,16 @@ public class Label implements SimpleListItem, NavigationFilter { return torrent.getLabelName() != null && torrent.getLabelName().equals(name); } + public static List