package com.garethevans.church.opensongtablet; import android.app.Activity; import android.app.DialogFragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import org.xmlpull.v1.XmlPullParserException; import java.io.File; import java.io.IOException; import java.util.ArrayList; public class PopUpSongRenameFragment extends DialogFragment { // This is a quick popup to enter a new song folder name, or rename a current one // Once it has been completed positively (i.e. ok was clicked) it sends a refreshAll() interface call static ArrayList<String> newtempfolders; Spinner newFolderSpinner; EditText newSongNameEditText; Button renameSongCancelButton; Button renameSongOkButton; boolean isPDF; String oldsongname; public interface MyInterface { void refreshAll(); } private MyInterface mListener; static PopUpSongRenameFragment newInstance() { PopUpSongRenameFragment frag; frag = new PopUpSongRenameFragment(); return frag; } @Override @SuppressWarnings("deprecation") public void onAttach(Activity activity) { mListener = (MyInterface) activity; super.onAttach(activity); } @Override public void onDetach() { mListener = null; super.onDetach(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().setTitle(getActivity().getResources().getString(R.string.options_song_rename)); View V = inflater.inflate(R.layout.popup_songrename, container, false); // Initialise the views newFolderSpinner = (Spinner) V.findViewById(R.id.newFolderSpinner); newSongNameEditText = (EditText) V.findViewById(R.id.newSongNameEditText); renameSongCancelButton = (Button) V.findViewById(R.id.renameSongCancelButton); renameSongOkButton = (Button) V.findViewById(R.id.renameSongOkButton); oldsongname = FullscreenActivity.songfilename; newSongNameEditText.setText(oldsongname); isPDF = oldsongname.endsWith(".pdf") || oldsongname.endsWith(".PDF"); // Set up the folderspinner // Populate the list view with the current song folders // Reset to the main songs folder, so we can list them FullscreenActivity.currentFolder = FullscreenActivity.whichSongFolder; FullscreenActivity.newFolder = FullscreenActivity.whichSongFolder; //FullscreenActivity.whichSongFolder = ""; ListSongFiles.listSongFolders(); // The song folder newtempfolders = new ArrayList<>(); newtempfolders.add(FullscreenActivity.mainfoldername); for (int e = 0; e < FullscreenActivity.mSongFolderNames.length; e++) { if (FullscreenActivity.mSongFolderNames[e] != null && !FullscreenActivity.mSongFolderNames[e].equals(FullscreenActivity.mainfoldername)) { newtempfolders.add(FullscreenActivity.mSongFolderNames[e]); } } ArrayAdapter<String> folders = new ArrayAdapter<>(getActivity(), R.layout.my_spinner, newtempfolders); folders.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); newFolderSpinner.setAdapter(folders); // Select the current folder as the preferred one - i.e. rename into the same folder newFolderSpinner.setSelection(0); for (int w = 0; w < newtempfolders.size(); w++) { if (FullscreenActivity.currentFolder.equals(newtempfolders.get(w)) || FullscreenActivity.currentFolder.equals("(" + newtempfolders.get(w) + ")")) { newFolderSpinner.setSelection(w); FullscreenActivity.newFolder = newtempfolders.get(w); } } // Set the newFolderSpinnerListener newFolderSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { FullscreenActivity.newFolder = newtempfolders.get(position); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); // Set the button listeners renameSongCancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Just close this view dismiss(); } }); renameSongOkButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Get the variables String tempNewSong = newSongNameEditText.getText().toString().trim(); String tempOldFolder = FullscreenActivity.currentFolder; String tempNewFolder = FullscreenActivity.newFolder; File to; if (tempNewFolder.equals(FullscreenActivity.mainfoldername)) { to = new File(FullscreenActivity.dir + "/" + tempNewSong); } else { to = new File(FullscreenActivity.dir + "/" + tempNewFolder + "/" + tempNewSong); } File from; if (tempOldFolder.equals("") || tempOldFolder.equals(FullscreenActivity.mainfoldername)) { from = new File(FullscreenActivity.dir + "/" + oldsongname); } else { from = new File(FullscreenActivity.dir + "/" + tempOldFolder + "/" + oldsongname); } if (!tempNewSong.equals("") && !tempNewSong.isEmpty() && !tempNewSong.contains("/") && !to.exists() && !tempNewSong.equals(FullscreenActivity.mainfoldername)) { // Try to rename if (isPDF) { if (!tempNewSong.endsWith(".pdf") && !tempNewSong.endsWith(".PDF")) { // Naughty, naughty, it should be a pdf extensions tempNewSong = tempNewSong + ".pdf"; } } if (from.renameTo(to)) { FullscreenActivity.myToastMessage = getResources().getString(R.string.renametitle) + " - " + getResources().getString(R.string.ok); } else { FullscreenActivity.myToastMessage = getResources().getString(R.string.renametitle) + " - " + getResources().getString(R.string.error_notset); } FullscreenActivity.whichSongFolder = tempNewFolder; FullscreenActivity.songfilename = tempNewSong; // Load the songs and the folders ListSongFiles.listSongFolders(); ListSongFiles.listSongs(); try { LoadXML.loadXML(); } catch (XmlPullParserException | IOException e) { e.printStackTrace(); } // Get the song indexes ListSongFiles.getCurrentSongIndex(); // Save preferences Preferences.savePreferences(); mListener.refreshAll(); dismiss(); } else if (to.exists()) { FullscreenActivity.myToastMessage = getResources().getString(R.string.file_exists); ShowToast.showToast(getActivity()); } else { FullscreenActivity.myToastMessage = getResources().getString(R.string.no); ShowToast.showToast(getActivity()); } } }); return V; } }