package com.mechinn.android.ouralliance.fragment; import java.io.File; import android.app.Activity; import android.graphics.Point; import android.support.v4.app.DialogFragment; import android.view.Display; import com.mechinn.android.ouralliance.R; import com.mechinn.android.ouralliance.adapter.MultimediaAdapter; import com.mechinn.android.ouralliance.event.MultimediaDeletedEvent; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.Toast; import de.greenrobot.event.EventBus; import static android.widget.ImageView.ScaleType.CENTER_INSIDE; public class MultimediaContextDialogFragment extends DialogFragment implements Callback { public static final String TAG = "MultimediaContextDialogFragment"; public static final String IMAGE = "image"; private File file; private View dialog; private ProgressBar waiting; private ImageView image; private Button delete; private Button open; private int width; private int height; @Override public void onSuccess() { waiting.setVisibility(View.GONE); } @Override public void onError() { waiting.setVisibility(View.GONE); } @Override public void onAttach(Activity activity) { super.onAttach(activity); Display display = activity.getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); width = Math.round(size.x*0.9f); height = Math.round(size.y*0.9f); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the Builder class for convenient dialog construction AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); // Picasso.with(getActivity()).setIndicatorsEnabled(true); file = (File) this.getArguments().getSerializable(IMAGE); dialog = inflater.inflate(R.layout.multimedia_context_menu, null); image = (ImageView) dialog.findViewById(R.id.image); image.setMaxWidth(width); image.setMaxHeight(height); image.setTag(R.string.file, file); image.setScaleType(CENTER_INSIDE); waiting = (ProgressBar) dialog.findViewById(R.id.loading); waiting.setVisibility(View.VISIBLE); Picasso.with(getActivity()) .load(file) .fit().centerInside() .placeholder(R.drawable.ic_empty) .error(R.drawable.ic_error) .into(image,this); delete = (Button) dialog.findViewById(R.id.delete); delete.setOnClickListener(new OnClickListener() { public void onClick(View v) { if(file.delete()) { Toast.makeText(MultimediaContextDialogFragment.this.getActivity(), "Deleted media", Toast.LENGTH_SHORT).show(); EventBus.getDefault().post(new MultimediaDeletedEvent()); } else { Toast.makeText(MultimediaContextDialogFragment.this.getActivity(), "Could not delete media", Toast.LENGTH_SHORT).show(); } MultimediaContextDialogFragment.this.dismiss(); } }); open = (Button) dialog.findViewById(R.id.open); open.setOnClickListener(new OnClickListener() { public void onClick(View v) { MultimediaAdapter.openMedia(image); MultimediaContextDialogFragment.this.dismiss(); } }); builder.setView(dialog).setCancelable(false) .setPositiveButton("Done", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); } }); // Create the AlertDialog object and return it return builder.create(); } }