aboutsummaryrefslogtreecommitdiff
path: root/src/github/daneren2005
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2014-04-09 22:24:32 -0700
committerScott Jackson <daneren2005@gmail.com>2014-04-09 22:24:32 -0700
commitd806a867f56f4f4856640728f3d13078c1072106 (patch)
treeeaa188b131eef23bc48d467dbcb238a5f7f919be /src/github/daneren2005
parentf19713cd4d81bb390e301f2e1742e4a6b2d538e1 (diff)
downloaddsub-d806a867f56f4f4856640728f3d13078c1072106.tar.gz
dsub-d806a867f56f4f4856640728f3d13078c1072106.tar.bz2
dsub-d806a867f56f4f4856640728f3d13078c1072106.zip
Change how hidden drawer items are handled, hide downloads when not needed
Diffstat (limited to 'src/github/daneren2005')
-rw-r--r--src/github/daneren2005/dsub/activity/SubsonicActivity.java55
-rw-r--r--src/github/daneren2005/dsub/view/DrawerAdapter.java39
2 files changed, 57 insertions, 37 deletions
diff --git a/src/github/daneren2005/dsub/activity/SubsonicActivity.java b/src/github/daneren2005/dsub/activity/SubsonicActivity.java
index 12312c23..d56cb854 100644
--- a/src/github/daneren2005/dsub/activity/SubsonicActivity.java
+++ b/src/github/daneren2005/dsub/activity/SubsonicActivity.java
@@ -87,6 +87,7 @@ public class SubsonicActivity extends ActionBarActivity implements OnItemSelecte
ViewGroup rootView;
DrawerLayout drawer;
ActionBarDrawerToggle drawerToggle;
+ DrawerAdapter drawerAdapter;
ListView drawerList;
View lastSelectedView = null;
int lastSelectedPosition = 0;
@@ -166,6 +167,7 @@ public class SubsonicActivity extends ActionBarActivity implements OnItemSelecte
drawerList.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ position = drawerAdapter.getActualPosition(position);
if("Settings".equals(drawerItemsDescriptions[position])) {
startActivity(new Intent(SubsonicActivity.this, SettingsActivity.class));
drawer.closeDrawers();
@@ -198,6 +200,13 @@ public class SubsonicActivity extends ActionBarActivity implements OnItemSelecte
@Override
public void onDrawerOpened(View view) {
+ DownloadService downloadService = getDownloadService();
+ if(downloadService == null || downloadService.getBackgroundDownloads().isEmpty()) {
+ drawerAdapter.setDownloadVisible(false);
+ } else {
+ drawerAdapter.setDownloadVisible(true);
+ }
+
if(lastSelectedView == null) {
if(lastSelectedPosition == -1) {
lastSelectedPosition = drawerList.getChildCount() - 2;
@@ -382,12 +391,10 @@ public class SubsonicActivity extends ActionBarActivity implements OnItemSelecte
if(drawerItems == null || !enabledItems[0] == podcastsEnabled || !enabledItems[1] == bookmarksEnabled || !enabledItems[2] == sharedEnabled || !enabledItems[3] == chatEnabled) {
drawerItems = getResources().getStringArray(R.array.drawerItems);
drawerItemsDescriptions = getResources().getStringArray(R.array.drawerItemsDescriptions);
-
- // Remove listings that user wants hidden
- int alreadyRemoved = 0;
+
List<String> drawerItemsList = new ArrayList<String>(Arrays.asList(drawerItems));
- List<String> drawerItemsDescriptionsList = new ArrayList<String>(Arrays.asList(drawerItemsDescriptions));
List<Integer> drawerItemsIconsList = new ArrayList<Integer>();
+ List<Boolean> drawerItemsVisibleList = new ArrayList<Boolean>();
int[] arrayAttr = {R.attr.drawerItemsIcons};
TypedArray arrayType = obtainStyledAttributes(arrayAttr);
@@ -395,49 +402,27 @@ public class SubsonicActivity extends ActionBarActivity implements OnItemSelecte
TypedArray iconType = getResources().obtainTypedArray(arrayId);
for(int i = 0; i < drawerItemsList.size(); i++) {
drawerItemsIconsList.add(iconType.getResourceId(i, 0));
+ drawerItemsVisibleList.add(true);
}
iconType.recycle();
arrayType.recycle();
-
- // Selectively remove podcast listing [3]
+
+ // Hide listings user doesn't want to see
if(!podcastsEnabled) {
- drawerItemsList.remove(3 - alreadyRemoved);
- drawerItemsDescriptionsList.remove(3 - alreadyRemoved);
- drawerItemsIconsList.remove(3 - alreadyRemoved);
- alreadyRemoved++;
+ drawerItemsVisibleList.set(3, false);
}
-
- // Selectively remove bookmarks listing [4]
if(!bookmarksEnabled) {
- drawerItemsList.remove(4 - alreadyRemoved);
- drawerItemsDescriptionsList.remove(4 - alreadyRemoved);
- drawerItemsIconsList.remove(4 - alreadyRemoved);
- alreadyRemoved++;
+ drawerItemsVisibleList.set(4, false);
}
-
- // Selectively remove shared listing [5]
if(!sharedEnabled) {
- drawerItemsList.remove(5 - alreadyRemoved);
- drawerItemsDescriptionsList.remove(5 - alreadyRemoved);
- drawerItemsIconsList.remove(5 - alreadyRemoved);
- alreadyRemoved++;
+ drawerItemsVisibleList.set(5, false);
}
-
- // Selectively remove chat listing: [6]
if(!chatEnabled) {
- drawerItemsList.remove(6 - alreadyRemoved);
- drawerItemsDescriptionsList.remove(6 - alreadyRemoved);
- drawerItemsIconsList.remove(6 - alreadyRemoved);
- alreadyRemoved++;
- }
-
- // Put list back together
- if(alreadyRemoved > 0) {
- drawerItems = drawerItemsList.toArray(new String[0]);
- drawerItemsDescriptions = drawerItemsDescriptionsList.toArray(new String[0]);
+ drawerItemsVisibleList.set(6, false);
}
+ drawerItemsVisibleList.set(7, false);
- drawerList.setAdapter(new DrawerAdapter(this, drawerItemsList, drawerItemsIconsList));
+ drawerList.setAdapter(drawerAdapter = new DrawerAdapter(this, drawerItemsList, drawerItemsIconsList, drawerItemsVisibleList));
enabledItems[0] = podcastsEnabled;
enabledItems[1] = bookmarksEnabled;
enabledItems[2] = sharedEnabled;
diff --git a/src/github/daneren2005/dsub/view/DrawerAdapter.java b/src/github/daneren2005/dsub/view/DrawerAdapter.java
index d3639373..9832ad05 100644
--- a/src/github/daneren2005/dsub/view/DrawerAdapter.java
+++ b/src/github/daneren2005/dsub/view/DrawerAdapter.java
@@ -27,6 +27,7 @@ import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
+import java.util.ArrayList;
import java.util.List;
import github.daneren2005.dsub.R;
@@ -39,17 +40,20 @@ public class DrawerAdapter extends ArrayAdapter<String> {
private Context context;
private List<String> items;
private List<Integer> icons;
+ private List<Boolean> visible;
- public DrawerAdapter(Context context, List<String> items, List<Integer> icons) {
+ public DrawerAdapter(Context context, List<String> items, List<Integer> icons, List<Boolean> visible) {
super(context, R.layout.drawer_list_item, items);
this.context = context;
this.items = items;
this.icons = icons;
+ this.visible = visible;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
+ position = getActualPosition(position);
String item = items.get(position);
Integer icon = icons.get(position);
@@ -60,9 +64,40 @@ public class DrawerAdapter extends ArrayAdapter<String> {
TextView textView = (TextView) convertView.findViewById(R.id.drawer_name);
textView.setText(item);
ImageView iconView = (ImageView) convertView.findViewById(R.id.drawer_icon);
- Log.d(TAG, "icon: " + icon);
iconView.setImageResource(icon);
return convertView;
}
+
+ @Override
+ public int getCount() {
+ int count = 0;
+ for(int i = 0; i < visible.size(); i++) {
+ if(visible.get(i)) {
+ count++;
+ }
+ }
+
+ return count;
+ }
+
+ public int getActualPosition(int position) {
+ for(int i = 0; i <= position; i++) {
+ if(!visible.get(i)) {
+ position++;
+ }
+ }
+
+ return position;
+ }
+
+ public void setItemVisible(int position, boolean visible) {
+ if(this.visible.get(position) != visible) {
+ this.visible.set(position, visible);
+ notifyDataSetInvalidated();
+ }
+ }
+ public void setDownloadVisible(boolean visible) {
+ setItemVisible(items.size() - 2, visible);
+ }
}