package com.ideabag.playtunes.dialog;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.DialogFragment;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;
import com.ideabag.playtunes.PlaylistManager;
import com.ideabag.playtunes.R;
public class PlaylistRenameDialogFragment extends DialogFragment implements OnEditorActionListener {
private EditText mEditText;
private PlaylistManager mPlaylistManager;
private String mMediaID = null;
private String mPlaylistName = null;
public PlaylistRenameDialogFragment() {
setStyle( STYLE_NORMAL, 0 );
}
public void setMediaID( String media_id ) {
this.mMediaID = media_id;
}
@Override public void onAttach( Activity activity ) {
super.onAttach( activity );
Cursor cursor = getActivity().getContentResolver().query(
MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
new String[] {
MediaStore.Audio.Playlists.NAME,
MediaStore.Audio.Playlists._ID
},
MediaStore.Audio.Playlists._ID + " =?",
new String[] {
mMediaID
},
null
);
cursor.moveToFirst();
mPlaylistName = cursor.getString( cursor.getColumnIndex( MediaStore.Audio.Playlists.NAME ) );
cursor.close();
}
@Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate( R.layout.dialog_fragment_renameplaylist, container);
getDialog().requestWindowFeature( Window.FEATURE_NO_TITLE );
mPlaylistManager = new PlaylistManager( getActivity() );
mEditText = ( EditText ) view.findViewById( R.id.NewPlaylistName );
mEditText.setOnEditorActionListener( this );
mEditText.setSelected( false );
mEditText.setText( mPlaylistName );
android.util.Log.i( "Rename playlist", "old name: " + mPlaylistName );
view.findViewById( R.id.DialogRenameConfirm ).setOnClickListener( headerButtonClickListener );
view.findViewById( R.id.DialogRenameCancel ).setOnClickListener( headerButtonClickListener );
return view;
}
@Override public void onStart() {
super.onStart();
if ( android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB ) {
getDialog().getWindow().setBackgroundDrawableResource( R.drawable.gb_dialog_background );
}
mEditText.performClick();
}
private View.OnClickListener headerButtonClickListener = new View.OnClickListener() {
@Override public void onClick(View v) {
int id = v.getId();
if ( id == R.id.DialogRenameCancel ) {
dismiss();
} else if ( id == R.id.DialogRenameConfirm ) {
renamePlaylist();
}
}
};
private void renamePlaylist() {
String playlistName = mEditText.getEditableText().toString().trim();
if ( null == playlistName || playlistName.length() < 1 ) {
Toast.makeText(getActivity(), "Please enter a playlist name.", Toast.LENGTH_SHORT ).show();
} else {
if ( playlistName.toLowerCase().equals( getString( R.string.playlist_name_starred ).toLowerCase() ) ) {
Toast.makeText(getActivity(), "Your playlist can't be named `Starred`.", Toast.LENGTH_SHORT ).show();
} else {
//int playlist_id = mPlaylistManager.createPlaylist( playlistName );
if ( null != mMediaID ) {
mPlaylistManager.renamePlaylist( mMediaID, playlistName );
Toast.makeText(getActivity(), "Added song to new playlist " + playlistName, Toast.LENGTH_SHORT ).show();
}
dismiss();
}
}
}
public boolean onEditorAction( TextView v, int actionId, KeyEvent event ) {
if ( EditorInfo.IME_ACTION_DONE == actionId ) {
// Return input text to activity
//EditNameDialogListener activity = (EditNameDialogListener) getActivity();
//activity.onFinishEditDialog(mEditText.getText().toString());
renamePlaylist();
return true;
}
return false;
}
}