package cl.monsoon.s1next.view.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.text.TextUtils;
import android.view.MenuItem;
import org.apache.commons.lang3.StringUtils;
import cl.monsoon.s1next.R;
import cl.monsoon.s1next.view.dialog.ReplyDiscardPromptDialogFragment;
import cl.monsoon.s1next.view.fragment.ReplyFragment;
/**
* An Activity which used to send a reply.
*/
public final class ReplyActivity extends BaseActivity {
private static final String ARG_THREAD_ID = "thread_id";
private static final String ARG_THREAD_TITLE = "thread_title";
private static final String ARG_QUOTE_POST_ID = "quote_post_id";
private static final String ARG_QUOTE_POST_COUNT = "quote_post_count";
private ReplyFragment mReplyFragment;
public static void startReplyActivityForResultMessage(Activity activity, String threadId, @Nullable String threadTitle,
@Nullable String quotePostId, @Nullable String quotePostCount) {
Intent intent = new Intent(activity, ReplyActivity.class);
intent.putExtra(ARG_THREAD_ID, threadId);
intent.putExtra(ARG_THREAD_TITLE, threadTitle);
intent.putExtra(ARG_QUOTE_POST_ID, quotePostId);
intent.putExtra(ARG_QUOTE_POST_COUNT, quotePostCount);
BaseActivity.startActivityForResultMessage(activity, intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base_without_drawer_and_scrolling_effect);
setupNavCrossIcon();
Intent intent = getIntent();
String quotePostId = intent.getStringExtra(ARG_QUOTE_POST_ID);
String titlePrefix = TextUtils.isEmpty(quotePostId)
? getString(R.string.reply_activity_title_prefix)
: getString(R.string.reply_activity_quote_title_prefix,
intent.getStringExtra(ARG_QUOTE_POST_COUNT));
setTitle(titlePrefix + StringUtils.defaultString(intent.getStringExtra(ARG_THREAD_TITLE),
StringUtils.EMPTY));
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fragment = fragmentManager.findFragmentByTag(ReplyFragment.TAG);
if (fragment == null) {
mReplyFragment = ReplyFragment.newInstance(intent.getStringExtra(ARG_THREAD_ID),
quotePostId);
fragmentManager.beginTransaction().add(R.id.frame_layout, mReplyFragment,
ReplyFragment.TAG).commit();
} else {
mReplyFragment = (ReplyFragment) fragment;
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (mReplyFragment.isReplyEmpty()) {
finish();
} else {
new ReplyDiscardPromptDialogFragment().show(getSupportFragmentManager(),
ReplyDiscardPromptDialogFragment.TAG);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
/**
* Show {@link android.app.AlertDialog} when reply content is not empty.
*/
@Override
public void onBackPressed() {
if (mReplyFragment.isEmoticonKeyboardShowing()) {
mReplyFragment.hideEmoticonKeyboard();
} else if (mReplyFragment.isReplyEmpty()) {
super.onBackPressed();
} else {
new ReplyDiscardPromptDialogFragment().show(getSupportFragmentManager(),
ReplyDiscardPromptDialogFragment.TAG);
}
}
}