By default list subscribed folders only

This commit is contained in:
M66B 2019-05-23 18:13:03 +02:00
parent 84b06ef4e4
commit 8965d69b99
8 changed files with 49 additions and 74 deletions

View File

@ -190,7 +190,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
}
private void bindTo(final TupleFolderEx folder) {
view.setVisibility(folder.isHidden(context) && !show_hidden ? View.GONE : View.VISIBLE);
view.setVisibility(folder.hide && !show_hidden ? View.GONE : View.VISIBLE);
view.setActivated(folder.tbc != null || folder.tbd != null);
vwHidden.setAlpha(folder.hide ? Helper.LOW_LIGHT : 0.0f);

View File

@ -3194,7 +3194,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
List<EntityFolder> targets = new ArrayList<>();
for (EntityFolder folder : folders)
if (!folder.isHidden(context) &&
if (!folder.hide &&
!folder.id.equals(message.folder) &&
(copy ||
(!EntityFolder.ARCHIVE.equals(folder.type) &&

View File

@ -772,7 +772,7 @@ class Core {
DB db = DB.getInstance(context);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean subscribed_only = prefs.getBoolean("subscribed_only", false);
boolean subscribed_only = prefs.getBoolean("subscribed_only", true);
Log.i("Start sync folders account=" + account.name);
@ -782,7 +782,14 @@ class Core {
EntityLog.log(context, account.name + " folder separator=" + separator);
// Get remote folders
Folder[] ifolders = defaultFolder.list("*");
Folder[] ifolders = (subscribed_only
? defaultFolder.listSubscribed("*")
: defaultFolder.list("*"));
if (subscribed_only && ifolders.length == 0) {
Log.i("No subscribed folders");
ifolders = defaultFolder.list("*");
}
Log.i("Remote folder count=" + ifolders.length + " separator=" + separator);
// Get folder names
@ -829,46 +836,41 @@ class Core {
folder = db.folder().getFolderByName(account.id, fullName);
if (folder == null) {
if (!subscribed_only || subscribed) {
folder = new EntityFolder();
folder.account = account.id;
folder.name = fullName;
folder.display = display;
folder.type = (EntityFolder.SYSTEM.equals(type) ? type : EntityFolder.USER);
folder.synchronize = false;
folder.subscribed = subscribed;
folder.poll = ("imap.gmail.com".equals(account.host));
folder.sync_days = EntityFolder.DEFAULT_SYNC;
folder.keep_days = EntityFolder.DEFAULT_KEEP;
folder.id = db.folder().insertFolder(folder);
Log.i(folder.name + " added type=" + folder.type);
}
folder = new EntityFolder();
folder.account = account.id;
folder.name = fullName;
folder.display = display;
folder.type = (EntityFolder.SYSTEM.equals(type) ? type : EntityFolder.USER);
folder.synchronize = false;
folder.subscribed = subscribed;
folder.poll = ("imap.gmail.com".equals(account.host));
folder.sync_days = EntityFolder.DEFAULT_SYNC;
folder.keep_days = EntityFolder.DEFAULT_KEEP;
folder.id = db.folder().insertFolder(folder);
Log.i(folder.name + " added type=" + folder.type);
} else {
if (!subscribed_only || subscribed) {
Log.i(folder.name + " exists type=" + folder.type);
Log.i(folder.name + " exists type=" + folder.type);
if (folder.subscribed == null || !folder.subscribed.equals(subscribed))
db.folder().setFolderSubscribed(folder.id, subscribed);
if (folder.subscribed == null || !folder.subscribed.equals(subscribed))
db.folder().setFolderSubscribed(folder.id, subscribed);
if (folder.display == null && display != null) {
db.folder().setFolderDisplay(folder.id, display);
EntityLog.log(context, account.name + ":" + folder.name +
" removed prefix display=" + display + " separator=" + separator);
}
if (folder.display == null && display != null) {
db.folder().setFolderDisplay(folder.id, display);
EntityLog.log(context, account.name + ":" + folder.name +
" removed prefix display=" + display + " separator=" + separator);
}
// Compatibility
if ("Inbox_sub".equals(folder.type))
db.folder().setFolderType(folder.id, EntityFolder.USER);
else if (EntityFolder.USER.equals(folder.type) && EntityFolder.SYSTEM.equals(type))
// Compatibility
if ("Inbox_sub".equals(folder.type))
db.folder().setFolderType(folder.id, EntityFolder.USER);
else if (EntityFolder.USER.equals(folder.type) && EntityFolder.SYSTEM.equals(type))
db.folder().setFolderType(folder.id, type);
else if (EntityFolder.SYSTEM.equals(folder.type) && EntityFolder.USER.equals(type))
db.folder().setFolderType(folder.id, type);
else if (EntityFolder.INBOX.equals(type) && !EntityFolder.INBOX.equals(folder.type)) {
if (db.folder().getFolderByType(folder.account, EntityFolder.INBOX) == null)
db.folder().setFolderType(folder.id, type);
else if (EntityFolder.SYSTEM.equals(folder.type) && EntityFolder.USER.equals(type))
db.folder().setFolderType(folder.id, type);
else if (EntityFolder.INBOX.equals(type) && !EntityFolder.INBOX.equals(folder.type)) {
if (db.folder().getFolderByType(folder.account, EntityFolder.INBOX) == null)
db.folder().setFolderType(folder.id, type);
}
} else
db.folder().deleteFolder(folder.id);
}
}
db.setTransactionSuccessful();
} finally {
@ -876,13 +878,11 @@ class Core {
Log.i("End sync folder");
}
if (!subscribed_only || subscribed) {
nameFolder.put(folder.name, folder);
String parentName = folder.getParentName(separator);
if (!parentFolders.containsKey(parentName))
parentFolders.put(parentName, new ArrayList<EntityFolder>());
parentFolders.get(parentName).add(folder);
}
nameFolder.put(folder.name, folder);
String parentName = folder.getParentName(separator);
if (!parentFolders.containsKey(parentName))
parentFolders.put(parentName, new ArrayList<EntityFolder>());
parentFolders.get(parentName).add(folder);
}
}

View File

@ -20,10 +20,8 @@ package eu.faircode.email;
*/
import android.content.Context;
import android.content.SharedPreferences;
import androidx.annotation.NonNull;
import androidx.preference.PreferenceManager;
import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.Index;
@ -216,16 +214,6 @@ public class EntityFolder extends EntityOrder implements Serializable {
return R.drawable.baseline_folder_24;
}
boolean isHidden(Context context) {
if (hide)
return true;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean subscriptions = prefs.getBoolean("subscriptions", false);
return (subscriptions && subscribed != null && !subscribed);
}
String getDisplayName(Context context) {
return (display == null ? Helper.localizeFolderName(context, name) : display);
}

View File

@ -1392,7 +1392,7 @@ public class FragmentMessages extends FragmentBase {
List<EntityFolder> targets = new ArrayList<>();
List<EntityFolder> folders = db.folder().getFolders(account.id);
for (EntityFolder target : folders)
if (!target.isHidden(context) &&
if (!target.hide &&
!EntityFolder.ARCHIVE.equals(target.type) &&
!EntityFolder.TRASH.equals(target.type) &&
!EntityFolder.JUNK.equals(target.type) &&

View File

@ -252,7 +252,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
swBadge.setChecked(prefs.getBoolean("badge", true));
swSubscriptions.setChecked(prefs.getBoolean("subscriptions", false));
swSubscribedOnly.setChecked(prefs.getBoolean("subscribed_only", false));
swSubscribedOnly.setChecked(prefs.getBoolean("subscribed_only", true));
swEnglish.setChecked(prefs.getBoolean("english", false));
swAuthentication.setChecked(prefs.getBoolean("authentication", false));
swParanoid.setChecked(prefs.getBoolean("paranoid", true));

View File

@ -49,18 +49,6 @@
app:layout_constraintTop_toBottomOf="@id/tvBadgeHint"
app:switchPadding="12dp" />
<TextView
android:id="@+id/tvSubscriptionsHint"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="48dp"
android:text="@string/title_advanced_subscriptions_hint"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="italic"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swSubscriptions" />
<TextView
android:id="@+id/tvSubscriptionPro"
android:layout_width="0dp"
@ -71,7 +59,7 @@
android:textStyle="italic"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvSubscriptionsHint" />
app:layout_constraintTop_toBottomOf="@id/swSubscriptions" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/swSubscribedOnly"

View File

@ -243,7 +243,6 @@
<string name="title_advanced_threading_hint">Group messages related to each other</string>
<string name="title_advanced_name_email_hint">When disabled only names will be shown when available</string>
<string name="title_advanced_flags_hint">Note that starred messages will always be kept locally</string>
<string name="title_advanced_subscriptions_hint">Folders not subscribed to will be hidden</string>
<string name="title_advanced_preview_hint">Only available when message text was downloaded</string>
<string name="title_advanced_autoexpand_hint">Automatically open message when there is just one message or just one unread message in a conversation</string>