ChooseAccountForProfilePictureActivity.java

 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}