package org.cnodejs.android.md.ui.activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.Spinner;
import org.cnodejs.android.md.R;
import org.cnodejs.android.md.model.entity.TabType;
import org.cnodejs.android.md.model.storage.SettingShared;
import org.cnodejs.android.md.model.storage.TopicShared;
import org.cnodejs.android.md.presenter.contract.ICreateTopicPresenter;
import org.cnodejs.android.md.presenter.implement.CreateTopicPresenter;
import org.cnodejs.android.md.ui.base.StatusBarActivity;
import org.cnodejs.android.md.ui.dialog.ProgressDialog;
import org.cnodejs.android.md.ui.listener.NavigationFinishClickListener;
import org.cnodejs.android.md.ui.util.Navigator;
import org.cnodejs.android.md.ui.util.ThemeUtils;
import org.cnodejs.android.md.ui.util.ToastUtils;
import org.cnodejs.android.md.ui.view.ICreateTopicView;
import org.cnodejs.android.md.ui.viewholder.EditorBarViewHolder;
import butterknife.BindView;
import butterknife.ButterKnife;
public class CreateTopicActivity extends StatusBarActivity implements Toolbar.OnMenuItemClickListener, ICreateTopicView {
@BindView(R.id.toolbar)
protected Toolbar toolbar;
@BindView(R.id.spn_tab)
protected Spinner spnTab;
@BindView(R.id.edt_title)
protected EditText edtTitle;
@BindView(R.id.layout_editor_bar)
protected ViewGroup editorBar;
@BindView(R.id.edt_content)
protected EditText edtContent;
private ProgressDialog progressDialog;
private ICreateTopicPresenter createTopicPresenter;
private boolean saveTopicDraft = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
ThemeUtils.configThemeBeforeOnCreate(this, R.style.AppThemeLight, R.style.AppThemeDark);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_topic);
ButterKnife.bind(this);
toolbar.setNavigationOnClickListener(new NavigationFinishClickListener(this));
toolbar.inflateMenu(R.menu.create_topic);
toolbar.setOnMenuItemClickListener(this);
progressDialog = ProgressDialog.createWithAutoTheme(this);
progressDialog.setCancelable(false);
// 创建EditorBar
new EditorBarViewHolder(this, editorBar, edtContent);
// 载入草稿
if (SettingShared.isEnableTopicDraft(this)) {
spnTab.setSelection(TopicShared.getDraftTabPosition(this));
edtContent.setText(TopicShared.getDraftContent(this));
edtContent.setSelection(edtContent.length());
edtTitle.setText(TopicShared.getDraftTitle(this));
edtTitle.setSelection(edtTitle.length()); // 这个必须最后调用
}
createTopicPresenter = new CreateTopicPresenter(this, this);
}
/**
* 实时保存草稿
*/
@Override
protected void onPause() {
super.onPause();
if (SettingShared.isEnableTopicDraft(this) && saveTopicDraft) {
TopicShared.setDraftTabPosition(this, spnTab.getSelectedItemPosition());
TopicShared.setDraftTitle(this, edtTitle.getText().toString());
TopicShared.setDraftContent(this, edtContent.getText().toString());
}
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_send:
createTopicPresenter.createTopicAsyncTask(getTabByPosition(spnTab.getSelectedItemPosition()), edtTitle.getText().toString().trim(), edtContent.getText().toString().trim());
return true;
default:
return false;
}
}
private TabType getTabByPosition(int position) {
switch (position) {
case 0:
return TabType.share;
case 1:
return TabType.ask;
case 2:
return TabType.job;
default:
return TabType.share;
}
}
@Override
public void onTitleError(@NonNull String message) {
ToastUtils.with(this).show(message);
edtTitle.requestFocus();
}
@Override
public void onContentError(@NonNull String message) {
ToastUtils.with(this).show(message);
edtContent.requestFocus();
}
@Override
public void onCreateTopicOk(@NonNull String topicId) {
saveTopicDraft = false;
TopicShared.clear(this);
ToastUtils.with(this).show(R.string.post_success);
Navigator.TopicWithAutoCompat.start(this, topicId);
finish();
}
@Override
public void onCreateTopicStart() {
progressDialog.show();
}
@Override
public void onCreateTopicFinish() {
progressDialog.dismiss();
}
}