added actions to error notification

This commit is contained in:
iNPUTmice 2015-02-10 17:13:34 +01:00
parent 6c8b82dd66
commit 44ee746681
14 changed files with 53 additions and 1 deletions

View file

@ -41,6 +41,7 @@ import eu.siacs.conversations.ui.ConversationActivity;
import eu.siacs.conversations.ui.ManageAccountActivity; import eu.siacs.conversations.ui.ManageAccountActivity;
import eu.siacs.conversations.ui.TimePreference; import eu.siacs.conversations.ui.TimePreference;
import eu.siacs.conversations.utils.UIHelper; import eu.siacs.conversations.utils.UIHelper;
import eu.siacs.conversations.xmpp.XmppConnection;
public class NotificationService { public class NotificationService {
@ -395,7 +396,20 @@ public class NotificationService {
final Intent intent = new Intent(mXmppConnectionService, final Intent intent = new Intent(mXmppConnectionService,
XmppConnectionService.class); XmppConnectionService.class);
intent.setAction(XmppConnectionService.ACTION_DISABLE_FOREGROUND); intent.setAction(XmppConnectionService.ACTION_DISABLE_FOREGROUND);
return PendingIntent.getService(mXmppConnectionService, 0, intent, 0); return PendingIntent.getService(mXmppConnectionService, 34, intent, 0);
}
private PendingIntent createTryAgainIntent() {
final Intent intent = new Intent(mXmppConnectionService, XmppConnectionService.class);
intent.setAction(XmppConnectionService.ACTION_TRY_AGAIN);
return PendingIntent.getService(mXmppConnectionService, 45, intent, 0);
}
private PendingIntent createDisableAccountIntent(final Account account) {
final Intent intent = new Intent(mXmppConnectionService,XmppConnectionService.class);
intent.setAction(XmppConnectionService.ACTION_DISABLE_ACCOUNT);
intent.putExtra("account",account.getJid().toBareJid().toString());
return PendingIntent.getService(mXmppConnectionService,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
} }
private boolean wasHighlightedOrPrivate(final Message message) { private boolean wasHighlightedOrPrivate(final Message message) {
@ -492,6 +506,14 @@ public class NotificationService {
mBuilder.setContentTitle(mXmppConnectionService.getString(R.string.problem_connecting_to_accounts)); mBuilder.setContentTitle(mXmppConnectionService.getString(R.string.problem_connecting_to_accounts));
mBuilder.setContentText(mXmppConnectionService.getString(R.string.touch_to_fix)); mBuilder.setContentText(mXmppConnectionService.getString(R.string.touch_to_fix));
} }
mBuilder.addAction(R.drawable.ic_autorenew_white_24dp,
mXmppConnectionService.getString(R.string.try_again),
createTryAgainIntent());
if (errors.size() == 1) {
mBuilder.addAction(R.drawable.ic_block_white_24dp,
mXmppConnectionService.getString(R.string.disable_account),
createDisableAccountIntent(errors.get(0)));
}
mBuilder.setOngoing(true); mBuilder.setOngoing(true);
//mBuilder.setLights(0xffffffff, 2000, 4000); //mBuilder.setLights(0xffffffff, 2000, 4000);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

View file

@ -102,6 +102,8 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
public static final String ACTION_CLEAR_NOTIFICATION = "clear_notification"; public static final String ACTION_CLEAR_NOTIFICATION = "clear_notification";
public static final String ACTION_DISABLE_FOREGROUND = "disable_foreground"; public static final String ACTION_DISABLE_FOREGROUND = "disable_foreground";
private static final String ACTION_MERGE_PHONE_CONTACTS = "merge_phone_contacts"; private static final String ACTION_MERGE_PHONE_CONTACTS = "merge_phone_contacts";
public static final String ACTION_TRY_AGAIN = "try_again";
public static final String ACTION_DISABLE_ACCOUNT = "disable_account";
private ContentObserver contactObserver = new ContentObserver(null) { private ContentObserver contactObserver = new ContentObserver(null) {
@Override @Override
public void onChange(boolean selfChange) { public void onChange(boolean selfChange) {
@ -398,6 +400,28 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
getPreferences().edit().putBoolean("keep_foreground_service",false).commit(); getPreferences().edit().putBoolean("keep_foreground_service",false).commit();
toggleForegroundService(); toggleForegroundService();
break; break;
case ACTION_TRY_AGAIN:
for(Account account : accounts) {
if (account.hasErrorStatus()) {
final XmppConnection connection = account.getXmppConnection();
if (connection != null) {
connection.resetAttemptCount();
}
}
}
break;
case ACTION_DISABLE_ACCOUNT:
try {
String jid = intent.getStringExtra("account");
Account account = jid == null ? null : findAccountByJid(Jid.fromString(jid));
if (account != null) {
account.setOption(Account.OPTION_DISABLED,true);
updateAccount(account);
}
} catch (final InvalidJidException ignored) {
break;
}
break;
} }
} }
this.wakeLock.acquire(); this.wakeLock.acquire();

View file

@ -1028,6 +1028,11 @@ public class XmppConnection implements Runnable {
this.sendPacket(new InactivePacket()); this.sendPacket(new InactivePacket());
} }
public void resetAttemptCount() {
this.attempt = 0;
this.lastConnect = 0;
}
public class Features { public class Features {
XmppConnection connection; XmppConnection connection;
private boolean carbonsEnabled = false; private boolean carbonsEnabled = false;

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 869 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -444,4 +444,5 @@
<string name="sending_x_file">Sending %s</string> <string name="sending_x_file">Sending %s</string>
<string name="offering_x_file">Offering %s</string> <string name="offering_x_file">Offering %s</string>
<string name="hide_offline">Hide offline</string> <string name="hide_offline">Hide offline</string>
<string name="disable_account">Disable Account</string>
</resources> </resources>