]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/HtmlDisplayActivity.java
Merge pull request #26 from Kteby/master
[Dictionary.git] / src / com / hughes / android / dictionary / HtmlDisplayActivity.java
index 70593563c8638af1cb9dcea0cc4a1cfcf1cd7ea1..dd07c4e7dd975a88b4d11459f433afa2c929b67a 100644 (file)
 \r
 package com.hughes.android.dictionary;\r
 \r
-import android.app.Activity;\r
+import android.content.Context;\r
 import android.content.Intent;\r
 import android.os.Bundle;\r
+import android.support.v7.app.ActionBar;\r
+import android.support.v7.app.ActionBarActivity;\r
+import android.util.Base64;\r
 import android.util.Log;\r
+import android.view.MenuItem;\r
 import android.view.View;\r
 import android.view.View.OnClickListener;\r
 import android.widget.Button;\r
 \r
 import com.hughes.util.StringUtil;\r
 \r
-public final class HtmlDisplayActivity extends Activity {\r
+import java.io.UnsupportedEncodingException;\r
+\r
+public final class HtmlDisplayActivity extends ActionBarActivity {\r
 \r
     static final String LOG = "QuickDic";\r
 \r
@@ -33,27 +39,21 @@ public final class HtmlDisplayActivity extends Activity {
     static final String TEXT_TO_HIGHLIGHT = "textToHighlight";\r
     static final String SHOW_OK_BUTTON = "showOKButton";\r
 \r
-    public static Intent getHelpLaunchIntent() {\r
-        final Intent intent = new Intent();\r
-        intent.setClassName(HtmlDisplayActivity.class.getPackage().getName(),\r
-                HtmlDisplayActivity.class.getName());\r
+    public static Intent getHelpLaunchIntent(Context c) {\r
+        final Intent intent = new Intent(c, HtmlDisplayActivity.class);\r
         intent.putExtra(HTML_RES, R.raw.help);\r
         return intent;\r
     }\r
 \r
-    public static Intent getWhatsNewLaunchIntent() {\r
-        final Intent intent = new Intent();\r
-        intent.setClassName(HtmlDisplayActivity.class.getPackage().getName(),\r
-                HtmlDisplayActivity.class.getName());\r
+    public static Intent getWhatsNewLaunchIntent(Context c) {\r
+        final Intent intent = new Intent(c, HtmlDisplayActivity.class);\r
         intent.putExtra(HTML_RES, R.raw.whats_new);\r
         return intent;\r
     }\r
 \r
-    public static Intent getHtmlIntent(final String html, final String textToHighlight,\r
+    public static Intent getHtmlIntent(Context c, final String html, final String textToHighlight,\r
             final boolean showOkButton) {\r
-        final Intent intent = new Intent();\r
-        intent.setClassName(HtmlDisplayActivity.class.getPackage().getName(),\r
-                HtmlDisplayActivity.class.getName());\r
+        final Intent intent = new Intent(c, HtmlDisplayActivity.class);\r
         intent.putExtra(HTML, html);\r
         intent.putExtra(TEXT_TO_HIGHLIGHT, textToHighlight);\r
         intent.putExtra(SHOW_OK_BUTTON, showOkButton);\r
@@ -67,16 +67,26 @@ public final class HtmlDisplayActivity extends Activity {
 \r
         super.onCreate(savedInstanceState);\r
         setContentView(R.layout.html_display_activity);\r
+        \r
+        ActionBar actionBar = getSupportActionBar();\r
+        actionBar.setDisplayHomeAsUpEnabled(true);\r
 \r
         final int htmlRes = getIntent().getIntExtra(HTML_RES, -1);\r
-        final String html;\r
+        String html;\r
         if (htmlRes != -1) {\r
             html = StringUtil.readToString(getResources().openRawResource(htmlRes));\r
         } else {\r
             html = getIntent().getStringExtra(HTML);\r
         }\r
         final MyWebView webView = (MyWebView) findViewById(R.id.webView);\r
-        webView.loadData(html, "text/html", "utf-8");\r
+        try {\r
+            // No way to get pure UTF-8 data into WebView\r
+            html = Base64.encodeToString(html.getBytes("UTF-8"), Base64.DEFAULT);\r
+        } catch (UnsupportedEncodingException e) {\r
+            throw new RuntimeException(e);\r
+        }\r
+        // Use loadURL to allow specifying a charset\r
+        webView.loadUrl("data:text/html;charset=utf-8;base64," + html);\r
         webView.activity = this;\r
 \r
         final String textToHighlight = getIntent().getStringExtra(TEXT_TO_HIGHLIGHT);\r
@@ -99,4 +109,22 @@ public final class HtmlDisplayActivity extends Activity {
         }\r
     }\r
 \r
+    @Override\r
+    public void onBackPressed() {\r
+        final MyWebView webView = (MyWebView)findViewById(R.id.webView);\r
+        if (webView.canGoBack()) webView.goBack();\r
+        else super.onBackPressed();\r
+    }\r
+\r
+    @Override\r
+    public boolean onOptionsItemSelected(MenuItem item) {\r
+        // Explicitly handle the up button press so\r
+        // we return to the dictionary.\r
+        if (item.getItemId() == android.R.id.home)\r
+        {\r
+            finish();\r
+            return true;\r
+        }\r
+        return super.onOptionsItemSelected(item);\r
+    }\r
 }\r