From a96e9d07fb6f4661714ed09e973a2049ebd4ac1c Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 13 Dec 2018 10:43:30 +0100 Subject: [PATCH] Check for primary account / drafts / archive --- .../java/eu/faircode/email/DaoFolder.java | 11 +++- .../eu/faircode/email/FragmentAccount.java | 3 +- .../java/eu/faircode/email/FragmentSetup.java | 40 ++++++++++++++- app/src/main/res/layout/fragment_setup.xml | 50 ++++++++++++++----- 4 files changed, 87 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index 34dbeb38ad..6fd0d6aeb1 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -83,6 +83,16 @@ public interface DaoFolder { " GROUP BY folder.id") LiveData> liveUnified(); + @Query("SELECT folder.* FROM folder" + + " JOIN account ON account.id = folder.account" + + " WHERE `primary` AND type = '" + EntityFolder.DRAFTS + "'") + LiveData livePrimaryDrafts(); + + @Query("SELECT folder.* FROM folder" + + " JOIN account ON account.id = folder.account" + + " WHERE `primary` AND type = '" + EntityFolder.ARCHIVE + "'") + LiveData livePrimaryArchive(); + @Query("SELECT folder.* FROM folder" + " JOIN account ON account.id = folder.account" + " WHERE folder.type = '" + EntityFolder.DRAFTS + "'" + @@ -117,7 +127,6 @@ public interface DaoFolder { " WHERE account = :account AND type = :type") EntityFolder getFolderByType(long account, String type); - // For debug/crash info @Query("SELECT folder.* FROM folder" + " JOIN account ON account.id = folder.account" + " WHERE `primary` AND type = '" + EntityFolder.DRAFTS + "'") diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index 51d4e30aff..3a3fa4b614 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -962,7 +962,8 @@ public class FragmentAccount extends FragmentEx { @Override protected void onLoaded(Bundle args, EntityAccount primary) { - cbPrimary.setChecked(primary == null); + if (primary == null) + cbPrimary.setChecked(true); } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index d33cd8a5de..0973b989cf 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -81,6 +81,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentTransaction; +import androidx.lifecycle.LiveData; import androidx.lifecycle.Observer; import static android.app.Activity.RESULT_OK; @@ -92,6 +93,8 @@ public class FragmentSetup extends FragmentEx { private Button btnAccount; private TextView tvAccountDone; + private TextView tvNoPrimaryDrafts; + private TextView tvNoPrimaryArchive; private Button btnIdentity; private TextView tvIdentityDone; @@ -135,6 +138,8 @@ public class FragmentSetup extends FragmentEx { btnAccount = view.findViewById(R.id.btnAccount); tvAccountDone = view.findViewById(R.id.tvAccountDone); + tvNoPrimaryDrafts = view.findViewById(R.id.tvNoPrimaryDrafts); + tvNoPrimaryArchive = view.findViewById(R.id.tvNoPrimaryArchive); btnIdentity = view.findViewById(R.id.btnIdentity); tvIdentityDone = view.findViewById(R.id.tvIdentityDone); @@ -281,6 +286,8 @@ public class FragmentSetup extends FragmentEx { tvAccountDone.setText(null); tvAccountDone.setCompoundDrawables(null, null, null, null); + tvNoPrimaryDrafts.setVisibility(View.GONE); + tvNoPrimaryArchive.setVisibility(View.GONE); btnIdentity.setEnabled(false); tvIdentityDone.setText(null); @@ -345,15 +352,44 @@ public class FragmentSetup extends FragmentEx { PackageManager pm = getContext().getPackageManager(); ibHelp.setVisibility(getIntentHelp().resolveActivity(pm) == null ? View.GONE : View.VISIBLE); - DB db = DB.getInstance(getContext()); + final DB db = DB.getInstance(getContext()); db.account().liveAccounts(true).observe(getViewLifecycleOwner(), new Observer>() { + private boolean done = false; + private LiveData livePrimaryDrafts = null; + private LiveData livePrimaryArchive = null; + @Override public void onChanged(@Nullable List accounts) { - boolean done = (accounts != null && accounts.size() > 0); + done = (accounts != null && accounts.size() > 0); + btnIdentity.setEnabled(done); tvAccountDone.setText(done ? R.string.title_setup_done : R.string.title_setup_to_do); tvAccountDone.setCompoundDrawablesWithIntrinsicBounds(done ? check : null, null, null, null); + + if (livePrimaryDrafts == null) + livePrimaryDrafts = db.folder().livePrimaryDrafts(); + else + livePrimaryDrafts.removeObservers(getViewLifecycleOwner()); + + if (livePrimaryArchive == null) + livePrimaryArchive = db.folder().livePrimaryDrafts(); + else + livePrimaryArchive.removeObservers(getViewLifecycleOwner()); + + livePrimaryDrafts.observe(getViewLifecycleOwner(), new Observer() { + @Override + public void onChanged(EntityFolder drafts) { + tvNoPrimaryDrafts.setVisibility(done && drafts == null ? View.VISIBLE : View.GONE); + } + }); + + livePrimaryArchive.observe(getViewLifecycleOwner(), new Observer() { + @Override + public void onChanged(EntityFolder archive) { + tvNoPrimaryArchive.setVisibility(done && archive == null ? View.VISIBLE : View.GONE); + } + }); } }); diff --git a/app/src/main/res/layout/fragment_setup.xml b/app/src/main/res/layout/fragment_setup.xml index 4465c06213..3e37d1b79d 100644 --- a/app/src/main/res/layout/fragment_setup.xml +++ b/app/src/main/res/layout/fragment_setup.xml @@ -54,14 +54,38 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvAccount" /> + + + + + app:layout_constraintTop_toBottomOf="@id/tvNoPrimaryArchive" /> @@ -69,7 +93,7 @@ android:id="@+id/btnIdentity" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="9dp" + android:layout_marginTop="12dp" android:text="@string/title_setup_identity" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -101,7 +125,7 @@ android:id="@+id/vSeparatorIdentity" android:layout_width="match_parent" android:layout_height="1dp" - android:layout_marginTop="9dp" + android:layout_marginTop="12dp" android:background="?attr/colorSeparator" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvIdentityDone" /> @@ -112,7 +136,7 @@ android:id="@+id/btnPermissions" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="9dp" + android:layout_marginTop="12dp" android:text="@string/title_setup_permissions" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -144,7 +168,7 @@ android:id="@+id/vSeparatorPermissions" android:layout_width="match_parent" android:layout_height="1dp" - android:layout_marginTop="9dp" + android:layout_marginTop="12dp" android:background="?attr/colorSeparator" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvPermissionsDone" /> @@ -155,7 +179,7 @@ android:id="@+id/btnDoze" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="9dp" + android:layout_marginTop="12dp" android:text="@string/title_setup_doze" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -190,7 +214,7 @@ style="?android:attr/buttonStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="9dp" + android:layout_marginTop="12dp" android:minWidth="0dp" android:minHeight="0dp" android:text="@string/title_setup_data" @@ -202,7 +226,7 @@ android:id="@+id/vSeparatorDoze" android:layout_width="match_parent" android:layout_height="1dp" - android:layout_marginTop="9dp" + android:layout_marginTop="12dp" android:background="?attr/colorSeparator" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/btnData" /> @@ -211,7 +235,7 @@ android:id="@+id/btnNotifications" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="9dp" + android:layout_marginTop="12dp" android:text="@string/title_setup_notifications" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -221,7 +245,7 @@ android:id="@+id/tbDarkTheme" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="18dp" + android:layout_marginTop="12dp" android:textOff="@string/title_setup_dark_theme" android:textOn="@string/title_setup_light_theme" app:layout_constraintEnd_toEndOf="parent" @@ -232,7 +256,7 @@ android:id="@+id/cbBlackTheme" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="9dp" + android:layout_marginTop="6dp" android:text="@string/title_setup_black_background" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -243,7 +267,7 @@ style="?android:attr/buttonStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="18dp" + android:layout_marginTop="12dp" android:minWidth="0dp" android:minHeight="0dp" android:text="@string/title_advanced"