diff --git a/app/src/main/java/eu/faircode/email/DaoAccount.java b/app/src/main/java/eu/faircode/email/DaoAccount.java index f38ce4cb1f..d09c334381 100644 --- a/app/src/main/java/eu/faircode/email/DaoAccount.java +++ b/app/src/main/java/eu/faircode/email/DaoAccount.java @@ -93,11 +93,14 @@ public interface DaoAccount { " WHERE account.synchronize) AS operations") LiveData liveStats(); - @Query("SELECT account.id, account.swipe_left, l.type AS left_type, account.swipe_right, r.type AS right_type" + + @Query("SELECT account.id" + + ", account.swipe_left, l.type AS left_type, l.name AS left_name" + + ", account.swipe_right, r.type AS right_type, r.name AS right_name" + " FROM account" + " LEFT JOIN folder l ON l.id = account.swipe_left" + - " LEFT JOIN folder r ON r.id = account.swipe_right") - LiveData> liveAccountSwipes(); + " LEFT JOIN folder r ON r.id = account.swipe_right" + + " WHERE :account IS NULL OR account.id = :account") + LiveData> liveAccountSwipes(Long account); @Insert long insertAccount(EntityAccount account); diff --git a/app/src/main/java/eu/faircode/email/FragmentGmail.java b/app/src/main/java/eu/faircode/email/FragmentGmail.java index 1e58205c79..612d7c841e 100644 --- a/app/src/main/java/eu/faircode/email/FragmentGmail.java +++ b/app/src/main/java/eu/faircode/email/FragmentGmail.java @@ -25,9 +25,7 @@ import android.accounts.AccountManager; import android.accounts.AccountManagerCallback; import android.accounts.AccountManagerFuture; import android.app.Activity; -import android.app.Dialog; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; @@ -49,15 +47,12 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; import java.util.ArrayList; import java.util.Date; import java.util.List; import static android.accounts.AccountManager.newChooseAccountIntent; -import static android.app.Activity.RESULT_OK; public class FragmentGmail extends FragmentBase { private ViewGroup view; @@ -380,10 +375,10 @@ public class FragmentGmail extends FragmentBase { @Override protected void onExecuted(Bundle args, Void data) { - FragmentDialogDone fragment = new FragmentDialogDone(); + FragmentReview fragment = new FragmentReview(); fragment.setArguments(args); fragment.setTargetFragment(FragmentGmail.this, ActivitySetup.REQUEST_DONE); - fragment.show(getFragmentManager(), "quick:done"); + fragment.show(getFragmentManager(), "quick:review"); } @Override @@ -400,30 +395,4 @@ public class FragmentGmail extends FragmentBase { } }.execute(this, args, "setup:gmail"); } - - public static class FragmentDialogDone extends FragmentDialogBase { - @NonNull - @Override - public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { - return new AlertDialog.Builder(getContext()) - .setMessage(R.string.title_setup_quick_success) - .setPositiveButton(R.string.title_review, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - Bundle args = getArguments(); - long account = args.getLong("account"); - - LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); - lbm.sendBroadcast( - new Intent(ActivitySetup.ACTION_EDIT_ACCOUNT) - .putExtra("id", account) - .putExtra("pop", false)); - - sendResult(RESULT_OK); - } - }) - .setNegativeButton(android.R.string.cancel, null) - .create(); - } - } } diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index f09d80d6fe..1f1bd177d2 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -2226,7 +2226,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. } }); - db.account().liveAccountSwipes().observe(getViewLifecycleOwner(), new Observer>() { + db.account().liveAccountSwipes(null).observe(getViewLifecycleOwner(), new Observer>() { @Override public void onChanged(List swipes) { if (swipes == null) diff --git a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java index 1f6aaadf3c..0875d6858b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java @@ -19,9 +19,7 @@ package eu.faircode.email; Copyright 2018-2019 by Marcel Bokhorst (M66B) */ -import android.app.Dialog; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; @@ -44,9 +42,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; import androidx.constraintlayout.widget.Group; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; import com.google.android.material.textfield.TextInputLayout; @@ -56,8 +52,6 @@ import java.util.List; import javax.mail.AuthenticationFailedException; -import static android.app.Activity.RESULT_OK; - public class FragmentQuickSetup extends FragmentBase { private ViewGroup view; private ScrollView scroll; @@ -359,10 +353,10 @@ public class FragmentQuickSetup extends FragmentBase { : result.smtp.host + ":" + result.smtp.port + (result.smtp.starttls ? " starttls" : " ssl")); grpSetup.setVisibility(result == null ? View.GONE : View.VISIBLE); } else { - FragmentDialogDone fragment = new FragmentDialogDone(); + FragmentReview fragment = new FragmentReview(); fragment.setArguments(args); fragment.setTargetFragment(FragmentQuickSetup.this, ActivitySetup.REQUEST_DONE); - fragment.show(getFragmentManager(), "quick:done"); + fragment.show(getFragmentManager(), "quick:review"); } } @@ -416,30 +410,4 @@ public class FragmentQuickSetup extends FragmentBase { Log.e(ex); } } - - public static class FragmentDialogDone extends FragmentDialogBase { - @NonNull - @Override - public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { - return new AlertDialog.Builder(getContext()) - .setMessage(R.string.title_setup_quick_success) - .setPositiveButton(R.string.title_review, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - Bundle args = getArguments(); - long account = args.getLong("account"); - - LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); - lbm.sendBroadcast( - new Intent(ActivitySetup.ACTION_EDIT_ACCOUNT) - .putExtra("id", account) - .putExtra("pop", false)); - - sendResult(RESULT_OK); - } - }) - .setNegativeButton(android.R.string.cancel, null) - .create(); - } - } } diff --git a/app/src/main/java/eu/faircode/email/FragmentReview.java b/app/src/main/java/eu/faircode/email/FragmentReview.java new file mode 100644 index 0000000000..d7cb23c4ea --- /dev/null +++ b/app/src/main/java/eu/faircode/email/FragmentReview.java @@ -0,0 +1,75 @@ +package eu.faircode.email; + +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.lifecycle.Observer; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; + +import java.util.List; + +import static android.app.Activity.RESULT_OK; + +public class FragmentReview extends FragmentDialogBase { + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + View dview = LayoutInflater.from(getContext()).inflate(R.layout.dialog_review, null); + TextView tvLeft = dview.findViewById(R.id.tvLeft); + TextView tvRight = dview.findViewById(R.id.tvRight); + Button btnAccount = dview.findViewById(R.id.btnAccount); + + tvLeft.setText(""); + tvRight.setText(""); + + Bundle args = getArguments(); + final long account = args.getLong("account"); + + btnAccount.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); + lbm.sendBroadcast( + new Intent(ActivitySetup.ACTION_EDIT_ACCOUNT) + .putExtra("id", account) + .putExtra("pop", false)); + dismiss(); + } + }); + + DB db = DB.getInstance(getContext()); + db.account().liveAccountSwipes(account).observe(this, new Observer>() { + @Override + public void onChanged(List swipes) { + if (swipes != null && swipes.size() == 1) { + String left = swipes.get(0).left_name; + String right = swipes.get(0).right_name; + tvLeft.setText(left == null ? "-" : left); + tvRight.setText(right == null ? "-" : right); + } else { + tvLeft.setText("?"); + tvRight.setText("?"); + } + } + }); + + return new AlertDialog.Builder(getContext()) + .setView(dview) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + sendResult(RESULT_OK); + } + }) + .create(); + } +} \ No newline at end of file diff --git a/app/src/main/java/eu/faircode/email/TupleAccountSwipes.java b/app/src/main/java/eu/faircode/email/TupleAccountSwipes.java index d2b8fd72d6..a239304ddf 100644 --- a/app/src/main/java/eu/faircode/email/TupleAccountSwipes.java +++ b/app/src/main/java/eu/faircode/email/TupleAccountSwipes.java @@ -23,6 +23,8 @@ public class TupleAccountSwipes { public long id; public Long swipe_left; public String left_type; + public String left_name; public Long swipe_right; public String right_type; + public String right_name; } diff --git a/app/src/main/res/layout/dialog_review.xml b/app/src/main/res/layout/dialog_review.xml new file mode 100644 index 0000000000..6e06349f76 --- /dev/null +++ b/app/src/main/res/layout/dialog_review.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + +