diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java b/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java index 7a2bd5df..3a3e9d6a 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java @@ -27,6 +27,7 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.ListView; @@ -46,7 +47,9 @@ import org.moire.ultrasonic.util.EntryByDiscAndTrackComparator; import org.moire.ultrasonic.util.Pair; import org.moire.ultrasonic.util.TabActivityBackgroundTask; import org.moire.ultrasonic.util.Util; +import org.moire.ultrasonic.view.AlbumView; import org.moire.ultrasonic.view.EntryAdapter; +import org.moire.ultrasonic.view.SongView; import java.util.ArrayList; import java.util.Collection; @@ -105,6 +108,31 @@ public class SelectAlbumActivity extends SubsonicTabActivity } }); + refreshAlbumListView.setOnScrollListener(new AbsListView.OnScrollListener() { + @Override + public void onScrollStateChanged(AbsListView view, int scrollState) { + for (int i=0;i parent, View view, int position, long id) { + if (view instanceof AlbumView) { + AlbumView albumView = (AlbumView) view; + if (!albumView.isMaximized()) { + albumView.maximizeOrMinimize(); + return true; + } else { + return false; + } + } + if (view instanceof SongView) { + SongView songView = (SongView) view; + songView.maximizeOrMinimize(); + return true; + } + return false; + } + }); + + selectButton = (ImageView) findViewById(R.id.select_album_select); playNowButton = (ImageView) findViewById(R.id.select_album_play_now); playNextButton = (ImageView) findViewById(R.id.select_album_play_next); diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/view/AlbumView.java b/ultrasonic/src/main/java/org/moire/ultrasonic/view/AlbumView.java index 6d5e85a0..2b2a2434 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/view/AlbumView.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/view/AlbumView.java @@ -49,6 +49,7 @@ public class AlbumView extends UpdateView private MusicDirectory.Entry entry; private EntryAdapter.AlbumViewHolder viewHolder; private ImageLoader imageLoader; + private boolean maximized = false; public AlbumView(Context context, ImageLoader imageLoader) { @@ -94,6 +95,24 @@ public class AlbumView extends UpdateView return this.entry; } + public boolean isMaximized() { + return maximized; + } + + public void maximizeOrMinimize() { + if (maximized) { + maximized = false; + } else { + maximized = true; + } + if (this.viewHolder.title != null) { + this.viewHolder.title.setSingleLine(!maximized); + } + if (this.viewHolder.artist != null) { + this.viewHolder.artist.setSingleLine(!maximized); + } + } + public void setAlbum(final MusicDirectory.Entry album) { viewHolder.cover_art.setTag(album); diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/view/SongView.java b/ultrasonic/src/main/java/org/moire/ultrasonic/view/SongView.java index 83ba491f..4336da1a 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/view/SongView.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/view/SongView.java @@ -71,6 +71,7 @@ public class SongView extends UpdateView implements Checkable private DownloadFile downloadFile; private boolean playing; private EntryAdapter.SongViewHolder viewHolder; + private boolean maximized = false; public SongView(Context context) { @@ -427,6 +428,24 @@ public class SongView extends UpdateView implements Checkable viewHolder.check.toggle(); } + public boolean isMaximized() { + return maximized; + } + + public void maximizeOrMinimize() { + if (maximized) { + maximized = false; + } else { + maximized = true; + } + if (this.viewHolder.title != null) { + this.viewHolder.title.setSingleLine(!maximized); + } + if (this.viewHolder.artist != null) { + this.viewHolder.artist.setSingleLine(!maximized); + } + } + public enum ImageType { none,