package com.konka.music.ui.fragment.downloadmanager;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.content.Loader;
import android.support.v4.util.LongSparseArray;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.CursorAdapter;
import android.widget.ListView;
import com.konka.music.R;
import com.konka.music.core.providers.DownloadManager;
import com.konka.music.core.providers.downloads.Downloads;
import com.konka.music.loader.DownLoadFinishLoader;
import com.konka.music.pojo.DownLoadFinishResult;
import com.konka.music.pojo.MusicInfo;
import com.konka.music.pojo.PlayListItemViewHolder;
import com.konka.music.ui.fragment.abstractfragment.KBaseListFragment_T;
import com.konka.music.util.Assist;
import com.konka.music.util.CreateViewUtil;
import com.konka.music.util.ViewBindUtil;
import com.konka.music.util.ViewUtility;
public class DownloadFinishFragment extends KBaseListFragment_T<DownLoadFinishResult> implements OnClickListener, OnItemClickListener {
View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = CreateViewUtil.onCreateView(inflater, container, savedInstanceState, rootView, R.layout.downloadingfragment_layout);
return rootView;
}
private ListView listView;
private DownloadFinishBaseAdapter downloadBaseAdapter;
private DownloadManager mDownloadManager;
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
listView = ViewUtility.findViewById(view, R.id.downloadingfragment_listview);
mDownloadManager = new DownloadManager(getActivity().getApplicationContext().getContentResolver(), getActivity().getApplicationContext().getPackageName());
mDownloadManager.setAccessAllDownloads(true);
listView.setOnItemClickListener(this);
getLoaderManager().initLoader(Assist.DOWNLOADFINISH_LOADER_ID, null, this);
}
@Override
public Loader<DownLoadFinishResult> onCreateLoader(int arg0, Bundle arg1) {
return new DownLoadFinishLoader(getActivity(), mDownloadManager);
}
private DownLoadFinishResult downLoadFinishResult;
@Override
public void onLoadFinished(Loader<DownLoadFinishResult> arg0, DownLoadFinishResult arg1) {
super.onLoadFinished(arg0, arg1);
if (arg1 != null && arg1.getMusicinfos() != null) {
downLoadFinishResult = arg1;
downloadBaseAdapter = new DownloadFinishBaseAdapter(getActivity(), downLoadFinishResult.getCursor(), true);
arg1.getCursor().setNotificationUri(getActivity().getContentResolver(), Downloads.CONTENT_URI);
listView.setAdapter(downloadBaseAdapter);
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (view != null && view.getTag() != null) {
Object object = view.getTag();
if (object instanceof MusicInfo) {
MusicInfo musicInfo = (MusicInfo) object;
startAnimationToPlayMusic(view, musicInfo);
}
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
getLoaderManager().destroyLoader(Assist.DOWNLOADFINISH_LOADER_ID);
if (downloadBaseAdapter != null) {
Cursor c = downloadBaseAdapter.getCursor();
if (c != null) {
if (!c.isClosed()) {
c.close();
}
c = null;
}
}
}
class DownloadFinishBaseAdapter extends CursorAdapter {
private Cursor cursor;
final private int mTitleColumnId;
final private int mStatusColumnId;
final private int mReasonColumnId;
final private int mTotalBytesColumnId;
final private int mCurrentBytesColumnId;
final private int mMediaTypeColumnId;
final private int mDateColumnId;
final private int mIdColumnId;
final private int mColumnLocalUriId;
public DownloadFinishBaseAdapter(Context context, Cursor cursor, boolean autoRequery) {
super(context, cursor, autoRequery);
this.cursor = cursor;
mIdColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_ID);
mTitleColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TITLE);
mStatusColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_STATUS);
mReasonColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_REASON);
mTotalBytesColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TOTAL_SIZE_BYTES);
mCurrentBytesColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR);
mMediaTypeColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_MEDIA_TYPE);
mDateColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP);
mColumnLocalUriId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LOCAL_URI);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
bindViewData(view, context, cursor);
}
@Override
public View newView(Context context, Cursor arg1, ViewGroup parent) {
View convertView = LayoutInflater.from(context).inflate(R.layout.audio_list_item, parent, false);
return convertView;
}
private void bindViewData(View view, Context context, Cursor mCursor) {
PlayListItemViewHolder holder = new PlayListItemViewHolder();
holder.title = ViewUtility.findViewById(view, R.id.title);
holder.indicator = ViewUtility.findViewById(view, R.id.indicator);
holder.btn_toggle_menu = ViewUtility.findViewById(view, R.id.btn_toggle_menu);
holder.audio_item_icon = ViewUtility.findViewById(view, R.id.audio_item_icon);
long downlaod_id = mCursor.getLong(mIdColumnId);
String localuri = mCursor.getString(mColumnLocalUriId);
Uri uri = Uri.parse(localuri);
LongSparseArray<MusicInfo> lists = downLoadFinishResult.getMusicinfos();
if (lists != null && lists.size() != 0) {
MusicInfo musicInfo = lists.get(downlaod_id);
if (uri != null) {
String localpath = uri.getPath();
if (!TextUtils.isEmpty(localpath)) {
musicInfo.setData(localpath);
}
}
ViewBindUtil.bindView(view, holder, DownloadFinishFragment.this);
holder.indicator.setVisibility(View.GONE);
holder.btn_toggle_menu.setVisibility(View.GONE);
ViewBindUtil.assignToView(musicInfo, holder);
view.setTag(musicInfo);
}
// }else{
// // mDownloadManager.remove(downlaod_id);
// }
// FragmentPagerAdapter d;
}
}
public static final int CLEARALL = 1;
}