package net.coding.program.project.detail;
import android.util.Log;
import android.widget.EditText;
import net.coding.program.R;
import net.coding.program.common.Global;
import net.coding.program.common.base.MDEditFragment;
import net.coding.program.model.TopicLabelObject;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.OptionsItem;
import org.androidannotations.annotations.OptionsMenu;
import org.androidannotations.annotations.ViewById;
import java.util.List;
@EFragment(R.layout.fragment_topic_edit)
@OptionsMenu(R.menu.topic_detail_edit)
public class TopicEditFragment extends MDEditFragment {
@ViewById
protected EditText title;
@ViewById
protected TopicLabelBar labelBar;
private TopicAddActivity.TopicData mOldData;
@AfterViews
protected void init() {
hasOptionsMenu();
mOldData = ((SaveData) getActivity()).loadData();
Log.e("TopicLabel", String.format("labels %s", mOldData.labels == null ? "null" : String.valueOf(mOldData.labels.size())));
title.setText(mOldData.title);
String content = mOldData.content;
edit.setText(content);
edit.setSelection(content.length());
updateLabels(mOldData.labels);
}
public void updateLabels(List<TopicLabelObject> labels) {
if (labelBar != null && getActivity() != null) {
labelBar.bind(labels, (TopicLabelBar.Controller) getActivity());
}
}
@OptionsItem
protected void action_preview() {
SaveData saveData = (SaveData) getActivity();
saveData.saveData(new TopicAddActivity.TopicData(title.getText().toString(), edit.getText().toString(), mOldData.labels));
saveData.switchPreview();
Global.popSoftkeyboard(getActivity(), edit, false);
}
@OptionsItem
protected void action_save() {
SaveData saveData = (SaveData) getActivity();
saveData.saveData(new TopicAddActivity.TopicData(title.getText().toString(), edit.getText().toString(), mOldData.labels));
saveData.exit();
}
public boolean isContentModify() {
// title 有可能为空,因为用户可能根本没有进入编辑界面
if (title == null) {
return false;
}
return !title.getText().toString().equals(mOldData.title) ||
!edit.getText().toString().equals(mOldData.content);
}
public TopicAddActivity.TopicDraft generalDraft() {
return new TopicAddActivity.TopicDraft(title.getText().toString(), edit.getText().toString());
}
public interface SaveData {
void saveData(TopicAddActivity.TopicData data);
TopicAddActivity.TopicData loadData();
void switchPreview();
void switchEdit();
void exit();
String getProjectPath();
boolean isProjectPublic();
}
}