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 Account selectedAccount = null;
protected List<Account> accountList = new ArrayList<Account>(); protected final List<Account> accountList = new ArrayList<>();
protected ListView accountListView; protected ListView accountListView;
protected AccountAdapter mAccountAdapter; protected AccountAdapter mAccountAdapter;
@Override @Override
public void onAccountUpdate() { public void onAccountUpdate() {
synchronized (this.accountList) {
accountList.clear(); accountList.clear();
accountList.addAll(xmppConnectionService.getAccounts()); accountList.addAll(xmppConnectionService.getAccounts());
}
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
invalidateOptionsMenu();
mAccountAdapter.notifyDataSetChanged(); mAccountAdapter.notifyDataSetChanged();
} }
}); });
@ -91,6 +95,14 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.manageaccounts, 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; return true;
} }
@ -124,6 +136,12 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
startActivity(new Intent(getApplicationContext(), startActivity(new Intent(getApplicationContext(),
EditAccountActivity.class)); EditAccountActivity.class));
break; break;
case R.id.action_disable_all:
disableAllAccounts();
break;
case R.id.action_enable_all:
enableAllAccounts();
break;
default: default:
break; break;
} }
@ -158,6 +176,56 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
startActivity(intent); 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) { private void disableAccount(Account account) {
account.setOption(Account.OPTION_DISABLED, true); account.setOption(Account.OPTION_DISABLED, true);
xmppConnectionService.updateAccount(account); xmppConnectionService.updateAccount(account);

View file

@ -6,6 +6,12 @@
android:icon="@drawable/ic_action_add_person" android:icon="@drawable/ic_action_add_person"
android:showAsAction="always" android:showAsAction="always"
android:title="@string/action_add_account"/> 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 <item
android:id="@+id/action_settings" android:id="@+id/action_settings"
android:orderInCategory="100" android:orderInCategory="100"

View file

@ -403,4 +403,6 @@
<string name="current_password">Current password</string> <string name="current_password">Current password</string>
<string name="new_password">New password</string> <string name="new_password">New password</string>
<string name="password_should_not_be_empty">Password should not be empty</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> </resources>