Add toggle account-state switch

Add a switch to AccountAdapter that allows self-contained enabling/disabling of
accounts without the need to bring up the context-menu
This commit is contained in:
BrianBlade 2015-04-01 12:14:05 +02:00
parent 7eabdfd80f
commit e64049c4fc
3 changed files with 45 additions and 16 deletions

View file

@ -168,6 +168,14 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
}
}
public void onClickTglAccountState(Account account) {
if (account.isOptionSet(Account.OPTION_DISABLED)) {
enableAccount(account);
} else {
disableAccount(account);
}
}
private void publishAvatar(Account account) {
Intent intent = new Intent(getApplicationContext(),
PublishProfilePictureActivity.class);

View file

@ -5,6 +5,7 @@ import java.util.List;
import eu.siacs.conversations.R;
import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.ui.XmppActivity;
import eu.siacs.conversations.ui.ManageAccountActivity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
@ -12,6 +13,7 @@ import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Switch;
public class AccountAdapter extends ArrayAdapter<Account> {
@ -24,7 +26,7 @@ public class AccountAdapter extends ArrayAdapter<Account> {
@Override
public View getView(int position, View view, ViewGroup parent) {
Account account = getItem(position);
final Account account = getItem(position);
if (view == null) {
LayoutInflater inflater = (LayoutInflater) getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@ -34,21 +36,32 @@ public class AccountAdapter extends ArrayAdapter<Account> {
jid.setText(account.getJid().toBareJid().toString());
TextView statusView = (TextView) view.findViewById(R.id.account_status);
ImageView imageView = (ImageView) view.findViewById(R.id.account_image);
imageView.setImageBitmap(activity.avatarService().get(account,
activity.getPixel(48)));
statusView.setText(getContext().getString(account.getStatus().getReadableId()));
switch (account.getStatus()) {
case ONLINE:
statusView.setTextColor(activity.getOnlineColor());
break;
case DISABLED:
case CONNECTING:
statusView.setTextColor(activity.getSecondaryTextColor());
break;
default:
statusView.setTextColor(activity.getWarningTextColor());
break;
}
imageView.setImageBitmap(activity.avatarService().get(account, activity.getPixel(48)));
statusView.setText(getContext().getString(account.getStatus().getReadableId()));
switch (account.getStatus()) {
case ONLINE:
statusView.setTextColor(activity.getOnlineColor());
break;
case DISABLED:
case CONNECTING:
statusView.setTextColor(activity.getSecondaryTextColor());
break;
default:
statusView.setTextColor(activity.getWarningTextColor());
break;
}
final Switch tglAccountState = (Switch) view.findViewById(R.id.tgl_account_status);
boolean isDisabled = (account.getStatus() == Account.State.DISABLED) ? true : false;
tglAccountState.setChecked(!isDisabled);
tglAccountState.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (activity instanceof ManageAccountActivity) {
((ManageAccountActivity) activity).onClickTglAccountState(account);
tglAccountState.toggle();
}
}
});
return view;
}
}

View file

@ -41,4 +41,12 @@
android:textStyle="bold" />
</LinearLayout>
<Switch
android:id="@+id/tgl_account_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:focusable="false"/>
</RelativeLayout>