package tk.djcrazy.MyCC98; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.webkit.WebSettings; import android.webkit.WebSettings.LayoutAlgorithm; import android.webkit.WebView; import android.webkit.WebViewClient; import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.google.inject.Inject; import roboguice.inject.ContentView; import roboguice.inject.InjectExtra; import roboguice.inject.InjectView; import tk.djcrazy.MyCC98.helper.HtmlGenHelper; import tk.djcrazy.MyCC98.util.Intents; import tk.djcrazy.MyCC98.util.ToastUtils; import tk.djcrazy.MyCC98.util.UrlUtils; import tk.djcrazy.libCC98.NewCC98Service; import tk.djcrazy.libCC98.exception.ParseContentException; import tk.djcrazy.libCC98.util.RequestResultListener; /** * @author zsy */ @ContentView(R.layout.activity_pm_reply) public class PmViewActivity extends BaseFragmentActivity implements RequestResultListener<String> { private static final int MENU_REPLY_ID = 9237465; private static String TAG = "PmReply"; @InjectView(R.id.pm_reply_view) private WebView webView; @InjectExtra(Intents.EXTRA_PM_CONTENT) private String readTopic; @InjectExtra(Intents.EXTRA_PM_SENDER) private String sender; @InjectExtra(Intents.EXTRA_PM_SEND_TIME) private String sendTime; @InjectExtra(value = Intents.EXTRA_PM_ID, optional = true) private int pmId = -1; private String pmContent=""; @Inject private NewCC98Service service; private HtmlGenHelper helper = new HtmlGenHelper(); public static Intent createIntent(String content, String sender, String sendTime, int pmId) { Intent intent = new Intents.Builder("pm.VIEW").pmContent(content) .pmSender(sender).pmSendTime(sendTime).pmId(pmId).toIntent(); return intent; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBar actionBar = getSupportActionBar(); actionBar.setTitle("查看短消息"); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setLogo(new BitmapDrawable(getResources(), service.getCurrentUserAvatar())); setViews(); preparePage(pmId); } @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(android.view.Menu.NONE, MENU_REPLY_ID, 1, "回复") .setIcon(R.drawable.sure_btn) .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; case MENU_REPLY_ID: doReply(); return true; default: break; } return super.onOptionsItemSelected(item); } private void doReply() { StringBuilder tmp = new StringBuilder(); tmp.append("[quote][b]以下是引用").append(sender).append("在[i]") .append(sendTime).append("[/i]时发送的短信:[/b]\n") .append(pmContent.replaceAll("(<BR>|<br>)", "\n")) .append("[/quote]"); Intents.Builder builder = new Intents.Builder(this, EditActivity.class); startActivity(builder.requestType(EditActivity.REQUEST_PM) .pmToUser(sender).pmTitle(readTopic).pmContent(tmp.toString()) .toIntent()); } @Override protected void onStop() { super.onStop(); service.cancelRequest(this.getClass()); } /** * */ private void setViews() { WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); webSettings.setAppCacheEnabled(true); webSettings.setJavaScriptCanOpenWindowsAutomatically(true); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.i(TAG, "shouldOverrideUrlLoading:" + url); if (!url.startsWith("http")) { url = service.getDomain() + url; } if (url.endsWith(".jpg") | url.endsWith(".png") | url.endsWith(".bmp")) { startActivity(PhotoViewActivity.createIntent(url)); } else if (UrlUtils.isPostContentLink(url)) { startActivity(UrlUtils.getPostContentIntent(url)); } else { Intent it = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(it); } return true; } }); webView.addJavascriptInterface(this, "PmReply"); webView.setBackgroundColor(Color.parseColor("#f0f0f0")); } private void preparePage(final int pmId) { service.submitGetMsgContent(this.getClass(), pmId, this); } @Override public void onRequestComplete(String result) { pmContent = result; StringBuilder builder = new StringBuilder(1000); HtmlGenHelper.addPostInfo(builder, readTopic, "", sender, "", 1, sendTime, -1); builder.append( "<div class=\"post-content\"><span id=\"ubbcode\">") .append("<div class=\"post-content\"><span id=\"ubbcode\">") .append(pmContent) .append("</span><script>searchubb('ubbcode',1,'tablebody2');</script></div>"); webView.loadDataWithBaseURL(null, helper.PAGE_OPEN + builder.toString() + helper.PAGE_CLOSE, "text/html", "utf-8", null); } @Override public void onRequestError(String msg) { ToastUtils.alert(this, msg); } }