package com.blue.sky.mobile.manager.music.ui.fragments.list;

import android.content.ContentUris;
import android.content.Intent;
import android.net.Uri;
import android.provider.BaseColumns;
import android.provider.MediaStore.Audio;
import android.provider.MediaStore.Audio.PlaylistsColumns;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import com.blue.sky.mobile.manager.R;
import com.blue.sky.mobile.manager.music.helpers.utils.ApolloUtils;
import com.blue.sky.mobile.manager.music.helpers.utils.MusicUtils;
import com.blue.sky.mobile.manager.music.ui.adapters.list.PlaylistAdapter;
import com.blue.sky.mobile.manager.music.ui.fragments.base.ListViewFragment;

import static com.blue.sky.mobile.manager.music.Constants.*;


public class PlaylistsFragment extends ListViewFragment{
	
    private static final int DELETE_PLAYLIST = 12;

    private static final int RENAME_PLAYLIST = 13;
    
    public void setupFragmentData(){
        mAdapter = new PlaylistAdapter(getActivity(), R.layout.music_listview_items, null,
                										new String[] {}, new int[] {}, 0);
    	mProjection = new String[] {
                BaseColumns._ID, PlaylistsColumns.NAME
        };
        mSortOrder = Audio.Playlists.DEFAULT_SORT_ORDER;
        mUri = Audio.Playlists.EXTERNAL_CONTENT_URI;
        mFragmentGroupId = 5;
        mType = TYPE_PLAYLIST;
        mTitleColumn = PlaylistsColumns.NAME;         
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        AdapterContextMenuInfo mi = (AdapterContextMenuInfo)menuInfo;
        menu.add(mFragmentGroupId, PLAY_SELECTION, 0, getResources().getString(R.string.play_all));
        if (mi.id >= 0) {
            menu.add(mFragmentGroupId, RENAME_PLAYLIST, 0, getResources().getString(R.string.rename_playlist));
            menu.add(mFragmentGroupId, DELETE_PLAYLIST, 0, getResources().getString(R.string.delete_playlist));
        }
        mCurrentId = mCursor.getString(mCursor.getColumnIndexOrThrow(BaseColumns._ID));
        String title = mCursor.getString(mCursor.getColumnIndexOrThrow(PlaylistsColumns.NAME));
        menu.setHeaderTitle(title);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
    	if(item.getGroupId() == mFragmentGroupId){
	        AdapterContextMenuInfo mi = (AdapterContextMenuInfo)item.getMenuInfo();
	        switch (item.getItemId()) {
	            case PLAY_SELECTION: {
	                long[] list = MusicUtils.getSongListForPlaylist(getActivity(),
	                        Long.parseLong(mCurrentId));
	                MusicUtils.playAll(getActivity(), list, 0);
	                break;
	            }
	            case RENAME_PLAYLIST: {
	                Intent intent = new Intent(INTENT_RENAME_PLAYLIST);
	                intent.putExtra(INTENT_KEY_RENAME, mi.id);
	                getActivity().startActivity(intent);
	                break;
	            }
	            case DELETE_PLAYLIST: {
	                Uri uri = ContentUris.withAppendedId(
	                        Audio.Playlists.EXTERNAL_CONTENT_URI, mi.id);
	                getActivity().getContentResolver().delete(uri, null, null);
	                break;
	            }
	            default:
	                break;
	        }
			return true;
		}
        return super.onContextItemSelected(item);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    	ApolloUtils.startTracksBrowser(mType, id, mCursor, getActivity());
    }
}