WelcomeActivity.java

  1package eu.siacs.conversations.ui;
  2
  3import android.content.Intent;
  4import android.content.pm.ActivityInfo;
  5import android.databinding.DataBindingUtil;
  6import android.os.Bundle;
  7import android.support.annotation.NonNull;
  8import android.support.v7.app.AppCompatActivity;
  9import android.support.v7.widget.Toolbar;
 10import android.view.Menu;
 11import android.view.MenuItem;
 12import android.widget.Toast;
 13
 14import java.util.List;
 15
 16import eu.siacs.conversations.R;
 17import eu.siacs.conversations.databinding.ActivityWelcomeBinding;
 18import eu.siacs.conversations.entities.Account;
 19
 20import static eu.siacs.conversations.utils.PermissionUtils.allGranted;
 21import static eu.siacs.conversations.utils.PermissionUtils.writeGranted;
 22
 23public class WelcomeActivity extends XmppActivity {
 24
 25    private static final int REQUEST_IMPORT_BACKUP = 0x63fb;
 26
 27    @Override
 28    protected void refreshUiReal() {
 29
 30    }
 31
 32    @Override
 33    void onBackendConnected() {
 34
 35    }
 36
 37    @Override
 38    public void onStart() {
 39        super.onStart();
 40        final int theme = findTheme();
 41        if (this.mTheme != theme) {
 42            recreate();
 43        }
 44    }
 45
 46    @Override
 47    public void onNewIntent(Intent intent) {
 48        if (intent != null) {
 49            setIntent(intent);
 50        }
 51    }
 52
 53    @Override
 54    protected void onCreate(final Bundle savedInstanceState) {
 55        if (getResources().getBoolean(R.bool.portrait_only)) {
 56            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
 57        }
 58        super.onCreate(savedInstanceState);
 59        ActivityWelcomeBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_welcome);
 60        setSupportActionBar((Toolbar) binding.toolbar);
 61        configureActionBar(getSupportActionBar(), false);
 62        binding.registerNewAccount.setOnClickListener(v -> {
 63            final Intent intent = new Intent(this, PickServerActivity.class);
 64            addInviteUri(intent);
 65            startActivity(intent);
 66        });
 67        binding.useExisting.setOnClickListener(v -> {
 68            List<Account> accounts = xmppConnectionService.getAccounts();
 69            Intent intent = new Intent(WelcomeActivity.this, EditAccountActivity.class);
 70            intent.putExtra(EditAccountActivity.EXTRA_FORCE_REGISTER,false);
 71            if (accounts.size() == 1) {
 72                intent.putExtra("jid", accounts.get(0).getJid().asBareJid().toString());
 73                intent.putExtra("init", true);
 74            } else if (accounts.size() >= 1) {
 75                intent = new Intent(WelcomeActivity.this, ManageAccountActivity.class);
 76            }
 77            addInviteUri(intent);
 78            startActivity(intent);
 79        });
 80
 81    }
 82
 83    @Override
 84    public boolean onCreateOptionsMenu(Menu menu) {
 85        getMenuInflater().inflate(R.menu.welcome_menu, menu);
 86        return super.onCreateOptionsMenu(menu);
 87    }
 88
 89    @Override
 90    public boolean onOptionsItemSelected(MenuItem item) {
 91        if (item.getItemId() == R.id.action_import_backup) {
 92            if (hasStoragePermission(REQUEST_IMPORT_BACKUP)) {
 93                startActivity(new Intent(this, ImportBackupActivity.class));
 94            }
 95            return true;
 96        }
 97        return super.onOptionsItemSelected(item);
 98    }
 99
100    @Override
101    public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
102        if (grantResults.length > 0) {
103            if (allGranted(grantResults)) {
104                switch (requestCode) {
105                    case REQUEST_IMPORT_BACKUP:
106                        startActivity(new Intent(this, ImportBackupActivity.class));
107                        break;
108                }
109            } else {
110                Toast.makeText(this, R.string.no_storage_permission, Toast.LENGTH_SHORT).show();
111            }
112        }
113        if (writeGranted(grantResults, permissions)) {
114            if (xmppConnectionService != null) {
115                xmppConnectionService.restartFileObserver();
116            }
117        }
118    }
119
120    public void addInviteUri(Intent intent) {
121        StartConversationActivity.addInviteUri(intent, getIntent());
122    }
123
124    public static void launch(AppCompatActivity activity) {
125        Intent intent = new Intent(activity, WelcomeActivity.class);
126        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
127        activity.startActivity(intent);
128        activity.overridePendingTransition(0, 0);
129    }
130
131}