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}