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