Skip to content

Commit

Permalink
#232 Switch NowPlayingFragment to RecyclerView, add swipe to remove a…
Browse files Browse the repository at this point in the history
…nd better drag + drop support
  • Loading branch information
daneren2005 committed Jun 9, 2015
1 parent 6f218cf commit f47da3c
Show file tree
Hide file tree
Showing 14 changed files with 183 additions and 319 deletions.
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
[submodule "DragSortListView"]
path = DragSortListView
url = https://github.com/daneren2005/drag-sort-listview.git
[submodule "ServerProxy"]
path = ServerProxy
url = https://github.com/daneren2005/ServerProxy.git
1 change: 0 additions & 1 deletion DragSortListView
Submodule DragSortListView deleted from 35d708
21 changes: 11 additions & 10 deletions app/app.iml
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,11 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.1.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/mediarouter-v7/22.1.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/22.1.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/22.1.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.2.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/design/22.2.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/mediarouter-v7/22.2.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/22.2.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/22.2.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-base/7.0.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-cast/7.0.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.sothree.slidinguppanel/library/3.0.0/jars" />
Expand All @@ -94,16 +95,16 @@
</content>
<orderEntry type="jdk" jdkName="Android API 22 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="mediarouter-v7-22.1.1" level="project" />
<orderEntry type="library" exported="" name="mediarouter-v7-22.2.0" level="project" />
<orderEntry type="library" exported="" name="seamless-util-1.1.0" level="project" />
<orderEntry type="library" exported="" name="cling-core-2.0.1" level="project" />
<orderEntry type="library" exported="" name="recyclerview-v7-22.1.1" level="project" />
<orderEntry type="library" exported="" name="recyclerview-v7-22.2.0" level="project" />
<orderEntry type="library" exported="" name="jetty-continuation-8.1.16.v20140903" level="project" />
<orderEntry type="library" exported="" name="support-annotations-22.1.1" level="project" />
<orderEntry type="library" exported="" name="support-annotations-22.2.0" level="project" />
<orderEntry type="library" exported="" name="play-services-cast-7.0.0" level="project" />
<orderEntry type="library" exported="" name="seamless-http-1.1.0" level="project" />
<orderEntry type="library" exported="" name="jetty-util-8.1.16.v20140903" level="project" />
<orderEntry type="library" exported="" name="appcompat-v7-22.1.1" level="project" />
<orderEntry type="library" exported="" name="appcompat-v7-22.2.0" level="project" />
<orderEntry type="library" exported="" name="seamless-swing-1.1.0" level="project" />
<orderEntry type="library" exported="" name="seamless-xml-1.1.0" level="project" />
<orderEntry type="library" exported="" name="kryo-2.21-all" level="project" />
Expand All @@ -112,7 +113,7 @@
<orderEntry type="library" exported="" name="library-2.4.0" level="project" />
<orderEntry type="library" exported="" name="javax.servlet-3.0.0.v201112011016" level="project" />
<orderEntry type="library" exported="" name="jetty-server-8.1.16.v20140903" level="project" />
<orderEntry type="library" exported="" name="support-v4-22.1.1" level="project" />
<orderEntry type="library" exported="" name="support-v4-22.2.0" level="project" />
<orderEntry type="library" exported="" name="cling-support-2.0.1" level="project" />
<orderEntry type="library" exported="" name="jetty-io-8.1.16.v20140903" level="project" />
<orderEntry type="library" exported="" name="CWAC-EndlessAdapter" level="project" />
Expand All @@ -121,8 +122,8 @@
<orderEntry type="library" exported="" name="jetty-servlet-8.1.16.v20140903" level="project" />
<orderEntry type="library" exported="" name="CWAC-AdapterWrapper" level="project" />
<orderEntry type="library" exported="" name="library-3.0.0" level="project" />
<orderEntry type="library" exported="" name="design-22.2.0" level="project" />
<orderEntry type="library" exported="" name="jetty-client-8.1.16.v20140903" level="project" />
<orderEntry type="module" module-name="DragSort ListView" exported="" />
<orderEntry type="module" module-name="Server Proxy" exported="" />
</component>
</module>
10 changes: 5 additions & 5 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ android {
}

