package org.openintents.filemanager.dialogs; import java.io.File; import java.util.List; import org.openintents.filemanager.R; import org.openintents.filemanager.dialogs.OverwriteFileDialog.Overwritable; import org.openintents.filemanager.files.FileHolder; import org.openintents.filemanager.lists.FileListFragment; import org.openintents.filemanager.util.CompressManager; import org.openintents.filemanager.util.MediaScannerUtils; 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; public class MultiCompressDialog extends DialogFragment implements Overwritable { private List<FileHolder> mFileHolders; private CompressManager mCompressManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mFileHolders = getArguments().getParcelableArrayList(FileManagerIntents.EXTRA_DIALOG_FILE_HOLDER); mCompressManager = new CompressManager(getActivity()); mCompressManager.setOnCompressFinishedListener(new CompressManager.OnCompressFinishedListener() { @Override public void compressFinished() { ((FileListFragment) getTargetFragment()).refresh(); MediaScannerUtils.informFileAdded(getTargetFragment().getActivity().getApplicationContext(), tbcreated); } }); } @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.setHint(R.string.compressed_file_name); v.setOnEditorActionListener(new TextView.OnEditorActionListener(){ public boolean onEditorAction(TextView text, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_GO) compress(v.getText().toString()); dismiss(); return true; } }); return new AlertDialog.Builder(getActivity()) .setTitle(R.string.menu_compress) .setView(view) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { compress(v.getText().toString()); } }).setNegativeButton(android.R.string.cancel, null).create(); } private void compress(final String zipname){ this.zipname = zipname; tbcreated = new File(mFileHolders.get(0).getFile().getParent() + File.separator + zipname + ".zip"); if (tbcreated.exists()) { this.zipname = zipname; OverwriteFileDialog dialog = new OverwriteFileDialog(); dialog.setTargetFragment(this, 0); dialog.show(getFragmentManager(), "OverwriteFileDialog"); } else { mCompressManager.compress(mFileHolders, tbcreated.getName()); } } private File tbcreated; private String zipname; @Override public void overwrite() { tbcreated.delete(); compress(zipname); } }