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}