added actions to error notification
@ -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) {
|
||||||
|
@ -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();
|
||||||
|
@ -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;
|
||||||
|
BIN
src/main/res/drawable-hdpi/ic_autorenew_white_24dp.png
Normal file
After Width: | Height: | Size: 489 B |
BIN
src/main/res/drawable-hdpi/ic_block_white_24dp.png
Normal file
After Width: | Height: | Size: 606 B |
BIN
src/main/res/drawable-mdpi/ic_autorenew_white_24dp.png
Normal file
After Width: | Height: | Size: 353 B |
BIN
src/main/res/drawable-mdpi/ic_block_white_24dp.png
Normal file
After Width: | Height: | Size: 428 B |
BIN
src/main/res/drawable-xhdpi/ic_autorenew_white_24dp.png
Normal file
After Width: | Height: | Size: 604 B |
BIN
src/main/res/drawable-xhdpi/ic_block_white_24dp.png
Normal file
After Width: | Height: | Size: 796 B |
BIN
src/main/res/drawable-xxhdpi/ic_autorenew_white_24dp.png
Normal file
After Width: | Height: | Size: 869 B |
BIN
src/main/res/drawable-xxhdpi/ic_block_white_24dp.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
src/main/res/drawable-xxxhdpi/ic_autorenew_white_24dp.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
src/main/res/drawable-xxxhdpi/ic_block_white_24dp.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
@ -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>
|
||||||
|