ShareViaAccountActivity.java

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