1package eu.siacs.conversations.ui;
2
3import android.content.Intent;
4import android.net.Uri;
5import android.os.Bundle;
6import android.widget.Toast;
7import androidx.databinding.DataBindingUtil;
8import eu.siacs.conversations.R;
9import eu.siacs.conversations.databinding.ActivityManageAccountsBinding;
10import eu.siacs.conversations.entities.Account;
11import eu.siacs.conversations.ui.adapter.AccountAdapter;
12import java.util.ArrayList;
13import java.util.List;
14
15public class ChooseAccountForProfilePictureActivity extends XmppActivity {
16
17 protected final List<Account> accountList = new ArrayList<>();
18 protected AccountAdapter mAccountAdapter;
19
20 @Override
21 protected void refreshUiReal() {
22 loadEnabledAccounts();
23 mAccountAdapter.notifyDataSetChanged();
24 }
25
26 @Override
27 protected void onCreate(final Bundle savedInstanceState) {
28 super.onCreate(savedInstanceState);
29 final ActivityManageAccountsBinding binding =
30 DataBindingUtil.setContentView(this, R.layout.activity_manage_accounts);
31 Activities.setStatusAndNavigationBarColors(this, binding.getRoot());
32 setSupportActionBar(binding.toolbar);
33 configureActionBar(getSupportActionBar(), false);
34 this.mAccountAdapter = new AccountAdapter(this, accountList, false);
35 binding.accountList.setAdapter(this.mAccountAdapter);
36 binding.accountList.setOnItemClickListener(
37 (arg0, view, position, arg3) -> {
38 final Account account = accountList.get(position);
39 goToProfilePictureActivity(account);
40 });
41 }
42
43 @Override
44 public void onStart() {
45 super.onStart();
46 }
47
48 @Override
49 protected void onBackendConnected() {
50 loadEnabledAccounts();
51 if (accountList.size() == 1) {
52 goToProfilePictureActivity(accountList.get(0));
53 return;
54 }
55 mAccountAdapter.notifyDataSetChanged();
56 }
57
58 private void loadEnabledAccounts() {
59 accountList.clear();
60 for (Account account : xmppConnectionService.getAccounts()) {
61 if (account.isEnabled()) {
62 accountList.add(account);
63 }
64 }
65 }
66
67 private void goToProfilePictureActivity(final Account account) {
68 final Intent startIntent = getIntent();
69 final Uri uri = startIntent == null ? null : startIntent.getData();
70 if (uri != null) {
71 Intent intent = new Intent(this, PublishProfilePictureActivity.class);
72 intent.setAction(Intent.ACTION_ATTACH_DATA);
73 intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toString());
74 intent.setData(uri);
75 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
76 try {
77 startActivity(intent);
78 } catch (SecurityException e) {
79 Toast.makeText(
80 this,
81 R.string.sharing_application_not_grant_permission,
82 Toast.LENGTH_SHORT)
83 .show();
84 return;
85 }
86 }
87 finish();
88 }
89}