package com.athena.asm.util.task; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.Map; import android.app.ProgressDialog; import android.os.AsyncTask; import com.athena.asm.WritePostActivity; import com.athena.asm.util.StringUtility; import com.athena.asm.viewmodel.WritePostViewModel; public class LoadWritePostTask extends AsyncTask<String, Integer, String> { private WritePostActivity writePostActivity; private int type; private String contentString = null; private boolean isReply = false; private WritePostViewModel m_viewModel; public LoadWritePostTask(WritePostActivity activity, WritePostViewModel viewModel) { this.writePostActivity = activity; this.type = viewModel.getWriteType(); m_viewModel = viewModel; } private ProgressDialog pdialog; @Override protected void onPreExecute() { pdialog = new ProgressDialog(writePostActivity); pdialog.setMessage("请稍候..."); pdialog.show(); } @Override protected String doInBackground(String... params) { String postUrl = ""; if (type == WritePostActivity.TYPE_POST) { postUrl = "http://www.newsmth.net/bbssnd.php"; Map<String, String> paramsMap = StringUtility .getUrlParams(m_viewModel.getToHandlerUrl()); if (paramsMap.containsKey("board")) { postUrl += "?board=" + paramsMap.get("board"); } if (paramsMap.containsKey("reid")) { postUrl += "&reid=" + paramsMap.get("reid"); isReply = true; } m_viewModel.setPostUrl(postUrl); contentString = writePostActivity.m_smthSupport .getUrlContent(m_viewModel.getToHandlerUrl()); } else if (type == WritePostActivity.TYPE_MAIL) { postUrl = "http://www.newsmth.net/bbssendmail.php"; Map<String, String> paramsMap = StringUtility .getUrlParams(m_viewModel.getToHandlerUrl()); if (paramsMap.containsKey("dir")) { m_viewModel.setMailDir(paramsMap.get("dir")); postUrl += "?dir=" + m_viewModel.getMailDir(); } if (paramsMap.containsKey("userid")) { m_viewModel.setMailUserId(paramsMap.get("userid")); postUrl += "?userid=" + m_viewModel.getMailUserId(); } if (paramsMap.containsKey("num")) { m_viewModel.setMailNumber(paramsMap.get("num")); postUrl += "?num=" + m_viewModel.getMailNumber(); } if (paramsMap.containsKey("file")) { m_viewModel.setMailFile(paramsMap.get("file")); postUrl += "?file=" + m_viewModel.getMailFile(); } if (paramsMap.containsKey("title")) { try { String postTitle; postTitle = URLDecoder.decode( paramsMap.get("title"), "GBK"); if (!postTitle.contains("Re:")) { postTitle = "Re: " + postTitle; } m_viewModel.setPostTitile(postTitle); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } postUrl += "?title=" + paramsMap.get("title"); } m_viewModel.setPostUrl(postUrl); contentString = writePostActivity.m_smthSupport .getUrlContent(m_viewModel.getToHandlerUrl()); } else if (type == WritePostActivity.TYPE_POST_EDIT) { // http://www.newsmth.net/bbsedit.php?board=PocketLife&id=1408697&ftype=0&do postUrl = "http://www.newsmth.net/bbsedit.php"; Map<String, String> paramsMap = StringUtility .getUrlParams(m_viewModel.getToHandlerUrl()); if (paramsMap.containsKey("board")) { postUrl += "?board=" + paramsMap.get("board"); } if (paramsMap.containsKey("id")) { postUrl += "&id=" + paramsMap.get("id"); } postUrl += "&ftype=0&do"; // Log.d("TYPE_POST_EDIT update URL = ", postUrl); m_viewModel.setPostUrl(postUrl); contentString = writePostActivity.m_smthSupport .getUrlContent(m_viewModel.getToHandlerUrl()); } return null; } @Override protected void onPostExecute(String result) { if (type == WritePostActivity.TYPE_POST) { writePostActivity.parsePostToHandleUrl(contentString, isReply); } else if (type == WritePostActivity.TYPE_MAIL) { writePostActivity.parseMailToHandleUrl(contentString); } else if (type == WritePostActivity.TYPE_POST_EDIT) { writePostActivity.parsePostEditToHandleUrl(contentString); } pdialog.cancel(); writePostActivity.finishWork(); } }