ShareViaAccountActivity.java

  1package eu.siacs.conversations.ui;
  2
  3import android.app.ActionBar;
  4import android.content.Intent;
  5import android.os.Bundle;
  6import android.view.View;
  7import android.widget.AdapterView;
  8import android.widget.AdapterView.OnItemClickListener;
  9import android.widget.ListView;
 10import android.widget.Toast;
 11
 12import java.util.ArrayList;
 13import java.util.List;
 14
 15import eu.siacs.conversations.R;
 16import eu.siacs.conversations.entities.Account;
 17import eu.siacs.conversations.entities.Conversation;
 18import eu.siacs.conversations.ui.adapter.AccountAdapter;
 19import eu.siacs.conversations.xmpp.jid.InvalidJidException;
 20import eu.siacs.conversations.xmpp.jid.Jid;
 21
 22public class ShareViaAccountActivity extends XmppActivity {
 23	public static final String EXTRA_CONTACT = "contact";
 24	public static final String EXTRA_BODY = "body";
 25
 26	protected final List<Account> accountList = new ArrayList<>();
 27	protected ListView accountListView;
 28	protected AccountAdapter mAccountAdapter;
 29
 30	@Override
 31	protected void refreshUiReal() {
 32		synchronized (this.accountList) {
 33			accountList.clear();
 34			accountList.addAll(xmppConnectionService.getAccounts());
 35		}
 36		ActionBar actionBar = getActionBar();
 37		if (actionBar != null) {
 38			actionBar.setHomeButtonEnabled(this.accountList.size() > 0);
 39			actionBar.setDisplayHomeAsUpEnabled(this.accountList.size() > 0);
 40		}
 41		mAccountAdapter.notifyDataSetChanged();
 42	}
 43
 44	@Override
 45	protected void onCreate(Bundle savedInstanceState) {
 46		super.onCreate(savedInstanceState);
 47
 48		setContentView(R.layout.manage_accounts);
 49
 50		accountListView = (ListView) findViewById(R.id.account_list);
 51		this.mAccountAdapter = new AccountAdapter(this, accountList, false);
 52		accountListView.setAdapter(this.mAccountAdapter);
 53		accountListView.setOnItemClickListener(new OnItemClickListener() {
 54
 55			@Override
 56			public void onItemClick(AdapterView<?> arg0, View view,
 57									int position, long arg3) {
 58				final Account account = accountList.get(position);
 59				final String body = getIntent().getStringExtra(EXTRA_BODY);
 60
 61				try {
 62					final Jid contact = Jid.fromString(getIntent().getStringExtra(EXTRA_CONTACT));
 63					final Conversation conversation = xmppConnectionService.findOrCreateConversation(
 64							account, contact, false, false);
 65					switchToConversation(conversation, body, false);
 66				} catch (InvalidJidException e) {
 67					// ignore error
 68				}
 69
 70				finish();
 71			}
 72		});
 73	}
 74
 75	@Override
 76	protected void onStart() {
 77		super.onStart();
 78		final int theme = findTheme();
 79		if (this.mTheme != theme) {
 80			recreate();
 81		}
 82	}
 83
 84	@Override
 85	void onBackendConnected() {
 86		final int numAccounts = xmppConnectionService.getAccounts().size();
 87
 88		if (numAccounts == 1) {
 89			final String body = getIntent().getStringExtra(EXTRA_BODY);
 90			final Account account = xmppConnectionService.getAccounts().get(0);
 91
 92			try {
 93				final Jid contact = Jid.fromString(getIntent().getStringExtra(EXTRA_CONTACT));
 94				final Conversation conversation = xmppConnectionService.findOrCreateConversation(
 95						account, contact, false, false);
 96				switchToConversation(conversation, body, false);
 97			} catch (InvalidJidException e) {
 98				// ignore error
 99			}
100
101			finish();
102		} else {
103			refreshUiReal();
104		}
105	}
106}