package eu.faircode.email; /* This file is part of FairEmail. FairEmail is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. FairEmail is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with FairEmail. If not, see . Copyright 2018-2023 by Marcel Bokhorst (M66B) */ import android.content.Intent; import android.os.Bundle; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.ImageButton; import android.widget.TextView; import androidx.core.text.method.LinkMovementMethodCompat; public class ActivityError extends ActivityBase { static final int PI_ERROR = 1; static final int PI_ALERT = 2; private TextView tvTitle; private TextView tvMessage; private Button btnPassword; private ImageButton ibSetting; private ImageButton ibInfo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setSubtitle(getString(R.string.title_setup_error)); setContentView(R.layout.activity_error); tvTitle = findViewById(R.id.tvTitle); tvMessage = findViewById(R.id.tvMessage); btnPassword = findViewById(R.id.btnPassword); ibSetting = findViewById(R.id.ibSetting); ibInfo = findViewById(R.id.ibInfo); load(); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); load(); } @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); if (itemId == android.R.id.home) { finish(); return true; } return super.onOptionsItemSelected(item); } private void load() { Intent intent = getIntent(); String type = intent.getStringExtra("type"); String title = intent.getStringExtra("title"); String message = intent.getStringExtra("message"); String provider = intent.getStringExtra("provider"); long account = intent.getLongExtra("account", -1L); long identity = intent.getLongExtra("identity", -1L); int protocol = intent.getIntExtra("protocol", -1); int auth_type = intent.getIntExtra("auth_type", -1); String personal = intent.getStringExtra("personal"); String address = intent.getStringExtra("address"); int faq = intent.getIntExtra("faq", -1); tvTitle.setText(title); tvMessage.setMovementMethod(LinkMovementMethodCompat.getInstance()); tvMessage.setText(message); boolean password = (auth_type == ServiceAuthenticator.AUTH_TYPE_PASSWORD); btnPassword.setText(password ? R.string.title_password : R.string.title_setup_oauth_authorize); btnPassword.setCompoundDrawablesRelativeWithIntrinsicBounds( 0, 0, password ? R.drawable.twotone_edit_24 : R.drawable.twotone_check_24, 0); btnPassword.setVisibility(account < 0 ? View.GONE : View.VISIBLE); btnPassword.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (auth_type == ServiceAuthenticator.AUTH_TYPE_GMAIL) startActivity(new Intent(ActivityError.this, ActivitySetup.class) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) .putExtra("target", "gmail") .putExtra("personal", personal) .putExtra("address", address)); else if (auth_type == ServiceAuthenticator.AUTH_TYPE_OAUTH) { try { EmailProvider eprovider = EmailProvider.getProvider(ActivityError.this, provider); startActivity(new Intent(ActivityError.this, ActivitySetup.class) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) .putExtra("target", "oauth") .putExtra("id", eprovider.id) .putExtra("name", eprovider.description) .putExtra("privacy", eprovider.oauth.privacy) .putExtra("askAccount", eprovider.oauth.askAccount) .putExtra("askTenant", eprovider.oauth.askTenant()) .putExtra("personal", personal) .putExtra("address", address)); } catch (Throwable ex) { Log.e(ex); startActivity(new Intent(ActivityError.this, ActivitySetup.class) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK)); } } else if (auth_type == ServiceAuthenticator.AUTH_TYPE_GRAPH) startActivity(new Intent(ActivityError.this, ActivitySetup.class) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) .putExtra("target", "oauth") .putExtra("id", provider) .putExtra("name", "Outlook") .putExtra("askAccount", true) .putExtra("askTenant", true) .putExtra("personal", personal) .putExtra("address", address)); else startActivity(new Intent(ActivityError.this, ActivitySetup.class) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) .putExtra("target", "accounts") .putExtra("id", account) .putExtra("protocol", protocol)); finish(); } }); ibSetting.setVisibility(account < 0 ? View.GONE : View.VISIBLE); ibSetting.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { v.getContext().startActivity(new Intent(v.getContext(), ActivitySetup.class) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) .putExtra("target", "accounts") .putExtra("id", account) .putExtra("protocol", protocol)); } }); ibInfo.setVisibility(faq > 0 ? View.VISIBLE : View.GONE); ibInfo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Helper.viewFAQ(view.getContext(), faq); } }); } }