disable / enable all accounts

This commit is contained in:
Daniel Gultsch 2015-01-03 13:36:48 +01:00
parent 521c289db1
commit 960b7343d3
3 changed files with 103 additions and 27 deletions

View File

@ -26,17 +26,21 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
protected Account selectedAccount = null;
protected List<Account> accountList = new ArrayList<Account>();
protected final List<Account> accountList = new ArrayList<>();
protected ListView accountListView;
protected AccountAdapter mAccountAdapter;
@Override
public void onAccountUpdate() {
synchronized (this.accountList) {
accountList.clear();
accountList.addAll(xmppConnectionService.getAccounts());
}
runOnUiThread(new Runnable() {
@Override
public void run() {
invalidateOptionsMenu();
mAccountAdapter.notifyDataSetChanged();
}
});
@ -91,6 +95,14 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.manageaccounts, menu);
MenuItem enableAll = menu.findItem(R.id.action_enable_all);
if (!accountsLeftToEnable()) {
enableAll.setVisible(false);
}
MenuItem disableAll = menu.findItem(R.id.action_disable_all);
if (!accountsLeftToDisable()) {
disableAll.setVisible(false);
}
return true;
}
@ -124,6 +136,12 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
startActivity(new Intent(getApplicationContext(),
EditAccountActivity.class));
break;
case R.id.action_disable_all:
disableAllAccounts();
break;
case R.id.action_enable_all:
enableAllAccounts();
break;
default:
break;
}
@ -158,6 +176,56 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
startActivity(intent);
}
private void disableAllAccounts() {
List<Account> list = new ArrayList<>();
synchronized (this.accountList) {
for (Account account : this.accountList) {
if (!account.isOptionSet(Account.OPTION_DISABLED)) {
list.add(account);
}
}
}
for(Account account : list) {
disableAccount(account);
}
}
private boolean accountsLeftToDisable() {
synchronized (this.accountList) {
for (Account account : this.accountList) {
if (!account.isOptionSet(Account.OPTION_DISABLED)) {
return true;
}
}
return false;
}
}
private boolean accountsLeftToEnable() {
synchronized (this.accountList) {
for (Account account : this.accountList) {
if (account.isOptionSet(Account.OPTION_DISABLED)) {
return true;
}
}
return false;
}
}
private void enableAllAccounts() {
List<Account> list = new ArrayList<>();
synchronized (this.accountList) {
for (Account account : this.accountList) {
if (account.isOptionSet(Account.OPTION_DISABLED)) {
list.add(account);
}
}
}
for(Account account : list) {
enableAccount(account);
}
}
private void disableAccount(Account account) {
account.setOption(Account.OPTION_DISABLED, true);
xmppConnectionService.updateAccount(account);

View File

@ -1,11 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_add_account"
android:icon="@drawable/ic_action_add_person"
android:showAsAction="always"
android:title="@string/action_add_account"/>
<item
android:id="@+id/action_enable_all"
android:title="@string/enable_all_accounts"/>
<item
android:id="@+id/action_disable_all"
android:title="@string/disable_all_accounts"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"

View File

@ -403,4 +403,6 @@
<string name="current_password">Current password</string>
<string name="new_password">New password</string>
<string name="password_should_not_be_empty">Password should not be empty</string>
<string name="enable_all_accounts">Enable all accounts</string>
<string name="disable_all_accounts">Disable all accounts</string>
</resources>