mirror of
https://gitlab.com/oeffi/oeffi.git
synced 2025-07-07 06:08:51 +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">Folgendes ist neu:</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_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>
|
||||
|
|
|
@ -329,7 +329,8 @@
|
|||
<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_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_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>
|
||||
|
|
|
@ -632,6 +632,64 @@ public abstract class OeffiMainActivity extends OeffiActivity {
|
|||
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 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) {
|
||||
if (exp.endsWith("h"))
|
||||
return DateUtils.HOUR_IN_MILLIS * Integer.parseInt(exp.substring(0, exp.length() - 1));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue