package info.justaway.fragment.profile; import android.app.Dialog; import android.content.DialogInterface; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.view.Gravity; import android.widget.ImageView; import android.widget.LinearLayout; import java.io.File; import info.justaway.JustawayApplication; import info.justaway.R; import info.justaway.model.TwitterManager; import info.justaway.util.ImageUtil; import info.justaway.util.MessageUtil; import twitter4j.User; import static android.app.AlertDialog.Builder; public class UpdateProfileImageFragment extends DialogFragment { private File mImgPath; public static UpdateProfileImageFragment newInstance(File imgPath, Uri uri) { final Bundle args = new Bundle(2); args.putSerializable("imgPath", imgPath); args.putParcelable("uri", uri); final UpdateProfileImageFragment f = new UpdateProfileImageFragment(); f.setArguments(args); return f; } public UpdateProfileImageFragment() { } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { mImgPath = (File) getArguments().get("imgPath"); Uri uri = (Uri) getArguments().get("uri"); Builder builder = new Builder(getActivity()); builder.setMessage(R.string.confirm_update_profile_image); // LinearLayoutを被せないとサイズを調整できない LinearLayout layout = new LinearLayout(getActivity()); layout.setGravity(Gravity.CENTER); ImageView image = new ImageView(getActivity()); image.setScaleType(ImageView.ScaleType.CENTER_CROP); image.setLayoutParams(new LinearLayout.LayoutParams( 340, 340)); ImageUtil.displayImage(uri.toString(), image); layout.addView(image); builder.setView(layout); builder.setPositiveButton(getString(R.string.button_apply), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { MessageUtil.showProgressDialog(getActivity(), getString(R.string.progress_process)); new UpdateProfileImageTask().execute(); dismiss(); } } ); builder.setNegativeButton(getString(R.string.button_cancel), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dismiss(); } } ); return builder.create(); } private class UpdateProfileImageTask extends AsyncTask<Void, Void, User> { @Override protected User doInBackground(Void... params) { try { return TwitterManager.getTwitter().updateProfileImage(mImgPath); } catch (Exception e) { e.printStackTrace(); return null; } } @Override protected void onPostExecute(User user) { MessageUtil.dismissProgressDialog(); if (user != null) { MessageUtil.showToast(R.string.toast_update_profile_image_success); } else { MessageUtil.showToast(R.string.toast_update_profile_image_failure); } } } }