Loading app/ui/src/main/java/com/fsck/k9/activity/FolderInfoHolder.java +56 −43 Original line number Diff line number Diff line package com.fsck.k9.activity; import android.content.Context; import com.fsck.k9.Account; import com.fsck.k9.ui.R; import com.fsck.k9.mail.Folder; import com.fsck.k9.DI; import com.fsck.k9.mailstore.Folder; import com.fsck.k9.mailstore.FolderType; import com.fsck.k9.mailstore.LocalFolder; import com.fsck.k9.ui.folders.FolderNameFormatter; public class FolderInfoHolder implements Comparable<FolderInfoHolder> { private final FolderNameFormatter folderNameFormatter = DI.get(FolderNameFormatter.class); public String serverId; public String displayName; public long lastChecked; Loading @@ -17,7 +20,7 @@ public class FolderInfoHolder implements Comparable<FolderInfoHolder> { public boolean loading; public String status; public boolean lastCheckFailed; public Folder folder; public LocalFolder folder; public boolean pushActive; public boolean moreMessages; Loading Loading @@ -55,64 +58,74 @@ public class FolderInfoHolder implements Comparable<FolderInfoHolder> { public FolderInfoHolder() { } public FolderInfoHolder(Context context, LocalFolder folder, Account account) { if (context == null) { throw new IllegalArgumentException("null context given"); } populate(context, folder, account); public FolderInfoHolder(LocalFolder folder, Account account) { populate(folder, account); } public FolderInfoHolder(Context context, LocalFolder folder, Account account, int unreadCount) { populate(context, folder, account, unreadCount); public FolderInfoHolder(LocalFolder folder, Account account, int unreadCount) { populate(folder, account, unreadCount); } public void populate(Context context, LocalFolder folder, Account account, int unreadCount) { populate(context, folder, account); public void populate(LocalFolder folder, Account account, int unreadCount) { populate(folder, account); this.unreadMessageCount = unreadCount; folder.close(); } public void populate(LocalFolder localFolder, Account account) { this.folder = localFolder; this.serverId = localFolder.getServerId(); this.lastChecked = localFolder.getLastUpdate(); public void populate(Context context, LocalFolder folder, Account account) { this.folder = folder; this.serverId = folder.getServerId(); this.lastChecked = folder.getLastUpdate(); this.status = truncateStatus(localFolder.getStatus()); this.displayName = getDisplayName(account, localFolder); setMoreMessagesFromFolder(localFolder); } this.status = truncateStatus(folder.getStatus()); private String getDisplayName(Account account, LocalFolder localFolder) { String serverId = localFolder.getServerId(); Folder folder = new Folder( localFolder.getDatabaseId(), serverId, localFolder.getName(), getFolderType(account, serverId)); this.displayName = getDisplayName(context, account, serverId, folder.getName()); setMoreMessagesFromFolder(folder); return folderNameFormatter.displayName(folder); } /** * Returns the display name for a folder. * * <p> * This will return localized strings for special folders like the Inbox or the Trash folder. * </p> */ public static String getDisplayName(Context context, Account account, String serverId, String name) { final String displayName; if (serverId.equals(account.getSpamFolder())) { displayName = context.getString(R.string.special_mailbox_name_spam_fmt, serverId); private static FolderType getFolderType(Account account, String serverId) { if (serverId.equals(account.getInboxFolder())) { return FolderType.INBOX; } else if (serverId.equals(account.getOutboxFolder())) { return FolderType.OUTBOX; } else if (serverId.equals(account.getArchiveFolder())) { displayName = context.getString(R.string.special_mailbox_name_archive_fmt, serverId); return FolderType.ARCHIVE; } else if (serverId.equals(account.getDraftsFolder())) { return FolderType.DRAFTS; } else if (serverId.equals(account.getSentFolder())) { displayName = context.getString(R.string.special_mailbox_name_sent_fmt, serverId); return FolderType.SENT; } else if (serverId.equals(account.getSpamFolder())) { return FolderType.SPAM; } else if (serverId.equals(account.getTrashFolder())) { displayName = context.getString(R.string.special_mailbox_name_trash_fmt, serverId); } else if (serverId.equals(account.getDraftsFolder())) { displayName = context.getString(R.string.special_mailbox_name_drafts_fmt, serverId); } else if (serverId.equals(account.getOutboxFolder())) { displayName = context.getString(R.string.special_mailbox_name_outbox); } else if (serverId.equals(account.getInboxFolder())) { displayName = context.getString(R.string.special_mailbox_name_inbox); return FolderType.TRASH; } else { displayName = name; return FolderType.REGULAR; } } /** * Returns the display name for a folder. * * Deprecated. Use {@link FolderNameFormatter} instead. */ @Deprecated public static String getDisplayName(Account account, String serverId, String name) { FolderNameFormatter folderNameFormatter = DI.get(FolderNameFormatter.class); FolderType folderType = getFolderType(account, serverId); Folder folder = new Folder(-1, serverId, name, folderType); return displayName; return folderNameFormatter.displayName(folder); } public void setMoreMessagesFromFolder(LocalFolder folder) { Loading app/ui/src/main/java/com/fsck/k9/activity/FolderList.java +3 −3 Original line number Diff line number Diff line Loading @@ -693,9 +693,9 @@ public class FolderList extends K9ListActivity { } if (holder == null) { holder = new FolderInfoHolder(context, folder, FolderList.this.account, -1); holder = new FolderInfoHolder(folder, FolderList.this.account, -1); } else { holder.populate(context, folder, FolderList.this.account, -1); holder.populate(folder, FolderList.this.account, -1); } if (folder.isInTopGroup()) { Loading Loading @@ -748,7 +748,7 @@ public class FolderList extends K9ListActivity { localFolder = DI.get(LocalStoreProvider.class).getInstance(account).getFolder(folderServerId); FolderInfoHolder folderHolder = getFolder(folderServerId); if (folderHolder != null) { folderHolder.populate(context, localFolder, FolderList.this.account, -1); folderHolder.populate(localFolder, FolderList.this.account, -1); folderHolder.flaggedMessageCount = -1; handler.dataChanged(); Loading app/ui/src/main/java/com/fsck/k9/activity/setup/FolderSettings.java +1 −1 Original line number Diff line number Diff line Loading @@ -80,7 +80,7 @@ public class FolderSettings extends K9PreferenceActivity { addPreferencesFromResource(R.xml.folder_settings_preferences); String folderName = mFolder.getName(); String displayName = FolderInfoHolder.getDisplayName(this, mAccount, folderServerId, folderName); String displayName = FolderInfoHolder.getDisplayName(mAccount, folderServerId, folderName); Preference category = findPreference(PREFERENCE_TOP_CATERGORY); category.setTitle(displayName); Loading app/ui/src/main/java/com/fsck/k9/fragment/MessageListFragment.java +2 −7 Original line number Diff line number Diff line Loading @@ -182,7 +182,6 @@ public class MessageListFragment extends Fragment implements OnItemClickListener * Stores the server ID of the folder that we want to open as soon as possible after load. */ private String folderServerId; private String folderName; private boolean remoteSearchPerformed = false; private Future<?> remoteSearchFuture = null; Loading Loading @@ -318,10 +317,7 @@ public class MessageListFragment extends Fragment implements OnItemClickListener private void setWindowTitle() { // regular folder content display if (!isManualSearch() && singleFolderMode) { Activity activity = getActivity(); String displayName = FolderInfoHolder.getDisplayName(activity, account, folderServerId, folderName); fragmentListener.setMessageListTitle(displayName); fragmentListener.setMessageListTitle(currentFolder.displayName); } else { // query result display. This may be for a search folder as opposed to a user-initiated search. if (title != null) { Loading Loading @@ -573,7 +569,6 @@ public class MessageListFragment extends Fragment implements OnItemClickListener singleFolderMode = true; folderServerId = search.getFolderServerIds().get(0); currentFolder = getFolderInfoHolder(folderServerId, account); folderName = currentFolder.displayName; } allAccounts = false; Loading Loading @@ -632,7 +627,7 @@ public class MessageListFragment extends Fragment implements OnItemClickListener private FolderInfoHolder getFolderInfoHolder(String folderServerId, Account account) { try { LocalFolder localFolder = MlfUtils.getOpenFolder(folderServerId, account); return new FolderInfoHolder(context, localFolder, account); return new FolderInfoHolder(localFolder, account); } catch (MessagingException e) { throw new RuntimeException(e); } Loading Loading
app/ui/src/main/java/com/fsck/k9/activity/FolderInfoHolder.java +56 −43 Original line number Diff line number Diff line package com.fsck.k9.activity; import android.content.Context; import com.fsck.k9.Account; import com.fsck.k9.ui.R; import com.fsck.k9.mail.Folder; import com.fsck.k9.DI; import com.fsck.k9.mailstore.Folder; import com.fsck.k9.mailstore.FolderType; import com.fsck.k9.mailstore.LocalFolder; import com.fsck.k9.ui.folders.FolderNameFormatter; public class FolderInfoHolder implements Comparable<FolderInfoHolder> { private final FolderNameFormatter folderNameFormatter = DI.get(FolderNameFormatter.class); public String serverId; public String displayName; public long lastChecked; Loading @@ -17,7 +20,7 @@ public class FolderInfoHolder implements Comparable<FolderInfoHolder> { public boolean loading; public String status; public boolean lastCheckFailed; public Folder folder; public LocalFolder folder; public boolean pushActive; public boolean moreMessages; Loading Loading @@ -55,64 +58,74 @@ public class FolderInfoHolder implements Comparable<FolderInfoHolder> { public FolderInfoHolder() { } public FolderInfoHolder(Context context, LocalFolder folder, Account account) { if (context == null) { throw new IllegalArgumentException("null context given"); } populate(context, folder, account); public FolderInfoHolder(LocalFolder folder, Account account) { populate(folder, account); } public FolderInfoHolder(Context context, LocalFolder folder, Account account, int unreadCount) { populate(context, folder, account, unreadCount); public FolderInfoHolder(LocalFolder folder, Account account, int unreadCount) { populate(folder, account, unreadCount); } public void populate(Context context, LocalFolder folder, Account account, int unreadCount) { populate(context, folder, account); public void populate(LocalFolder folder, Account account, int unreadCount) { populate(folder, account); this.unreadMessageCount = unreadCount; folder.close(); } public void populate(LocalFolder localFolder, Account account) { this.folder = localFolder; this.serverId = localFolder.getServerId(); this.lastChecked = localFolder.getLastUpdate(); public void populate(Context context, LocalFolder folder, Account account) { this.folder = folder; this.serverId = folder.getServerId(); this.lastChecked = folder.getLastUpdate(); this.status = truncateStatus(localFolder.getStatus()); this.displayName = getDisplayName(account, localFolder); setMoreMessagesFromFolder(localFolder); } this.status = truncateStatus(folder.getStatus()); private String getDisplayName(Account account, LocalFolder localFolder) { String serverId = localFolder.getServerId(); Folder folder = new Folder( localFolder.getDatabaseId(), serverId, localFolder.getName(), getFolderType(account, serverId)); this.displayName = getDisplayName(context, account, serverId, folder.getName()); setMoreMessagesFromFolder(folder); return folderNameFormatter.displayName(folder); } /** * Returns the display name for a folder. * * <p> * This will return localized strings for special folders like the Inbox or the Trash folder. * </p> */ public static String getDisplayName(Context context, Account account, String serverId, String name) { final String displayName; if (serverId.equals(account.getSpamFolder())) { displayName = context.getString(R.string.special_mailbox_name_spam_fmt, serverId); private static FolderType getFolderType(Account account, String serverId) { if (serverId.equals(account.getInboxFolder())) { return FolderType.INBOX; } else if (serverId.equals(account.getOutboxFolder())) { return FolderType.OUTBOX; } else if (serverId.equals(account.getArchiveFolder())) { displayName = context.getString(R.string.special_mailbox_name_archive_fmt, serverId); return FolderType.ARCHIVE; } else if (serverId.equals(account.getDraftsFolder())) { return FolderType.DRAFTS; } else if (serverId.equals(account.getSentFolder())) { displayName = context.getString(R.string.special_mailbox_name_sent_fmt, serverId); return FolderType.SENT; } else if (serverId.equals(account.getSpamFolder())) { return FolderType.SPAM; } else if (serverId.equals(account.getTrashFolder())) { displayName = context.getString(R.string.special_mailbox_name_trash_fmt, serverId); } else if (serverId.equals(account.getDraftsFolder())) { displayName = context.getString(R.string.special_mailbox_name_drafts_fmt, serverId); } else if (serverId.equals(account.getOutboxFolder())) { displayName = context.getString(R.string.special_mailbox_name_outbox); } else if (serverId.equals(account.getInboxFolder())) { displayName = context.getString(R.string.special_mailbox_name_inbox); return FolderType.TRASH; } else { displayName = name; return FolderType.REGULAR; } } /** * Returns the display name for a folder. * * Deprecated. Use {@link FolderNameFormatter} instead. */ @Deprecated public static String getDisplayName(Account account, String serverId, String name) { FolderNameFormatter folderNameFormatter = DI.get(FolderNameFormatter.class); FolderType folderType = getFolderType(account, serverId); Folder folder = new Folder(-1, serverId, name, folderType); return displayName; return folderNameFormatter.displayName(folder); } public void setMoreMessagesFromFolder(LocalFolder folder) { Loading
app/ui/src/main/java/com/fsck/k9/activity/FolderList.java +3 −3 Original line number Diff line number Diff line Loading @@ -693,9 +693,9 @@ public class FolderList extends K9ListActivity { } if (holder == null) { holder = new FolderInfoHolder(context, folder, FolderList.this.account, -1); holder = new FolderInfoHolder(folder, FolderList.this.account, -1); } else { holder.populate(context, folder, FolderList.this.account, -1); holder.populate(folder, FolderList.this.account, -1); } if (folder.isInTopGroup()) { Loading Loading @@ -748,7 +748,7 @@ public class FolderList extends K9ListActivity { localFolder = DI.get(LocalStoreProvider.class).getInstance(account).getFolder(folderServerId); FolderInfoHolder folderHolder = getFolder(folderServerId); if (folderHolder != null) { folderHolder.populate(context, localFolder, FolderList.this.account, -1); folderHolder.populate(localFolder, FolderList.this.account, -1); folderHolder.flaggedMessageCount = -1; handler.dataChanged(); Loading
app/ui/src/main/java/com/fsck/k9/activity/setup/FolderSettings.java +1 −1 Original line number Diff line number Diff line Loading @@ -80,7 +80,7 @@ public class FolderSettings extends K9PreferenceActivity { addPreferencesFromResource(R.xml.folder_settings_preferences); String folderName = mFolder.getName(); String displayName = FolderInfoHolder.getDisplayName(this, mAccount, folderServerId, folderName); String displayName = FolderInfoHolder.getDisplayName(mAccount, folderServerId, folderName); Preference category = findPreference(PREFERENCE_TOP_CATERGORY); category.setTitle(displayName); Loading
app/ui/src/main/java/com/fsck/k9/fragment/MessageListFragment.java +2 −7 Original line number Diff line number Diff line Loading @@ -182,7 +182,6 @@ public class MessageListFragment extends Fragment implements OnItemClickListener * Stores the server ID of the folder that we want to open as soon as possible after load. */ private String folderServerId; private String folderName; private boolean remoteSearchPerformed = false; private Future<?> remoteSearchFuture = null; Loading Loading @@ -318,10 +317,7 @@ public class MessageListFragment extends Fragment implements OnItemClickListener private void setWindowTitle() { // regular folder content display if (!isManualSearch() && singleFolderMode) { Activity activity = getActivity(); String displayName = FolderInfoHolder.getDisplayName(activity, account, folderServerId, folderName); fragmentListener.setMessageListTitle(displayName); fragmentListener.setMessageListTitle(currentFolder.displayName); } else { // query result display. This may be for a search folder as opposed to a user-initiated search. if (title != null) { Loading Loading @@ -573,7 +569,6 @@ public class MessageListFragment extends Fragment implements OnItemClickListener singleFolderMode = true; folderServerId = search.getFolderServerIds().get(0); currentFolder = getFolderInfoHolder(folderServerId, account); folderName = currentFolder.displayName; } allAccounts = false; Loading Loading @@ -632,7 +627,7 @@ public class MessageListFragment extends Fragment implements OnItemClickListener private FolderInfoHolder getFolderInfoHolder(String folderServerId, Account account) { try { LocalFolder localFolder = MlfUtils.getOpenFolder(folderServerId, account); return new FolderInfoHolder(context, localFolder, account); return new FolderInfoHolder(localFolder, account); } catch (MessagingException e) { throw new RuntimeException(e); } Loading