\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
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
\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
}\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