X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fcom%2Fcyngn%2Feleven%2Fui%2Ffragments%2FSongFragment.java;h=bd355b31498889d7a0ccc0cc0448cb943d0512c7;hb=b9634c9a2682f5b4f791b95b7ea22bdc73c4364b;hp=bb8dece065fceeb179a850cb14f807f7ed044ad0;hpb=2c923c5e40ed6326b4770e6393e5830420619071;p=android-x86%2Fpackages-apps-Eleven.git diff --git a/src/com/cyngn/eleven/ui/fragments/SongFragment.java b/src/com/cyngn/eleven/ui/fragments/SongFragment.java index bb8dece..bd355b3 100644 --- a/src/com/cyngn/eleven/ui/fragments/SongFragment.java +++ b/src/com/cyngn/eleven/ui/fragments/SongFragment.java @@ -12,6 +12,7 @@ package com.cyngn.eleven.ui.fragments; import android.app.Activity; +import android.content.Context; import android.database.Cursor; import android.os.Bundle; import android.os.SystemClock; @@ -42,9 +43,13 @@ import com.cyngn.eleven.menu.FragmentMenuItems; import com.cyngn.eleven.model.Song; import com.cyngn.eleven.provider.FavoritesStore; import com.cyngn.eleven.recycler.RecycleHolder; +import com.cyngn.eleven.sectionadapter.SectionAdapter; +import com.cyngn.eleven.sectionadapter.SectionCreator; +import com.cyngn.eleven.sectionadapter.SectionListContainer; import com.cyngn.eleven.ui.activities.BaseActivity; import com.cyngn.eleven.utils.MusicUtils; import com.cyngn.eleven.utils.NavUtils; +import com.cyngn.eleven.utils.SectionCreatorUtils; import com.viewpagerindicator.TitlePageIndicator; import java.util.List; @@ -54,7 +59,7 @@ import java.util.List; * * @author Andrew Neal (andrewdneal@gmail.com) */ -public class SongFragment extends Fragment implements LoaderCallbacks>, +public class SongFragment extends Fragment implements LoaderCallbacks>, OnItemClickListener, MusicStateListener { /** @@ -75,7 +80,7 @@ public class SongFragment extends Fragment implements LoaderCallbacks /** * The adapter for the list */ - private SongAdapter mAdapter; + private SectionAdapter mAdapter; /** * The list view @@ -130,7 +135,7 @@ public class SongFragment extends Fragment implements LoaderCallbacks public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Create the adpater - mAdapter = new SongAdapter(getActivity(), R.layout.list_item_simple); + mAdapter = new SectionAdapter(getActivity(), new SongAdapter(getActivity(), R.layout.list_item_simple)); } /** @@ -177,7 +182,7 @@ public class SongFragment extends Fragment implements LoaderCallbacks final AdapterContextMenuInfo info = (AdapterContextMenuInfo)menuInfo; mSelectedPosition = info.position; // Creat a new song - mSong = mAdapter.getItem(mSelectedPosition); + mSong = mAdapter.getTItem(mSelectedPosition); mSelectedId = mSong.mSongId; mSongName = mSong.mSongName; mAlbumName = mSong.mAlbumName; @@ -272,9 +277,10 @@ public class SongFragment extends Fragment implements LoaderCallbacks @Override public void onItemClick(final AdapterView parent, final View view, final int position, final long id) { + int internalPosition = mAdapter.getInternalPosition(position); Cursor cursor = SongLoader.makeSongCursor(getActivity()); final long[] list = MusicUtils.getSongListForCursor(cursor); - MusicUtils.playAll(getActivity(), list, position, false); + MusicUtils.playAll(getActivity(), list, internalPosition, false); cursor.close(); cursor = null; } @@ -283,17 +289,27 @@ public class SongFragment extends Fragment implements LoaderCallbacks * {@inheritDoc} */ @Override - public Loader> onCreateLoader(final int id, final Bundle args) { - return new SongLoader(getActivity()); + public Loader> onCreateLoader(final int id, final Bundle args) { + // get the context + Context context = getActivity(); + + // create the underlying song loader + SongLoader songLoader = new SongLoader(context); + + // get the song comparison method to create the headers with + SectionCreatorUtils.IItemCompare songComparison = SectionCreatorUtils.createSongComparison(context); + + // return the wrapped section creator + return new SectionCreator(context, songLoader, songComparison); } /** * {@inheritDoc} */ @Override - public void onLoadFinished(final Loader> loader, final List data) { + public void onLoadFinished(final Loader> loader, final SectionListContainer data) { // Check for any errors - if (data.isEmpty()) { + if (data.mListResults.isEmpty()) { // Set the empty text final TextView empty = (TextView)mRootView.findViewById(R.id.empty); empty.setText(getString(R.string.empty_music)); @@ -301,21 +317,15 @@ public class SongFragment extends Fragment implements LoaderCallbacks return; } - // Start fresh - mAdapter.unload(); - // Add the data to the adpater - for (final Song song : data) { - mAdapter.add(song); - } - // Build the cache - mAdapter.buildCache(); + // Set the data + mAdapter.setData(data); } /** * {@inheritDoc} */ @Override - public void onLoaderReset(final Loader> loader) { + public void onLoaderReset(final Loader> loader) { // Clear the data in the adapter mAdapter.unload(); } @@ -342,7 +352,7 @@ public class SongFragment extends Fragment implements LoaderCallbacks return 0; } for (int i = 0; i < mAdapter.getCount(); i++) { - if (mAdapter.getItem(i).mSongId == trackId) { + if (mAdapter.getTItem(i).mSongId == trackId) { return i; } }