Bug 779741 - Move character encoding menu logic to BrowserApp. r=sriram

This commit is contained in:
Margaret Leibovic 2012-08-27 17:50:32 -07:00
parent 989331d766
commit 1ea6a14083
2 changed files with 49 additions and 47 deletions

View File

@ -15,6 +15,8 @@ import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.Intent; import android.content.Intent;
import android.database.Cursor; import android.database.Cursor;
@ -199,6 +201,8 @@ abstract public class BrowserApp extends GeckoApp
mBrowserToolbar.setTitle(savedInstanceState.getString(SAVED_STATE_TITLE)); mBrowserToolbar.setTitle(savedInstanceState.getString(SAVED_STATE_TITLE));
} }
registerEventListener("CharEncoding:Data");
registerEventListener("CharEncoding:State");
registerEventListener("Feedback:LastUrl"); registerEventListener("Feedback:LastUrl");
registerEventListener("Feedback:OpenPlayStore"); registerEventListener("Feedback:OpenPlayStore");
registerEventListener("Feedback:MaybeLater"); registerEventListener("Feedback:MaybeLater");
@ -210,6 +214,8 @@ abstract public class BrowserApp extends GeckoApp
if (mAboutHomeContent != null) if (mAboutHomeContent != null)
mAboutHomeContent.onDestroy(); mAboutHomeContent.onDestroy();
unregisterEventListener("CharEncoding:Data");
unregisterEventListener("CharEncoding:State");
unregisterEventListener("Feedback:LastUrl"); unregisterEventListener("Feedback:LastUrl");
unregisterEventListener("Feedback:OpenPlayStore"); unregisterEventListener("Feedback:OpenPlayStore");
unregisterEventListener("Feedback:MaybeLater"); unregisterEventListener("Feedback:MaybeLater");
@ -356,6 +362,49 @@ abstract public class BrowserApp extends GeckoApp
removeAddonMenuItem(id); removeAddonMenuItem(id);
} }
}); });
} else if (event.equals("CharEncoding:Data")) {
final JSONArray charsets = message.getJSONArray("charsets");
int selected = message.getInt("selected");
final int len = charsets.length();
final String[] titleArray = new String[len];
for (int i = 0; i < len; i++) {
JSONObject charset = charsets.getJSONObject(i);
titleArray[i] = charset.getString("title");
}
final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
dialogBuilder.setSingleChoiceItems(titleArray, selected, new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
try {
JSONObject charset = charsets.getJSONObject(which);
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("CharEncoding:Set", charset.getString("code")));
dialog.dismiss();
} catch (JSONException e) {
Log.e(LOGTAG, "error parsing json", e);
}
}
});
dialogBuilder.setNegativeButton(R.string.button_cancel, new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
mMainHandler.post(new Runnable() {
public void run() {
dialogBuilder.show();
}
});
} else if (event.equals("CharEncoding:State")) {
final boolean visible = message.getString("visible").equals("true");
GeckoPreferences.setCharEncodingState(visible);
final Menu menu = mMenu;
mMainHandler.post(new Runnable() {
public void run() {
if (menu != null)
menu.findItem(R.id.char_encoding).setVisible(visible);
}
});
} else if (event.equals("Feedback:OpenPlayStore")) { } else if (event.equals("Feedback:OpenPlayStore")) {
Intent intent = new Intent(Intent.ACTION_VIEW); Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=" + getPackageName())); intent.setData(Uri.parse("market://details?id=" + getPackageName()));

View File

@ -917,49 +917,6 @@ abstract public class GeckoApp
String host = message.getString("host"); String host = message.getString("host");
JSONArray permissions = message.getJSONArray("permissions"); JSONArray permissions = message.getJSONArray("permissions");
showSiteSettingsDialog(host, permissions); showSiteSettingsDialog(host, permissions);
} else if (event.equals("CharEncoding:Data")) {
final JSONArray charsets = message.getJSONArray("charsets");
int selected = message.getInt("selected");
final int len = charsets.length();
final String[] titleArray = new String[len];
for (int i = 0; i < len; i++) {
JSONObject charset = charsets.getJSONObject(i);
titleArray[i] = charset.getString("title");
}
final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
dialogBuilder.setSingleChoiceItems(titleArray, selected, new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
try {
JSONObject charset = charsets.getJSONObject(which);
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("CharEncoding:Set", charset.getString("code")));
dialog.dismiss();
} catch (JSONException e) {
Log.e(LOGTAG, "error parsing json", e);
}
}
});
dialogBuilder.setNegativeButton(R.string.button_cancel, new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
mMainHandler.post(new Runnable() {
public void run() {
dialogBuilder.show();
}
});
} else if (event.equals("CharEncoding:State")) {
final boolean visible = message.getString("visible").equals("true");
GeckoPreferences.setCharEncodingState(visible);
final Menu menu = mMenu;
mMainHandler.post(new Runnable() {
public void run() {
if (menu != null)
menu.findItem(R.id.char_encoding).setVisible(visible);
}
});
} else if (event.equals("Update:Restart")) { } else if (event.equals("Update:Restart")) {
doRestart("org.mozilla.gecko.restart_update"); doRestart("org.mozilla.gecko.restart_update");
} else if (event.equals("Tab:ViewportMetadata")) { } else if (event.equals("Tab:ViewportMetadata")) {
@ -1636,8 +1593,6 @@ abstract public class GeckoApp
registerEventListener("ToggleChrome:Show"); registerEventListener("ToggleChrome:Show");
registerEventListener("ToggleChrome:Focus"); registerEventListener("ToggleChrome:Focus");
registerEventListener("Permissions:Data"); registerEventListener("Permissions:Data");
registerEventListener("CharEncoding:Data");
registerEventListener("CharEncoding:State");
registerEventListener("Update:Restart"); registerEventListener("Update:Restart");
registerEventListener("Tab:HasTouchListener"); registerEventListener("Tab:HasTouchListener");
registerEventListener("Tab:ViewportMetadata"); registerEventListener("Tab:ViewportMetadata");
@ -2078,8 +2033,6 @@ abstract public class GeckoApp
unregisterEventListener("ToggleChrome:Show"); unregisterEventListener("ToggleChrome:Show");
unregisterEventListener("ToggleChrome:Focus"); unregisterEventListener("ToggleChrome:Focus");
unregisterEventListener("Permissions:Data"); unregisterEventListener("Permissions:Data");
unregisterEventListener("CharEncoding:Data");
unregisterEventListener("CharEncoding:State");
unregisterEventListener("Update:Restart"); unregisterEventListener("Update:Restart");
unregisterEventListener("Tab:HasTouchListener"); unregisterEventListener("Tab:HasTouchListener");
unregisterEventListener("Tab:ViewportMetadata"); unregisterEventListener("Tab:ViewportMetadata");