package org.openintents.filemanager.dialogs;
import java.io.File;
import org.openintents.filemanager.R;
import org.openintents.filemanager.files.FileHolder;
import org.openintents.filemanager.util.FileUtils;
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.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
public class DetailsDialog extends DialogFragment {
private FileHolder mFileHolder;
private TextView mSizeView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mFileHolder = getArguments().getParcelable(FileManagerIntents.EXTRA_DIALOG_FILE_HOLDER);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
File f = mFileHolder.getFile();
// Inflate the view to display
LayoutInflater inflater = LayoutInflater.from(getActivity());
final View v = inflater.inflate(R.layout.dialog_details, null);
// Fill the views
((TextView) v.findViewById(R.id.details_type_value)).setText(f.isDirectory() ? R.string.details_type_folder :
(f.isFile() ? R.string.details_type_file : R.string.details_type_other));
mSizeView = (TextView) v.findViewById(R.id.details_size_value);
new SizeRefreshTask().execute();
String perms = (f.canRead() ? "R" : "-") + (f.canWrite() ? "W" : "-") + (FileUtils.canExecute(f) ? "X" : "-");
((TextView) v.findViewById(R.id.details_permissions_value)).setText(perms);
((TextView) v.findViewById(R.id.details_hidden_value)).setText(f.isHidden() ? R.string.details_yes : R.string.details_no);
((TextView) v.findViewById(R.id.details_lastmodified_value)).setText(mFileHolder.getFormattedModificationDate(getActivity()));
// Finally create the dialog
return new AlertDialog.Builder(getActivity())
.setInverseBackgroundForced(UIUtils.shouldDialogInverseBackground(getActivity()))
.setTitle(mFileHolder.getName())
.setIcon(mFileHolder.getIcon())
.setView(v)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dismiss();
}
}).create();
}
/**
* This task doesn't update the text viewed to the user until it's finished,
* so that the user knows the size he sees is indeed the final one.
*
* @author George Venios
*
*/
private class SizeRefreshTask extends AsyncTask<Void, Void, String> {
@Override
protected void onPreExecute() {
mSizeView.setText(R.string.loading);
}
@Override
protected String doInBackground(Void... params) {
return mFileHolder.getFormattedSize(getActivity(), true);
}
@Override
protected void onPostExecute(String result) {
mSizeView.setText(result);
}
}
}