mirror of
https://gitlab.com/oeffi/oeffi.git
synced 2025-07-07 21:48:49 +00:00
OeffiMainActivity: Add generic 'update' button to remote message dialogs.
This commit is contained in:
parent
25eb33c551
commit
ae172df838
3 changed files with 62 additions and 49 deletions
|
@ -328,7 +328,8 @@
|
||||||
<string name="changelog_dialog_title_version">Willkommen zu Öffi Version %s!</string>
|
<string name="changelog_dialog_title_version">Willkommen zu Öffi Version %s!</string>
|
||||||
<string name="changelog_dialog_title">Folgendes ist neu:</string>
|
<string name="changelog_dialog_title">Folgendes ist neu:</string>
|
||||||
<string name="changelog_dialog_button_dismiss">Weiter</string>
|
<string name="changelog_dialog_button_dismiss">Weiter</string>
|
||||||
<string name="alert_hint_neutral">Weiter</string>
|
<string name="alert_message_button_dismiss">Weiter</string>
|
||||||
|
<string name="alert_message_button_update">App-Update</string>
|
||||||
<string name="alert_crash_report_title">Öffi ist letztens abgestürzt</string>
|
<string name="alert_crash_report_title">Öffi ist letztens abgestürzt</string>
|
||||||
<string name="alert_crash_report_new_version">Es gibt eine neue Öffi-Version %s. Du solltest aktualisieren, denn möglicherweise wurde dein Problem schon behoben.</string>
|
<string name="alert_crash_report_new_version">Es gibt eine neue Öffi-Version %s. Du solltest aktualisieren, denn möglicherweise wurde dein Problem schon behoben.</string>
|
||||||
<string name="alert_crash_report_message">Möchtest du einen Fehlerbericht senden, um dabei zu helfen das Problem zu lösen?</string>
|
<string name="alert_crash_report_message">Möchtest du einen Fehlerbericht senden, um dabei zu helfen das Problem zu lösen?</string>
|
||||||
|
|
|
@ -329,7 +329,8 @@
|
||||||
<string name="changelog_dialog_title_version">Welcome to Offi version %s!</string>
|
<string name="changelog_dialog_title_version">Welcome to Offi version %s!</string>
|
||||||
<string name="changelog_dialog_title">Here is what\'s new:</string>
|
<string name="changelog_dialog_title">Here is what\'s new:</string>
|
||||||
<string name="changelog_dialog_button_dismiss">Dismiss</string>
|
<string name="changelog_dialog_button_dismiss">Dismiss</string>
|
||||||
<string name="alert_hint_neutral">Dismiss</string>
|
<string name="alert_message_button_dismiss">Dismiss</string>
|
||||||
|
<string name="alert_message_button_update">Update app</string>
|
||||||
<string name="alert_crash_report_title">Previous crash detected</string>
|
<string name="alert_crash_report_title">Previous crash detected</string>
|
||||||
<string name="alert_crash_report_new_version">There is a new Offi version %s available. You should update, as your problem might already have been fixed.</string>
|
<string name="alert_crash_report_new_version">There is a new Offi version %s available. You should update, as your problem might already have been fixed.</string>
|
||||||
<string name="alert_crash_report_message">Would you like to send a crash report, helping to fix this issue in the future?</string>
|
<string name="alert_crash_report_message">Would you like to send a crash report, helping to fix this issue in the future?</string>
|
||||||
|
|
|
@ -632,6 +632,64 @@ public abstract class OeffiMainActivity extends OeffiActivity {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Dialog messageDialog(final Bundle message) {
|
||||||
|
final DialogBuilder builder = DialogBuilder.get(this);
|
||||||
|
final String action = message.getString("action");
|
||||||
|
if ("info".equals(action))
|
||||||
|
builder.setIcon(R.drawable.ic_info_grey600_24dp);
|
||||||
|
else if ("warning".equals(action))
|
||||||
|
builder.setIcon(R.drawable.ic_warning_amber_24dp);
|
||||||
|
final String title = message.getString("title");
|
||||||
|
if (title != null)
|
||||||
|
builder.setTitle(title);
|
||||||
|
final String body = message.getString("body");
|
||||||
|
builder.setMessage(body);
|
||||||
|
final String positive = message.getString("button-positive");
|
||||||
|
if (positive != null)
|
||||||
|
builder.setPositiveButton(messageButtonText(positive), messageButtonListener(positive));
|
||||||
|
final String neutral = message.getString("button-neutral");
|
||||||
|
if (neutral != null)
|
||||||
|
builder.setNeutralButton(messageButtonText(neutral), messageButtonListener(neutral));
|
||||||
|
final String negative = message.getString("button-negative");
|
||||||
|
if (negative != null)
|
||||||
|
builder.setNegativeButton(messageButtonText(negative), messageButtonListener(negative));
|
||||||
|
else
|
||||||
|
builder.setNegativeButton(R.string.alert_message_button_dismiss, null);
|
||||||
|
|
||||||
|
final Dialog dialog = builder.create();
|
||||||
|
dialog.setCanceledOnTouchOutside(false);
|
||||||
|
return dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String messageButtonText(final String buttonSpec) {
|
||||||
|
if ("dismiss".equals(buttonSpec))
|
||||||
|
return getString(R.string.alert_message_button_dismiss);
|
||||||
|
else if ("update".equals(buttonSpec))
|
||||||
|
return getString(R.string.alert_message_button_update);
|
||||||
|
else
|
||||||
|
return Splitter.on('|').trimResults().limit(2).split(buttonSpec).iterator().next();
|
||||||
|
}
|
||||||
|
|
||||||
|
private MessageOnClickListener messageButtonListener(final String buttonSpec) {
|
||||||
|
if ("dismiss".equals(buttonSpec)) {
|
||||||
|
return null;
|
||||||
|
} else if ("update".equals(buttonSpec)) {
|
||||||
|
final String installerPackageName = getPackageManager().getInstallerPackageName(getPackageName());
|
||||||
|
if ("com.android.vending".equals(installerPackageName))
|
||||||
|
return new MessageOnClickListener("https://play.google.com/store/apps/details?id=" + getPackageName());
|
||||||
|
else if ("org.fdroid.fdroid".equals(installerPackageName)
|
||||||
|
|| "org.fdroid.fdroid.privileged".equals(installerPackageName))
|
||||||
|
return new MessageOnClickListener("https://f-droid.org/de/packages/" + getPackageName() + "/");
|
||||||
|
else
|
||||||
|
// TODO localize
|
||||||
|
return new MessageOnClickListener("https://oeffi.schildbach.de/download.html");
|
||||||
|
} else {
|
||||||
|
final Iterator<String> iterator = Splitter.on('|').trimResults().limit(2).split(buttonSpec).iterator();
|
||||||
|
iterator.next();
|
||||||
|
return new MessageOnClickListener(iterator.next());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class MessageOnClickListener implements DialogInterface.OnClickListener {
|
private class MessageOnClickListener implements DialogInterface.OnClickListener {
|
||||||
private final String link;
|
private final String link;
|
||||||
|
|
||||||
|
@ -647,53 +705,6 @@ public abstract class OeffiMainActivity extends OeffiActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Dialog messageDialog(final Bundle message) {
|
|
||||||
final DialogBuilder builder = DialogBuilder.get(this);
|
|
||||||
final String action = message.getString("action");
|
|
||||||
if ("info".equals(action))
|
|
||||||
builder.setIcon(R.drawable.ic_info_grey600_24dp);
|
|
||||||
else if ("warning".equals(action))
|
|
||||||
builder.setIcon(R.drawable.ic_warning_amber_24dp);
|
|
||||||
final String title = message.getString("title");
|
|
||||||
if (title != null)
|
|
||||||
builder.setTitle(title);
|
|
||||||
final String body = message.getString("body");
|
|
||||||
builder.setMessage(body);
|
|
||||||
final String positive = message.getString("button-positive");
|
|
||||||
if (positive != null) {
|
|
||||||
final Iterator<String> parts = Splitter.on('|').trimResults().limit(2).split(positive).iterator();
|
|
||||||
final String text = parts.next();
|
|
||||||
if ("dismiss".equals(text))
|
|
||||||
builder.setPositiveButton(R.string.alert_hint_neutral, null);
|
|
||||||
else
|
|
||||||
builder.setPositiveButton(text, parts.hasNext() ? new MessageOnClickListener(parts.next()) : null);
|
|
||||||
}
|
|
||||||
final String neutral = message.getString("button-neutral");
|
|
||||||
if (neutral != null) {
|
|
||||||
final Iterator<String> parts = Splitter.on('|').trimResults().limit(2).split(neutral).iterator();
|
|
||||||
final String text = parts.next();
|
|
||||||
if ("dismiss".equals(text))
|
|
||||||
builder.setNeutralButton(R.string.alert_hint_neutral, null);
|
|
||||||
else
|
|
||||||
builder.setNeutralButton(text, parts.hasNext() ? new MessageOnClickListener(parts.next()) : null);
|
|
||||||
}
|
|
||||||
final String negative = message.getString("button-negative");
|
|
||||||
if (negative != null) {
|
|
||||||
final Iterator<String> parts = Splitter.on('|').trimResults().limit(2).split(negative).iterator();
|
|
||||||
final String text = parts.next();
|
|
||||||
if ("dismiss".equals(text))
|
|
||||||
builder.setNegativeButton(R.string.alert_hint_neutral, null);
|
|
||||||
else
|
|
||||||
builder.setNegativeButton(text, parts.hasNext() ? new MessageOnClickListener(parts.next()) : null);
|
|
||||||
} else {
|
|
||||||
builder.setNegativeButton(R.string.alert_hint_neutral, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
final Dialog dialog = builder.create();
|
|
||||||
dialog.setCanceledOnTouchOutside(false);
|
|
||||||
return dialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
private long parseTimeExp(final String exp) {
|
private long parseTimeExp(final String exp) {
|
||||||
if (exp.endsWith("h"))
|
if (exp.endsWith("h"))
|
||||||
return DateUtils.HOUR_IN_MILLIS * Integer.parseInt(exp.substring(0, exp.length() - 1));
|
return DateUtils.HOUR_IN_MILLIS * Integer.parseInt(exp.substring(0, exp.length() - 1));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue