package net.coding.program.project.detail.file; import android.content.Intent; import android.support.v4.app.Fragment; import net.coding.program.R; import net.coding.program.common.Global; import net.coding.program.common.ui.BackActivity; import net.coding.program.model.AttachmentFileObject; import net.coding.program.model.RequestData; import net.coding.program.model.TaskObject; import net.coding.program.project.detail.AttachmentsActivity; import net.coding.program.project.detail.TopicAddActivity; import net.coding.program.project.detail.TopicEditFragment; import net.coding.program.task.TaskDescrip; import net.coding.program.task.TaskDespEditFragment; import net.coding.program.task.TaskDespEditFragment_; import net.coding.program.task.TaskDespPreviewFragment_; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.Extra; import org.json.JSONException; import org.json.JSONObject; import java.io.File; @EActivity(R.layout.activity_markdown_edit) //@OptionsMenu(R.menu.menu_markdown_edit) public class MarkdownEditActivity extends BackActivity implements TaskDescrip, TopicEditFragment.SaveData { private static final String TAG_SAVE_CONTENT = "TAG_SAVE_CONTENT"; private static final String TAG_HTTP_FILE_VIEW = "TAG_HTTP_FILE_VIEW"; @Extra FileDynamicActivity.ProjectFileParam mParam; TaskObject.TaskDescription descriptionData = new TaskObject.TaskDescription(); String HOST_DESCRIPTION = Global.HOST_API + "/task/%s/description"; TaskDespEditFragment editFragment; Fragment previewFragment; private TopicAddActivity.TopicData modifyData = new TopicAddActivity.TopicData(); @AfterViews protected final void initTaskDescriptionActivity() { editFragment = TaskDespEditFragment_.builder().build(); previewFragment = TaskDespPreviewFragment_.builder().build(); FileSaveHelp mFileSaveHelp = new FileSaveHelp(this); File file = mParam.getLocalFile(mFileSaveHelp.getFileDownloadPath()); descriptionData.markdown = Global.readTextFile(file); String markdown = descriptionData.markdown; if (markdown.isEmpty()) { getSupportFragmentManager().beginTransaction().replace(R.id.container, editFragment).commit(); } else { modifyData.content = markdown; getSupportFragmentManager().beginTransaction().replace(R.id.container, previewFragment).commit(); } } @Override public void onBackPressed() { if (editFragment.isContentModify()) { showDialog(mParam.getFileObject().getName(), "确定放弃此次编辑?", (dialog, which) -> finish()); } else { finish(); } } @Override public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException { if (tag.equals(HOST_DESCRIPTION)) { hideProgressDialog(); if (code == 0) { showButtomToast("修改成功"); setResult(RESULT_OK); finish(); } else { showErrorMsg(code, respanse); } } else if (tag.equals(TAG_SAVE_CONTENT)) { hideProgressDialog(); if (code == 0) { showProgressBar(true, "正在保存"); setResult(RESULT_OK); String url = mParam.getHtttpFileView(); getNetwork(url, TAG_HTTP_FILE_VIEW); } else { showErrorMsg(code, respanse); } } else if (tag.equals(TAG_HTTP_FILE_VIEW)) { showProgressBar(false); if (code == 0) { JSONObject json = respanse.optJSONObject("data").optJSONObject("file"); AttachmentFileObject fileObject = new AttachmentFileObject(json); FileSaveHelp help = new FileSaveHelp(this); mParam.setFileObject(fileObject); File localFile = mParam.getLocalFile(help.getFileDownloadPath()); TxtEditActivity.writeFile(localFile, modifyData.content); fileObject.isDownload = true; Intent intent = new Intent(); intent.putExtra(AttachmentFileObject.RESULT, fileObject); intent.putExtra(AttachmentsActivity.FileActions.ACTION_NAME, AttachmentsActivity.FileActions.ACTION_EDIT); setResult(RESULT_OK, intent); finish(); } else { showErrorMsg(code, respanse); } } } @Override public void closeAndSave(String s) { Intent intent = new Intent(); intent.putExtra("data", s); setResult(RESULT_OK, intent); finish(); } @Override public String createLocateHtml(String s) { try { final String bubble = Global.readTextFile(getAssets().open("topic-android.html")); return bubble.replace("${webview_content}", s); } catch (Exception e) { Global.errorLog(e); return ""; } } @Override public void saveData(TopicAddActivity.TopicData data) { modifyData = data; } @Override public TopicAddActivity.TopicData loadData() { return modifyData; } @Override public void switchPreview() { getSupportFragmentManager().beginTransaction().replace(R.id.container, previewFragment).commit(); } @Override public void switchEdit() { getSupportFragmentManager().beginTransaction().replace(R.id.container, editFragment).commit(); } @Override public void exit() { RequestData request = mParam.getHttpEditFile(modifyData.content); postNetwork(request, TAG_SAVE_CONTENT); showProgressBar(true, "正在保存到服务器"); } @Override public String getProjectPath() { return mParam.getProjectPath(); } // 有文件的项目必定是私有项目 @Override public boolean isProjectPublic() { return false; } }