dependencies {
compile project(':DragSort ListView')
compile project(':Server Proxy')
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:22.1.1'
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.android.support:mediarouter-v7:22.1.1'
compile 'com.android.support:recyclerview-v7:22.1.1'
compile 'com.android.support:support-v4:22.2.+'
compile 'com.android.support:appcompat-v7:22.2.+'
compile 'com.android.support:mediarouter-v7:22.2.+'
compile 'com.android.support:recyclerview-v7:22.2.+'
compile 'com.android.support:design:22.2.+'
compile 'com.google.android.gms:play-services-cast:7.0.0'
compile 'com.sothree.slidinguppanel:library:3.0.0'
compile 'de.hdodenhof:circleimageview:1.2.1'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -565,19 +565,22 @@ private void update() {
artistView.setText(R.string.main_artist);
}

SilentBackgroundTask task = getImageLoader().loadImage(coverArtView, song, false, coverArtView.getHeight(), false);
if(slideUpPanel.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
if(task == null) {
getSupportActionBar().setHomeAsUpIndicator(coverArtView.getDrawable());
} else {
task.setOnCompletionListener(new Runnable() {
@Override
public void run() {
getSupportActionBar().setHomeAsUpIndicator(coverArtView.getDrawable());
}
});
if(coverArtView.getHeight() > 0 ) {
SilentBackgroundTask task = getImageLoader().loadImage(coverArtView, song, false, coverArtView.getHeight(), false);
if (slideUpPanel.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
if (task == null) {
getSupportActionBar().setHomeAsUpIndicator(coverArtView.getDrawable());
} else {
task.setOnCompletionListener(new Runnable() {
@Override
public void run() {
getSupportActionBar().setHomeAsUpIndicator(coverArtView.getDrawable());
}
});
}
}
}

int[] attrs = new int[] {(state == PlayerState.STARTED) ? R.attr.media_button_pause : R.attr.media_button_start};
TypedArray typedArray = this.obtainStyledAttributes(attrs);
startButton.setImageResource(typedArray.getResourceId(0, 0));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,33 @@

import github.daneren2005.dsub.service.DownloadFile;
import github.daneren2005.dsub.view.SongView;
import github.daneren2005.dsub.view.UpdateView;

public class DownloadFileAdapter extends ArrayAdapter<DownloadFile> {
Context context;
public class DownloadFileAdapter extends SectionAdapter<DownloadFile> {
public static int VIEW_TYPE_DOWNLOAD_FILE = 1;

public DownloadFileAdapter(Context context, List<DownloadFile> entries) {
super(context, android.R.layout.simple_list_item_1, entries);
this.context = context;
super(context, entries);
}
public DownloadFileAdapter(Context context, List<DownloadFile> entries, OnItemClickedListener onItemClickedListener) {
super(context, entries);
this.onItemClickedListener = onItemClickedListener;
}

@Override
public UpdateView.UpdateViewHolder onCreateSectionViewHolder(ViewGroup parent, int viewType) {
return new UpdateView.UpdateViewHolder(new SongView(context));
}

@Override
public void onBindViewHolder(UpdateView.UpdateViewHolder holder, DownloadFile item, int viewType) {
SongView songView = (SongView) holder.getUpdateView();
songView.setObject(item.getSong(), false);
songView.setDownloadFile(item);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
SongView view;
if (convertView != null && convertView instanceof SongView) {
view = (SongView) convertView;
} else {
view = new SongView(context);
}
DownloadFile downloadFile = getItem(position);
view.setObject(downloadFile.getSong(), false);
view.setDownloadFile(downloadFile);
return view;
public int getItemViewType(DownloadFile item) {
return VIEW_TYPE_DOWNLOAD_FILE;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,23 @@ public T getItemForPosition(int position) {

return null;
}
public int getItemPosition(T item) {
if(sections.size() == 1 && !singleSectionHeader) {
return sections.get(0).indexOf(item);
}

int subPosition = 0;
for(List<T> section: sections) {
subPosition += section.size() + 1;

int position = section.indexOf(item);
if(position != -1) {
return position + subPosition;
}
}

return -1;
}

public void setContextItem(UpdateView updateView, T item) {
contextView = updateView;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import java.util.concurrent.TimeUnit;

import github.daneren2005.dsub.R;
import github.daneren2005.dsub.adapter.SectionAdapter;
import github.daneren2005.dsub.domain.MusicDirectory;
import github.daneren2005.dsub.service.DownloadFile;
import github.daneren2005.dsub.service.DownloadService;
Expand All @@ -38,13 +39,15 @@
import github.daneren2005.dsub.util.SilentBackgroundTask;
import github.daneren2005.dsub.util.Util;
import github.daneren2005.dsub.adapter.DownloadFileAdapter;
import github.daneren2005.dsub.view.UpdateView;

public class DownloadFragment extends SelectListFragment<DownloadFile> {
public class DownloadFragment extends SelectRecyclerFragment<DownloadFile> {
private long currentRevision;
private ScheduledExecutorService executorService;

public DownloadFragment() {
serialize = false;
pullToRefresh = false;
}

@Override
Expand Down Expand Up @@ -80,7 +83,7 @@ public int getOptionsMenu() {
}

@Override
public ArrayAdapter getAdapter(List<DownloadFile> objs) {
public SectionAdapter getAdapter(List<DownloadFile> objs) {
return new DownloadFileAdapter(context, objs);
}

Expand All @@ -91,9 +94,6 @@ public List<DownloadFile> getObjects(MusicService musicService, boolean refresh,
return new ArrayList<DownloadFile>();
}

listView.setOnScrollListener(null);
refreshLayout.setEnabled(false);

List<DownloadFile> songList = new ArrayList<DownloadFile>();
songList.addAll(downloadService.getBackgroundDownloads());
currentRevision = downloadService.getDownloadListUpdateRevision();
Expand All @@ -106,7 +106,7 @@ public int getTitleResource() {
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
public void onItemClicked(DownloadFile item) {

}

Expand Down Expand Up @@ -144,11 +144,13 @@ protected void done(Void result) {
@Override
public void onCreateContextMenu(android.view.ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, view, menuInfo);
UpdateView targetView = adapter.getContextView();
menuInfo = new AdapterView.AdapterContextMenuInfo(targetView, 0, 0);

AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
Object selectedItem = ((DownloadFile) listView.getItemAtPosition(info.position)).getSong();
DownloadFile downloadFile = adapter.getContextItem();
MusicDirectory.Entry selectedItem = downloadFile.getSong();
onCreateContextMenu(menu, view, menuInfo, selectedItem);
if(selectedItem instanceof MusicDirectory.Entry && !((MusicDirectory.Entry) selectedItem).isVideo() && !Util.isOffline(context)) {
if(!selectedItem.isVideo() && !Util.isOffline(context)) {
menu.removeItem(R.id.song_menu_remove_playlist);
}

Expand All @@ -161,9 +163,8 @@ public boolean onContextItemSelected(MenuItem menuItem) {
return false;
}

AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuItem.getMenuInfo();
Object selectedItem = ((DownloadFile) listView.getItemAtPosition(info.position)).getSong();

DownloadFile downloadFile = adapter.getContextItem();
MusicDirectory.Entry selectedItem = downloadFile.getSong();
if(onContextItemSelected(menuItem, selectedItem)) {
return true;
}
Expand Down
Loading

0 comments on commit f47da3c

Please sign in to comment.