package com.mercandalli.android.apps.files.file.audio.metadata; import android.annotation.SuppressLint; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.mercandalli.android.apps.files.R; import com.mercandalli.android.apps.files.file.audio.FileAudioManager; import com.mercandalli.android.apps.files.file.audio.FileAudioModel; import java.io.File; import static com.mercandalli.android.library.base.java.StringUtils.isEquals; public class FileAudioMetaDataEditionDialog extends DialogFragment { private static final String ARG_FILE = "FileAudioMetaDataEditionDialog.Args.ARG_FILE"; private static final String ARG_TITLE = "FileAudioMetaDataEditionDialog.Args.ARG_TITLE"; private static final String ARG_ARTIST = "FileAudioMetaDataEditionDialog.Args.ARG_ARTIST"; private static final String ARG_ALBUM = "FileAudioMetaDataEditionDialog.Args.ARG_ALBUM"; private static final String SAVED_FILE = "FileAudioMetaDataEditionDialog.Saved.SAVED_FILE"; private static final String SAVED_TITLE = "FileAudioMetaDataEditionDialog.Saved.SAVED_TITLE"; private static final String SAVED_ARTIST = "FileAudioMetaDataEditionDialog.Saved.SAVED_ARTIST"; private static final String SAVED_ALBUM = "FileAudioMetaDataEditionDialog.Saved.SAVED_ALBUM"; public static FileAudioMetaDataEditionDialog newInstance(FileAudioModel fileAudioModel) { final Bundle args = new Bundle(); args.putString(ARG_FILE, fileAudioModel.getUrl()); args.putString(ARG_TITLE, fileAudioModel.getTitle()); args.putString(ARG_ARTIST, fileAudioModel.getArtist()); args.putString(ARG_ALBUM, fileAudioModel.getAlbum()); final FileAudioMetaDataEditionDialog instance = new FileAudioMetaDataEditionDialog(); instance.setArguments(args); return instance; } private String mFilePath; private String mTitle; private String mArtist; private String mAlbum; private EditText mTitleEditText; private EditText mArtistEditText; private EditText mAlbumEditText; @NonNull @Override public Dialog onCreateDialog(final Bundle savedInstanceState) { final Context context = getContext(); final FileAudioManager fileAudioManager = FileAudioManager.getInstance(context); @SuppressLint("InflateParams") final View rootView = LayoutInflater.from(context).inflate(R.layout.dialog_edit_meta_data, null); final Bundle args = getArguments(); if (args.containsKey(ARG_FILE)) { mFilePath = args.getString(ARG_FILE); } else if (savedInstanceState != null) { mFilePath = savedInstanceState.getString(SAVED_FILE); } if (args.containsKey(ARG_TITLE)) { mTitle = args.getString(ARG_TITLE); } else if (savedInstanceState != null) { mTitle = savedInstanceState.getString(SAVED_TITLE); } if (args.containsKey(ARG_ARTIST)) { mArtist = args.getString(ARG_ARTIST); } else if (savedInstanceState != null) { mArtist = savedInstanceState.getString(SAVED_ARTIST); } if (args.containsKey(ARG_ALBUM)) { mAlbum = args.getString(ARG_ALBUM); } else if (savedInstanceState != null) { mAlbum = savedInstanceState.getString(SAVED_ALBUM); } mTitleEditText = (EditText) rootView.findViewById(R.id.dialog_edit_meta_data_title); mTitleEditText.setText(mTitle); mArtistEditText = (EditText) rootView.findViewById(R.id.dialog_edit_meta_data_artist); mArtistEditText.setText(mArtist); mAlbumEditText = (EditText) rootView.findViewById(R.id.dialog_edit_meta_data_album); mAlbumEditText.setText(mAlbum); final AlertDialog alertDialog = new AlertDialog.Builder(context) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { final String newTitle = mTitleEditText.getText().toString(); final String newArtist = mArtistEditText.getText().toString(); final String newAlbum = mAlbumEditText.getText().toString(); if (nothingChanged(newTitle, newArtist, newAlbum)) { Toast.makeText(context, "Nothing changed", Toast.LENGTH_SHORT).show(); return; } final boolean succeeded = fileAudioManager.setFileAudioMetaData( new File(mFilePath), newTitle, newArtist, newAlbum); Toast.makeText(context, succeeded ? "Succeed" : "Failed", Toast.LENGTH_SHORT).show(); } }) .setNegativeButton(android.R.string.cancel, null) .setView(rootView).create(); alertDialog.setCanceledOnTouchOutside(true); alertDialog.setCancelable(true); return alertDialog; } @Override public void onSaveInstanceState(final Bundle savedInstanceState) { savedInstanceState.putString(SAVED_FILE, mFilePath); savedInstanceState.putString(SAVED_TITLE, mTitle); savedInstanceState.putString(SAVED_ARTIST, mArtist); savedInstanceState.putString(SAVED_ALBUM, mAlbum); super.onSaveInstanceState(savedInstanceState); } private boolean nothingChanged( @Nullable final String newTitle, @Nullable final String newArtist, @Nullable final String newAlbum) { return isEquals(mTitle, newTitle) && isEquals(mArtist, newArtist) && isEquals(mAlbum, newAlbum); } }