package info.justaway.listener; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.View; import android.widget.AdapterView; import info.justaway.model.Row; import info.justaway.util.ActionUtil; import info.justaway.adapter.TwitterAdapter; import info.justaway.fragment.AroundFragment; import info.justaway.fragment.TalkFragment; import info.justaway.settings.BasicSettings; import twitter4j.Status; public class StatusLongClickListener implements AdapterView.OnItemLongClickListener { private FragmentActivity mActivity; public StatusLongClickListener(Activity activity) { mActivity = (FragmentActivity) activity; } public TwitterAdapter getAdapter(AdapterView<?> adapterView) { return (TwitterAdapter) adapterView.getAdapter(); } @Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) { TwitterAdapter twitterAdapter = getAdapter(adapterView); Row row = twitterAdapter.getItem(position); if (row == null) { return false; } if (row.isDirectMessage()) { return false; } Status status = row.getStatus(); final Status retweet = status.getRetweetedStatus(); final Status source = retweet != null ? retweet : status; Bundle args = new Bundle(); String action = BasicSettings.getLongTapAction(); if (action.equals("quote")) { ActionUtil.doQuote(source, mActivity); } else if (action.equals("talk")) { if (source.getInReplyToStatusId() > 0) { TalkFragment dialog = new TalkFragment(); args.putSerializable("status", source); dialog.setArguments(args); dialog.show(mActivity.getSupportFragmentManager(), "dialog"); } else { return false; } } else if (action.equals("show_around")) { AroundFragment aroundFragment = new AroundFragment(); Bundle aroundArgs = new Bundle(); aroundArgs.putSerializable("status", source); aroundFragment.setArguments(aroundArgs); aroundFragment.show(mActivity.getSupportFragmentManager(), "dialog"); } else if (action.equals("share_url")) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, "https://twitter.com/" + status.getUser().getScreenName() + "/status/" + String.valueOf(status.getId())); mActivity.startActivity(intent); } else if (action.equals("reply_all")) { ActionUtil.doReplyAll(source, mActivity); } else { return false; } return true; } }