ShareViaAccountActivity.java

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