aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml4
-rw-r--r--res/xml/changelog.xml4
-rw-r--r--src/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java12
-rw-r--r--src/github/daneren2005/dsub/view/AlbumCell.java3
-rw-r--r--src/github/daneren2005/dsub/view/UnscrollableGridView.java31
5 files changed, 44 insertions, 10 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index e894cea8..4ef64bb6 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2,8 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="github.daneren2005.dsub"
android:installLocation="internalOnly"
- android:versionCode="105"
- android:versionName="4.6">
+ android:versionCode="106"
+ android:versionName="4.6.1">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
diff --git a/res/xml/changelog.xml b/res/xml/changelog.xml
index f864a741..3564b1b0 100644
--- a/res/xml/changelog.xml
+++ b/res/xml/changelog.xml
@@ -1,5 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<changelog>
+ <release version="4.6.1" versioncode="106" releasedate="5/3/2014">
+ <change>Fix crash on ICS and below</change>
+ <change>Fix crash on browsing root folder</change>
+ </release>
<release version="4.6" versioncode="105" releasedate="5/2/2014">
<change>Large album art view (optional)</change>
<change>Pull to refresh</change>
diff --git a/src/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java b/src/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java
index 93886b96..d0cde823 100644
--- a/src/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java
+++ b/src/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java
@@ -127,6 +127,10 @@ public class SelectDirectoryFragment extends SubsonicFragment implements Adapter
if(entries == null) {
entries = (List<MusicDirectory.Entry>) args.getSerializable(Constants.FRAGMENT_LIST);
albums = (List<MusicDirectory.Entry>) args.getSerializable(Constants.FRAGMENT_LIST2);
+
+ if(albums == null) {
+ albums = new ArrayList<MusicDirectory.Entry>();
+ }
}
}
@@ -146,7 +150,6 @@ public class SelectDirectoryFragment extends SubsonicFragment implements Adapter
if(albumListType == null || "starred".equals(albumListType) || !largeAlbums) {
albumList = (GridView) inflater.inflate(R.layout.unscrollable_grid_view, entryList, false);
- entryList.addHeaderView(albumList);
} else {
ViewGroup rootGroup = (ViewGroup) rootView.findViewById(R.id.select_album_layout);
albumList = (GridView) inflater.inflate(R.layout.grid_view, rootGroup, false);
@@ -640,9 +643,7 @@ public class SelectDirectoryFragment extends SubsonicFragment implements Adapter
if(showHeader) {
View header = createHeader(entries);
if(header != null && entryList != null) {
- entryList.removeHeaderView(albumList);
entryList.addHeaderView(header, null, false);
- entryList.addHeaderView(albumList);
}
}
} else {
@@ -652,6 +653,11 @@ public class SelectDirectoryFragment extends SubsonicFragment implements Adapter
}
}
+ // Needs to be added here, GB crashes if you to try to remove the header view before adapter is set
+ if(albumListType == null || "starred".equals(albumListType) || !largeAlbums) {
+ entryList.addHeaderView(albumList);
+ }
+
emptyView.setVisibility((entries.isEmpty() && albums.isEmpty()) ? View.VISIBLE : View.GONE);
entryAdapter = new EntryAdapter(context, getImageLoader(), entries, (podcastId == null));
entryList.setAdapter(entryAdapter);
diff --git a/src/github/daneren2005/dsub/view/AlbumCell.java b/src/github/daneren2005/dsub/view/AlbumCell.java
index b0fb6193..37914783 100644
--- a/src/github/daneren2005/dsub/view/AlbumCell.java
+++ b/src/github/daneren2005/dsub/view/AlbumCell.java
@@ -83,8 +83,7 @@ public class AlbumCell extends UpdateView {
} else if(album.getYear() != null) {
artist += album.getYear();
}
- artistView.setText(artist);
- artistView.setVisibility(album.getArtist() == null ? View.GONE : View.VISIBLE);
+ artistView.setText(album.getArtist() == null ? "" : artist);
((ImageLoader)obj2).loadImage(coverArtView, album, false, true);
file = null;
}
diff --git a/src/github/daneren2005/dsub/view/UnscrollableGridView.java b/src/github/daneren2005/dsub/view/UnscrollableGridView.java
index df77295f..2bae1fed 100644
--- a/src/github/daneren2005/dsub/view/UnscrollableGridView.java
+++ b/src/github/daneren2005/dsub/view/UnscrollableGridView.java
@@ -4,15 +4,20 @@ import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.View;
import android.widget.AbsListView;
import android.widget.GridView;
import android.widget.ListAdapter;
+import java.lang.reflect.Field;
+
/**
* Created by Scott on 4/26/2014.
*/
public class UnscrollableGridView extends GridView {
+ private static final String TAG = UnscrollableGridView.class.getSimpleName();
+
public UnscrollableGridView(Context context) {
super(context);
}
@@ -29,7 +34,17 @@ public class UnscrollableGridView extends GridView {
public int getColumnWidth() {
// This method will be called from onMeasure() too.
// It's better to use getMeasuredWidth(), as it is safe in this case.
- final int totalHorizontalSpacing = getNumColumnsCompat() > 0 ? (getNumColumnsCompat() - 1) * getHorizontalSpacing() : 0;
+
+ int hSpacing = 20;
+ try {
+ Field field = GridView.class.getDeclaredField("mHorizontalSpacing");
+ field.setAccessible(true);
+ hSpacing = field.getInt(this);
+ } catch(Exception e) {
+
+ }
+
+ final int totalHorizontalSpacing = getNumColumnsCompat() > 0 ? (getNumColumnsCompat() - 1) * hSpacing : 0;
return (getMeasuredWidth() - getPaddingLeft() - getPaddingRight() - totalHorizontalSpacing) / getNumColumnsCompat();
}
@@ -71,13 +86,23 @@ public class UnscrollableGridView extends GridView {
childHeight = child.getMeasuredHeight();
}
+ int vSpacing = 10;
+ try {
+ Field field = GridView.class.getDeclaredField("mVerticalSpacing");
+ field.setAccessible(true);
+ vSpacing = field.getInt(this);
+ } catch(Exception e) {
+
+ }
+
// Number of rows required to 'mTotal' items.
final int rows = (int) Math.ceil((double) getCount() / getNumColumnsCompat());
final int childrenHeight = childHeight * rows;
- final int totalVerticalSpacing = rows > 0 ? (rows - 1) * getVerticalSpacing() : 0;
+ final int totalVerticalSpacing = rows > 0 ? (rows - 1) * vSpacing : 0;
// Total height of this view.
- final int measuredHeight = childrenHeight + getPaddingTop() + getPaddingBottom() + totalVerticalSpacing;
+ final int measuredHeight = Math.abs(childrenHeight + getPaddingTop() + getPaddingBottom() + totalVerticalSpacing);
+ Log.d(TAG, measuredWidth + " x " + measuredHeight);
setMeasuredDimension(measuredWidth, measuredHeight);
}