package com.mailssenger.activity; import java.util.List; import java.util.Map; import org.json.JSONArray; import org.json.JSONObject; import com.google.gson.Gson; import com.mailssenger.*; import com.mailssenger.mail.MailAccount; import com.mailssenger.model.*; import com.mailssenger.service.MainService; import com.mailssenger.util.UIHelper; import com.umeng.analytics.MobclickAgent; import android.os.Bundle; import android.text.Html; import android.text.Spannable; import android.util.DisplayMetrics; import android.view.MenuItem; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebSettings.ZoomDensity; import android.webkit.WebView; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.mailssenger.R; /** * @author Han * */ public class MailContentActivity extends BaseActivity implements MainServiceCallback { private MailContentActivity context = null; private Gson mGson; private TextView titleTextView = null; private TextView fromTextView = null; private TextView timeTextView = null; private ImageButton likeImageButton = null; private TextView contentTextView = null; private WebView contentWebView =null; String messageId = null; String subject = null; String time = null; String from = null; String content = null; String folder = null; int uid = 0; String flags = null; protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.info_content); context = this; mGson = CommonApplication.getInstance().getGson(); //bundel ,get all the data from the MailListActivity Bundle bundle = getIntent().getExtras(); if (bundle != null) { MailModel mailModel = mGson.fromJson(bundle.getString("mail"), MailModel.class); messageId = mailModel.getMessageId(); List<MailModel> mailist = CommonApplication.dbOperation.getMailByMessageIDFromLocal(messageId); if(mailist.size()>0){ content = mailist.get(0).getContent(); from = mailist.get(0).getFromWho(); time = mailist.get(0).getSendDate(); subject = mailist.get(0).getSubject(); String toWho =mailist.get(0).getToWho(); String ccWho = mailist.get(0).getCcWho(); String bccWho = mailist.get(0).getBccWho(); flags = mailist.get(0).getFlags(); folder = mailist.get(0).getFolder(); uid = mailist.get(0).getUid(); } // System.out.println("::getIntentData::"); // System.out.println("uid is " + uid); // System.out.println("content is " + content); } else { System.out.println("bundle is null"); } // set up all the view setupView(); } @SuppressWarnings("deprecation") public void onResume() { super.onResume(); MobclickAgent.onResume(this); } @SuppressWarnings("deprecation") public void onPause() { super.onPause(); MobclickAgent.onPause(this); } /** * setuo view */ private void setupView() { //initialize the view titleTextView = (TextView) context .findViewById(R.id.info_content_title); timeTextView = (TextView) context.findViewById(R.id.info_content_time); fromTextView = (TextView) context.findViewById(R.id.info_content_from); likeImageButton = (ImageButton) context .findViewById(R.id.info_content_like); contentTextView = (TextView) context .findViewById(R.id.info_content_main_text); contentWebView = (WebView) findViewById(R.id.info_content_web_view); if (subject != null) { titleTextView.setText(subject); } if (time != null) { timeTextView.setText(""+time); } if (from != null) { fromTextView.setText(from); } showContent(); } /* * (non-Javadoc) * * @see fm.app.logic.LogicObject#refresh(java.lang.Object[]) */ @Override public void refresh(Object... args) { // TODO Auto-generated method stub Toast.makeText(context, "I am in refresh", Toast.LENGTH_LONG).show(); if (args[0].equals("getOneMailContent")) { try { //get content from server success //show it content = (String) args[1]; showContent(); //mark the mail as read Task task = new Task(context,10); task.setMethod(MailAccount.class, "markMailAsSeenToServer", folder,uid); MainService.newTask(task); } catch (Exception e) { e.printStackTrace(); Toast.makeText(context, "Content can not be fetched!", Toast.LENGTH_SHORT).show(); } } if(args[0].equals("markMailAsSeenToServer")){ if ((String)args[1]=="yes"){ Toast.makeText(this, "mail mark seen succeed!", Toast.LENGTH_LONG).show(); }else{ Toast.makeText(this, "mail mark seen failed!", Toast.LENGTH_LONG).show(); } } } /* * show the mail content */ public void showContent(){ // if content is null then try to download it from server if (content == null ||content.equals("") ) { contentTextView.setText("content is not download"); Task task = new Task(context,10); task.setMethod(MailAccount.class, "getOneMailContent",folder,uid); MainService.newTask(task); Toast.makeText(context, "Trying to download content now ,please wait!", Toast.LENGTH_SHORT).show(); }else { //content already download,show it //if content contain html show it with web view if(content.contains("</")){ contentTextView.setVisibility(View.GONE); contentWebView.loadDataWithBaseURL(null, content, "text/html", "utf-8", null); contentWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); contentWebView.setHorizontalScrollBarEnabled(false); contentWebView.getSettings().setSupportZoom(true); contentWebView.getSettings().setBuiltInZoomControls(true); // contentWebView.setInitialScale(70); contentWebView.setHorizontalScrollbarOverlay(true); DisplayMetrics dm = getResources().getDisplayMetrics(); int scale = dm.densityDpi; if (scale == 240) { // contentWebView.getSettings().setDefaultZoom(ZoomDensity.FAR); } else if (scale == 160) { contentWebView.getSettings().setDefaultZoom(ZoomDensity.MEDIUM); } else { contentWebView.getSettings().setDefaultZoom(ZoomDensity.CLOSE); } contentWebView.setWebChromeClient(new WebChromeClient()); contentWebView.setVisibility(View.VISIBLE); }else{ //show as plain text contentTextView.setText(content); } //mark the mail as read Task task = new Task(context,10); task.setMethod(MailAccount.class, "markMailAsSeenToServer", folder,uid); MainService.newTask(task); } } @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch (item.getItemId()) { case android.R.id.home: this.finish(); break; } return super.onOptionsItemSelected(item); } }