package org.openintents.filemanager.dialogs; import java.io.File; import org.openintents.filemanager.R; import org.openintents.filemanager.files.FileHolder; import org.openintents.filemanager.lists.FileListFragment; import org.openintents.filemanager.util.MediaScannerUtils; import org.openintents.filemanager.util.UIUtils; import org.openintents.intents.FileManagerIntents; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; public class RenameDialog extends DialogFragment { private FileHolder mFileHolder; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mFileHolder = getArguments().getParcelable(FileManagerIntents.EXTRA_DIALOG_FILE_HOLDER); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { LayoutInflater inflater = LayoutInflater.from(getActivity()); LinearLayout view = (LinearLayout) inflater.inflate(R.layout.dialog_text_input, null); final EditText v = (EditText) view.findViewById(R.id.foldername); v.setText(mFileHolder.getName()); v.setOnEditorActionListener(new TextView.OnEditorActionListener() { public boolean onEditorAction(TextView text, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_GO) renameTo(text.getText().toString()); dismiss(); return true; } }); return new AlertDialog.Builder(getActivity()) .setInverseBackgroundForced(UIUtils.shouldDialogInverseBackground(getActivity())) .setTitle(R.string.menu_rename) .setIcon(mFileHolder.getIcon()) .setView(view) .setNegativeButton(android.R.string.cancel, null) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { renameTo(v.getText().toString()); } }).create(); } private void renameTo(String to){ boolean res = false; if(to.length() > 0){ File from = mFileHolder.getFile(); File dest = new File(mFileHolder.getFile().getParent() + File.separator + to); if(!dest.exists()){ res = mFileHolder.getFile().renameTo(dest); ((FileListFragment) getTargetFragment()).refresh(); // Inform media scanner MediaScannerUtils.informFileDeleted(getActivity().getApplicationContext(), from); MediaScannerUtils.informFileAdded(getActivity().getApplicationContext(), dest); } } Toast.makeText(getActivity(), res ? R.string.rename_success : R.string.rename_failure, Toast.LENGTH_SHORT).show(); } }