package info.justaway.fragment.profile; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import info.justaway.EditProfileActivity; import info.justaway.R; import info.justaway.ScaleImageActivity; import info.justaway.model.AccessTokenManager; import info.justaway.task.DestroyBlockTask; import info.justaway.task.DestroyFriendshipTask; import info.justaway.task.FollowTask; import info.justaway.util.ImageUtil; import info.justaway.util.MessageUtil; import twitter4j.Relationship; import twitter4j.User; /** * プロフィール上部の左面 */ public class SummaryFragment extends Fragment { private boolean mFollowFlg; private boolean mBlocking; private boolean mRuntimeFlg; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View v = inflater.inflate(R.layout.fragment_profile_summary, container, false); if (v == null) { return null; } final User user = (User) getArguments().getSerializable("user"); final Relationship relationship = (Relationship) getArguments().getSerializable("relationship"); if (user == null || relationship == null) { return null; } mFollowFlg = relationship.isSourceFollowingTarget(); mBlocking = relationship.isSourceBlockingTarget(); ImageView icon = (ImageView) v.findViewById(R.id.icon); TextView name = (TextView) v.findViewById(R.id.name); TextView screenName = (TextView) v.findViewById(R.id.screen_name); TextView followedBy = (TextView) v.findViewById(R.id.followed_by); final TextView follow = (TextView) v.findViewById(R.id.follow); TextView lock = (TextView) v.findViewById(R.id.lock); lock.setVisibility(View.GONE); String iconUrl = user.getBiggerProfileImageURL(); ImageUtil.displayRoundedImage(iconUrl, icon); // アイコンタップで拡大 icon.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(v.getContext(), ScaleImageActivity.class); intent.putExtra("url", user.getOriginalProfileImageURL()); startActivity(intent); } }); name.setText(user.getName()); screenName.setText("@" + user.getScreenName()); if (user.isProtected()) { lock.setVisibility(View.VISIBLE); } if (relationship.isSourceFollowedByTarget()) { followedBy.setText(R.string.label_followed_by_target); } else { followedBy.setText(""); } follow.setVisibility(View.VISIBLE); if (user.getId() == AccessTokenManager.getUserId()) { follow.setText(R.string.button_edit_profile); } else if (mFollowFlg) { follow.setText(R.string.button_unfollow); } else if (mBlocking) { follow.setText(R.string.button_blocking); } else { follow.setText(R.string.button_follow); } follow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mRuntimeFlg) { return; } if (user.getId() == AccessTokenManager.getUserId()) { Intent intent = new Intent(getActivity(), EditProfileActivity.class); startActivity(intent); } else if (mFollowFlg) { new AlertDialog.Builder(getActivity()) .setMessage(R.string.confirm_unfollow) .setPositiveButton( R.string.button_unfollow, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mRuntimeFlg = true; MessageUtil.showProgressDialog(getActivity(), getString(R.string.progress_process)); DestroyFriendshipTask task = new DestroyFriendshipTask() { @Override protected void onPostExecute(Boolean success) { MessageUtil.dismissProgressDialog(); if (success) { MessageUtil.showToast(R.string.toast_destroy_friendship_success); follow.setText(R.string.button_follow); mFollowFlg = false; } else { MessageUtil.showToast(R.string.toast_destroy_friendship_failure); } mRuntimeFlg = false; } }; task.execute(user.getId()); } } ) .setNegativeButton( R.string.button_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } } ) .show(); } else if (mBlocking) { // TODO: new AlertDialog.Builder(getActivity()) .setMessage(R.string.confirm_destroy_block) .setPositiveButton( R.string.button_destroy_block, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mRuntimeFlg = true; MessageUtil.showProgressDialog(getActivity(), getString(R.string.progress_process)); DestroyBlockTask task = new DestroyBlockTask() { @Override protected void onPostExecute(Boolean success) { MessageUtil.dismissProgressDialog(); if (success) { MessageUtil.showToast(R.string.toast_destroy_block_success); follow.setText(R.string.button_follow); mBlocking = false; } else { MessageUtil.showToast(R.string.toast_destroy_block_failure); } mRuntimeFlg = false; } }; task.execute(user.getId()); } } ) .setNegativeButton( R.string.button_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } } ) .show(); } else { new AlertDialog.Builder(getActivity()) .setMessage(R.string.confirm_follow) .setPositiveButton( R.string.button_follow, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mRuntimeFlg = true; MessageUtil.showProgressDialog(getActivity(), getString(R.string.progress_process)); FollowTask task = new FollowTask() { @Override protected void onPostExecute(Boolean success) { MessageUtil.dismissProgressDialog(); if (success) { MessageUtil.showToast(R.string.toast_follow_success); follow.setText(R.string.button_unfollow); mFollowFlg = true; } else { MessageUtil.showToast(R.string.toast_follow_failure); } mRuntimeFlg = false; } }; task.execute(user.getId()); } } ) .setNegativeButton( R.string.button_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } } ) .show(); } } }); return v; } }