Support versioned important notice

This change must be checked in together with If38a754d00.

Bug: 10587358
Change-Id: I91580f9468bc5ee7ed1694d7852a60dc6793dac0
main
Tadashi G. Takaoka 2014-02-20 15:25:07 +09:00
parent 1b3a142cac
commit fe39d576dc
3 changed files with 38 additions and 22 deletions

View File

@ -20,11 +20,14 @@
<resources> <resources>
<integer name="config_important_notice_version">0</integer> <integer name="config_important_notice_version">0</integer>
<!-- TODO: Make title and contents resource to string array indexed by version. --> <!-- The array of the text of the important notices displayed on the suggestion strip. -->
<!-- The text of the important notice displayed on the suggestion strip. --> <string-array name="important_notice_title_array">
<string name="important_notice_title"></string> <!-- empty -->
<!-- The contents of the important notice. --> </string-array>
<string name="important_notice_contents"></string> <!-- The array of the contents of the important notices. -->
<string-array name="important_notice_contents_array">
<!-- empty -->
</string-array>
<!-- Description for option enabling the use by the keyboards of sent/received messages, e-mail and typing history to improve suggestion accuracy [CHAR LIMIT=68] --> <!-- Description for option enabling the use by the keyboards of sent/received messages, e-mail and typing history to improve suggestion accuracy [CHAR LIMIT=68] -->
<string name="use_personalized_dicts_summary">Learn from your communications and typed data to improve suggestions</string> <string name="use_personalized_dicts_summary">Learn from your communications and typed data to improve suggestions</string>
</resources> </resources>

View File

@ -1190,15 +1190,28 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK); new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK);
builder.setMessage(ImportantNoticeUtils.getNextImportantNoticeContents(context)); builder.setMessage(ImportantNoticeUtils.getNextImportantNoticeContents(context));
builder.setPositiveButton(android.R.string.ok, null /* listener */); builder.setPositiveButton(android.R.string.ok, null /* listener */);
final int nextVersion = ImportantNoticeUtils.getNextImportantNoticeVersion(context);
final OnClickListener onClickListener = new OnClickListener() { final OnClickListener onClickListener = new OnClickListener() {
@Override @Override
public void onClick(final DialogInterface dialog, final int position) { public void onClick(final DialogInterface dialog, final int position) {
if (position == DialogInterface.BUTTON_NEGATIVE) { switch (nextVersion) {
launchSettings(); case ImportantNoticeUtils.VERSION_TO_ENABLE_PERSONALIZED_SUGGESTIONS:
if (position == DialogInterface.BUTTON_NEGATIVE) {
launchSettings();
}
break;
default:
break;
} }
} }
}; };
builder.setNegativeButton(R.string.go_to_settings, onClickListener); switch (nextVersion) {
case ImportantNoticeUtils.VERSION_TO_ENABLE_PERSONALIZED_SUGGESTIONS:
builder.setNegativeButton(R.string.go_to_settings, onClickListener);
break;
default:
break;
}
final AlertDialog importantNoticeDialog = builder.create(); final AlertDialog importantNoticeDialog = builder.create();
importantNoticeDialog.setOnShowListener(new OnShowListener() { importantNoticeDialog.setOnShowListener(new OnShowListener() {
@Override @Override

View File

@ -60,7 +60,7 @@ public final class ImportantNoticeUtils {
return context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); return context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
} }
public static int getCurrentImportantNoticeVersion(final Context context) { private static int getCurrentImportantNoticeVersion(final Context context) {
return context.getResources().getInteger(R.integer.config_important_notice_version); return context.getResources().getInteger(R.integer.config_important_notice_version);
} }
@ -68,7 +68,7 @@ public final class ImportantNoticeUtils {
return getImportantNoticePreferences(context).getInt(KEY_IMPORTANT_NOTICE_VERSION, 0); return getImportantNoticePreferences(context).getInt(KEY_IMPORTANT_NOTICE_VERSION, 0);
} }
private static int getNextImportantNoticeVersion(final Context context) { public static int getNextImportantNoticeVersion(final Context context) {
return getLastImportantNoticeVersion(context) + 1; return getLastImportantNoticeVersion(context) + 1;
} }
@ -92,23 +92,23 @@ public final class ImportantNoticeUtils {
.apply(); .apply();
} }
// TODO: Make title resource to string array indexed by version.
public static String getNextImportantNoticeTitle(final Context context) { public static String getNextImportantNoticeTitle(final Context context) {
switch (getNextImportantNoticeVersion(context)) { final int nextVersion = getCurrentImportantNoticeVersion(context);
case VERSION_TO_ENABLE_PERSONALIZED_SUGGESTIONS: final String[] importantNoticeTitleArray = context.getResources().getStringArray(
return context.getString(R.string.important_notice_title); R.array.important_notice_title_array);
default: if (nextVersion > 0 && nextVersion < importantNoticeTitleArray.length) {
return null; return importantNoticeTitleArray[nextVersion];
} }
return null;
} }
// TODO: Make content resource to string array indexed by version.
public static String getNextImportantNoticeContents(final Context context) { public static String getNextImportantNoticeContents(final Context context) {
switch (getNextImportantNoticeVersion(context)) { final int nextVersion = getNextImportantNoticeVersion(context);
case VERSION_TO_ENABLE_PERSONALIZED_SUGGESTIONS: final String[] importantNoticeContentsArray = context.getResources().getStringArray(
return context.getString(R.string.important_notice_contents); R.array.important_notice_contents_array);
default: if (nextVersion > 0 && nextVersion < importantNoticeContentsArray.length) {
return null; return importantNoticeContentsArray[nextVersion];
} }
return null;
} }
} }