From a0a8c86924e1485e868972ef8cfeedd13d6a1309 Mon Sep 17 00:00:00 2001 From: biconou Date: Tue, 9 Feb 2016 23:50:34 +0100 Subject: [PATCH 1/3] On album list view text items can be minimized/maximized when long click. (cherry picked from commit 8a3f6b2) --- .../activity/SelectAlbumActivity.java | 18 ++++++++++++++++++ .../org/moire/ultrasonic/view/AlbumView.java | 15 +++++++++++++++ .../org/moire/ultrasonic/view/SongView.java | 15 +++++++++++++++ 3 files changed, 48 insertions(+) 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..b80074b6 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java @@ -46,7 +46,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; @@ -137,6 +139,22 @@ public class SelectAlbumActivity extends SubsonicTabActivity } }); + albumListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){ + + @Override + public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { + if (view instanceof AlbumView) { + AlbumView albumView = (AlbumView) view; + albumView.maximizeOrMinimize(); + } + if (view instanceof SongView) { + SongView songView = (SongView) view; + songView.maximizeOrMinimize(); + } + return true; + } + }); + 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..8ae6785f 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,20 @@ public class AlbumView extends UpdateView return this.entry; } + 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..49117a81 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,20 @@ public class SongView extends UpdateView implements Checkable viewHolder.check.toggle(); } + 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, From a17b2f978c859645796b7255ae40a4cd032bc473 Mon Sep 17 00:00:00 2001 From: biconou Date: Wed, 10 Feb 2016 21:55:32 +0100 Subject: [PATCH 2/3] Dont't bypass the context menu in long click on album view. (cherry picked from commit 2aa31e0) --- .../ultrasonic/activity/SelectAlbumActivity.java | 11 +++++++++-- .../java/org/moire/ultrasonic/view/AlbumView.java | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) 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 b80074b6..7409680f 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java @@ -145,16 +145,23 @@ public class SelectAlbumActivity extends SubsonicTabActivity public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { if (view instanceof AlbumView) { AlbumView albumView = (AlbumView) view; - albumView.maximizeOrMinimize(); + if (!albumView.isMaximized()) { + albumView.maximizeOrMinimize(); + return true; + } else { + return false; + } } if (view instanceof SongView) { SongView songView = (SongView) view; songView.maximizeOrMinimize(); + return true; } - 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 8ae6785f..2b2a2434 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/view/AlbumView.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/view/AlbumView.java @@ -95,6 +95,10 @@ public class AlbumView extends UpdateView return this.entry; } + public boolean isMaximized() { + return maximized; + } + public void maximizeOrMinimize() { if (maximized) { maximized = false; From 3f2f59020ca0a19ad3ee0b69ef9b9e974b14a63a Mon Sep 17 00:00:00 2001 From: biconou Date: Mon, 22 Feb 2016 22:50:13 +0100 Subject: [PATCH 3/3] If items are maximized they will return to minimize form when scrolling. (cherry picked from commit ada247d) --- .../activity/SelectAlbumActivity.java | 26 +++++++++++++++++++ .../org/moire/ultrasonic/view/SongView.java | 4 +++ 2 files changed, 30 insertions(+) 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 7409680f..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; @@ -107,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