package net.coding.program.task;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import net.coding.program.R;
import net.coding.program.common.Global;
import net.coding.program.common.base.MDEditFragment;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.FragmentArg;
import org.androidannotations.annotations.OptionsItem;
@EFragment(R.layout.fragment_task_descrip_md)
public class TaskDescripMdFragment extends MDEditFragment {
@FragmentArg
String contentMd;
ActionMode mActionMode;
@AfterViews
void init() {
setHasOptionsMenu(true);
if (contentMd != null) {
edit.setText(contentMd);
mActionMode = getActivity().startActionMode(mActionModeCallback);
}
}
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
int id = 0;
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
menu.clear();
mode.getMenu().clear();
mode.getMenuInflater().inflate(R.menu.task_description_edit, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.action_save:
((TaskDescrip) getActivity()).closeAndSave(edit.getText().toString());
return true;
case R.id.action_preview:
id = R.id.action_preview;
mActionMode.finish();
Global.popSoftkeyboard(getActivity(), edit, false);
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode mode) {
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
fragmentManager.popBackStack();
if (id == R.id.action_preview) {
Fragment fragment = TaskDescripHtmlFragment_.builder()
.contentMd(edit.getText().toString())
.preview(true)
.build();
fragmentManager
.beginTransaction()
.setCustomAnimations(
R.anim.alpha_in, R.anim.alpha_out,
R.anim.alpha_in, R.anim.alpha_out)
.replace(R.id.container, fragment)
.addToBackStack("pre")
.commit();
} else {
if (fragmentManager.getFragments().size() == 1) {
getActivity().finish();
}
}
}
};
@OptionsItem
void action_save() {
((TaskDescrip) getActivity()).closeAndSave(edit.getText().toString());
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_task_description_edit, menu);
}
}