Loading app/ui/src/main/java/com/fsck/k9/activity/MessageList.java +8 −20 Original line number Diff line number Diff line package com.fsck.k9.activity; import java.util.ArrayList; import java.util.Collection; import java.util.List; Loading @@ -19,7 +18,6 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Parcelable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager.OnBackStackChangedListener; Loading @@ -27,7 +25,6 @@ import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.util.TypedValue; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; Loading @@ -46,13 +43,12 @@ import com.fsck.k9.DI; import com.fsck.k9.K9; import com.fsck.k9.K9.SplitViewMode; import com.fsck.k9.Preferences; import com.fsck.k9.controller.MessageReference; import com.fsck.k9.helper.Contacts; import com.fsck.k9.ui.R; import com.fsck.k9.activity.compose.MessageActions; import com.fsck.k9.activity.misc.SwipeGestureDetector.OnSwipeGestureListener; import com.fsck.k9.controller.MessageReference; import com.fsck.k9.fragment.MessageListFragment; import com.fsck.k9.fragment.MessageListFragment.MessageListFragmentListener; import com.fsck.k9.helper.Contacts; import com.fsck.k9.helper.ParcelableUtil; import com.fsck.k9.mailstore.Folder; import com.fsck.k9.mailstore.SearchStatusManager; Loading @@ -65,6 +61,7 @@ import com.fsck.k9.search.SearchSpecification.Attribute; import com.fsck.k9.search.SearchSpecification.SearchCondition; import com.fsck.k9.search.SearchSpecification.SearchField; import com.fsck.k9.ui.K9Drawer; import com.fsck.k9.ui.R; import com.fsck.k9.ui.messagelist.MessageListViewModel; import com.fsck.k9.ui.messagelist.MessageListViewModelFactory; import com.fsck.k9.ui.messageview.MessageViewFragment; Loading Loading @@ -178,15 +175,6 @@ public class MessageList extends K9Activity implements MessageListFragmentListen private TextView actionBarSubTitle; private Menu menu; private int iconFolderInboxResId; private int iconFolderOutbotResId; private int iconFolderSentResId; private int iconFolderTrashResId; private int iconFolderDraftsResId; private int iconFolderArchiveResId; private int iconFolderSpamResId; private int iconFolderResId; private ViewGroup messageViewContainer; private View messageViewPlaceHolder; Loading Loading @@ -490,9 +478,9 @@ public class MessageList extends K9Activity implements MessageListFragmentListen if (messageReference != null) { search = new LocalSearch(); search.addAccountUuid(messageReference.getAccountUuid()); String folderId = messageReference.getFolderServerId(); search.addAllowedFolder(folderId); drawer.selectFolderId(folderId); String folderServerId = messageReference.getFolderServerId(); search.addAllowedFolder(folderServerId); drawer.selectFolder(folderServerId); } if (search == null) { Loading Loading @@ -1711,9 +1699,9 @@ public class MessageList extends K9Activity implements MessageListFragmentListen List<String> folderServerIds = search.getFolderServerIds(); singleFolderMode = singleAccountMode && folderServerIds.size() == 1; if (singleFolderMode) { drawer.selectFolderId(folderServerIds.get(0)); drawer.selectFolder(folderServerIds.get(0)); } else { drawer.selectFolderId(null); drawer.selectFolder(null); } // now we know if we are in single account mode and need a subtitle Loading app/ui/src/main/java/com/fsck/k9/ui/K9Drawer.java +46 −49 Original line number Diff line number Diff line package com.fsck.k9.ui; import java.util.ArrayList; import java.util.List; import java.util.Collections; import java.util.List; import android.os.Bundle; import android.support.annotation.Nullable; Loading @@ -12,15 +13,13 @@ import android.view.View; import com.fsck.k9.DI; import com.fsck.k9.K9; import com.fsck.k9.ui.R; import com.fsck.k9.activity.MessageList; import com.fsck.k9.mailstore.Folder; import com.fsck.k9.ui.folders.FolderNameFormatter; import com.fsck.k9.activity.MessageList; import com.fsck.k9.ui.settings.SettingsActivity; import com.mikepenz.materialdrawer.Drawer; import com.mikepenz.materialdrawer.Drawer.OnDrawerItemClickListener; import com.mikepenz.materialdrawer.DrawerBuilder; import com.mikepenz.materialdrawer.model.BaseDrawerItem; import com.mikepenz.materialdrawer.model.DividerDrawerItem; import com.mikepenz.materialdrawer.model.PrimaryDrawerItem; import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem; Loading @@ -29,15 +28,18 @@ public class K9Drawer { // Bit shift for identifiers of user folders items, to leave space for other items private static final short DRAWER_FOLDER_SHIFT = 2; // Identifiers of static drawer items private static final long DRAWER_ID_UNIFIED_INBOX = 0; private static final long DRAWER_ID_PREFERENCES = 1; private int headerCount = 0; // Resources private final FolderNameFormatter folderNameFormatter = DI.get(FolderNameFormatter.class); private final Drawer drawer; private final MessageList parent; private int headerItemCount = 0; private int iconFolderInboxResId; private int iconFolderOutbotResId; private int iconFolderOutboxResId; private int iconFolderSentResId; private int iconFolderTrashResId; private int iconFolderDraftsResId; Loading @@ -45,13 +47,9 @@ public class K9Drawer { private int iconFolderSpamResId; private int iconFolderResId; private final List<Long> userFolderIds = new ArrayList<>(); private final List<Long> userFolderDrawerIds = new ArrayList<>(); private String openedFolderServerId; private final FolderNameFormatter folderNameFormatter = DI.get(FolderNameFormatter.class); private com.mikepenz.materialdrawer.Drawer drawer; private MessageList parent; private String openedFolder; public K9Drawer(MessageList parent, Bundle savedInstanceState) { this.parent = parent; Loading @@ -67,7 +65,13 @@ public class K9Drawer { .withSavedInstance(savedInstanceState) .build(); // header addHeaderItems(); addFooterItems(); initializeFolderIcons(); } private void addHeaderItems() { if (!K9.isHideSpecialAccounts()) { drawer.addItems(new PrimaryDrawerItem() .withName(R.string.integrated_inbox_title) Loading @@ -75,23 +79,22 @@ public class K9Drawer { .withIdentifier(DRAWER_ID_UNIFIED_INBOX), new DividerDrawerItem()); headerCount += 2; headerItemCount += 2; } } // footer private void addFooterItems() { drawer.addItems(new DividerDrawerItem(), new PrimaryDrawerItem() .withName(R.string.preferences_action) .withIcon(getResId(R.attr.iconActionSettings)) .withIdentifier(DRAWER_ID_PREFERENCES) .withSelectable(false)); initializeFolderIcons(); } private void initializeFolderIcons() { iconFolderInboxResId = getResId(R.attr.iconFolderInbox); iconFolderOutbotResId = getResId(R.attr.iconFolderOutbox); iconFolderOutboxResId = getResId(R.attr.iconFolderOutbox); iconFolderSentResId = getResId(R.attr.iconFolderSent); iconFolderTrashResId = getResId(R.attr.iconFolderTrash); iconFolderDraftsResId = getResId(R.attr.iconFolderDrafts); Loading @@ -112,7 +115,7 @@ public class K9Drawer { private int getFolderIcon(Folder folder) { switch (folder.getType()) { case INBOX: return iconFolderInboxResId; case OUTBOX: return iconFolderOutbotResId; case OUTBOX: return iconFolderOutboxResId; case SENT: return iconFolderSentResId; case TRASH: return iconFolderTrashResId; case DRAFTS: return iconFolderDraftsResId; Loading Loading @@ -146,12 +149,6 @@ public class K9Drawer { }; } /** * Set the user folders to display in the drawer * * @param folders * Folder objects to use */ public void setUserFolders(@Nullable List<Folder> folders) { clearUserFolders(); Loading @@ -161,41 +158,41 @@ public class K9Drawer { Collections.reverse(folders); long openedFolderId = -1; long openedFolderDrawerId = -1; for (Folder folder : folders) { long id = folder.getId() << DRAWER_FOLDER_SHIFT; long drawerId = folder.getId() << DRAWER_FOLDER_SHIFT; drawer.addItemAtPosition(new PrimaryDrawerItem() .withIcon(getFolderIcon(folder)) .withIdentifier(id) .withIdentifier(drawerId) .withTag(folder) .withName(getFolderDisplayName(folder)), headerCount); headerItemCount); userFolderIds.add(id); userFolderDrawerIds.add(drawerId); if (folder.getServerId().equals(openedFolder)) { openedFolderId = id; if (folder.getServerId().equals(openedFolderServerId)) { openedFolderDrawerId = drawerId; } } if (openedFolderId != -1) { drawer.setSelection(openedFolderId, false); if (openedFolderDrawerId != -1) { drawer.setSelection(openedFolderDrawerId, false); } } private void clearUserFolders() { for (long id : userFolderIds) { drawer.removeItem(id); for (long drawerId : userFolderDrawerIds) { drawer.removeItem(drawerId); } userFolderIds.clear(); userFolderDrawerIds.clear(); } public void selectFolderId(String folderId) { openedFolder = folderId; for (long id : userFolderIds) { Folder folder = (Folder) drawer.getDrawerItem(id).getTag(); if (folder.getServerId().equals(folderId)) { drawer.setSelection(id, false); public void selectFolder(String folderServerId) { openedFolderServerId = folderServerId; for (long drawerId : userFolderDrawerIds) { Folder folder = (Folder) drawer.getDrawerItem(drawerId).getTag(); if (folder.getServerId().equals(folderServerId)) { drawer.setSelection(drawerId, false); return; } } Loading Loading
app/ui/src/main/java/com/fsck/k9/activity/MessageList.java +8 −20 Original line number Diff line number Diff line package com.fsck.k9.activity; import java.util.ArrayList; import java.util.Collection; import java.util.List; Loading @@ -19,7 +18,6 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Parcelable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager.OnBackStackChangedListener; Loading @@ -27,7 +25,6 @@ import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.util.TypedValue; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; Loading @@ -46,13 +43,12 @@ import com.fsck.k9.DI; import com.fsck.k9.K9; import com.fsck.k9.K9.SplitViewMode; import com.fsck.k9.Preferences; import com.fsck.k9.controller.MessageReference; import com.fsck.k9.helper.Contacts; import com.fsck.k9.ui.R; import com.fsck.k9.activity.compose.MessageActions; import com.fsck.k9.activity.misc.SwipeGestureDetector.OnSwipeGestureListener; import com.fsck.k9.controller.MessageReference; import com.fsck.k9.fragment.MessageListFragment; import com.fsck.k9.fragment.MessageListFragment.MessageListFragmentListener; import com.fsck.k9.helper.Contacts; import com.fsck.k9.helper.ParcelableUtil; import com.fsck.k9.mailstore.Folder; import com.fsck.k9.mailstore.SearchStatusManager; Loading @@ -65,6 +61,7 @@ import com.fsck.k9.search.SearchSpecification.Attribute; import com.fsck.k9.search.SearchSpecification.SearchCondition; import com.fsck.k9.search.SearchSpecification.SearchField; import com.fsck.k9.ui.K9Drawer; import com.fsck.k9.ui.R; import com.fsck.k9.ui.messagelist.MessageListViewModel; import com.fsck.k9.ui.messagelist.MessageListViewModelFactory; import com.fsck.k9.ui.messageview.MessageViewFragment; Loading Loading @@ -178,15 +175,6 @@ public class MessageList extends K9Activity implements MessageListFragmentListen private TextView actionBarSubTitle; private Menu menu; private int iconFolderInboxResId; private int iconFolderOutbotResId; private int iconFolderSentResId; private int iconFolderTrashResId; private int iconFolderDraftsResId; private int iconFolderArchiveResId; private int iconFolderSpamResId; private int iconFolderResId; private ViewGroup messageViewContainer; private View messageViewPlaceHolder; Loading Loading @@ -490,9 +478,9 @@ public class MessageList extends K9Activity implements MessageListFragmentListen if (messageReference != null) { search = new LocalSearch(); search.addAccountUuid(messageReference.getAccountUuid()); String folderId = messageReference.getFolderServerId(); search.addAllowedFolder(folderId); drawer.selectFolderId(folderId); String folderServerId = messageReference.getFolderServerId(); search.addAllowedFolder(folderServerId); drawer.selectFolder(folderServerId); } if (search == null) { Loading Loading @@ -1711,9 +1699,9 @@ public class MessageList extends K9Activity implements MessageListFragmentListen List<String> folderServerIds = search.getFolderServerIds(); singleFolderMode = singleAccountMode && folderServerIds.size() == 1; if (singleFolderMode) { drawer.selectFolderId(folderServerIds.get(0)); drawer.selectFolder(folderServerIds.get(0)); } else { drawer.selectFolderId(null); drawer.selectFolder(null); } // now we know if we are in single account mode and need a subtitle Loading
app/ui/src/main/java/com/fsck/k9/ui/K9Drawer.java +46 −49 Original line number Diff line number Diff line package com.fsck.k9.ui; import java.util.ArrayList; import java.util.List; import java.util.Collections; import java.util.List; import android.os.Bundle; import android.support.annotation.Nullable; Loading @@ -12,15 +13,13 @@ import android.view.View; import com.fsck.k9.DI; import com.fsck.k9.K9; import com.fsck.k9.ui.R; import com.fsck.k9.activity.MessageList; import com.fsck.k9.mailstore.Folder; import com.fsck.k9.ui.folders.FolderNameFormatter; import com.fsck.k9.activity.MessageList; import com.fsck.k9.ui.settings.SettingsActivity; import com.mikepenz.materialdrawer.Drawer; import com.mikepenz.materialdrawer.Drawer.OnDrawerItemClickListener; import com.mikepenz.materialdrawer.DrawerBuilder; import com.mikepenz.materialdrawer.model.BaseDrawerItem; import com.mikepenz.materialdrawer.model.DividerDrawerItem; import com.mikepenz.materialdrawer.model.PrimaryDrawerItem; import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem; Loading @@ -29,15 +28,18 @@ public class K9Drawer { // Bit shift for identifiers of user folders items, to leave space for other items private static final short DRAWER_FOLDER_SHIFT = 2; // Identifiers of static drawer items private static final long DRAWER_ID_UNIFIED_INBOX = 0; private static final long DRAWER_ID_PREFERENCES = 1; private int headerCount = 0; // Resources private final FolderNameFormatter folderNameFormatter = DI.get(FolderNameFormatter.class); private final Drawer drawer; private final MessageList parent; private int headerItemCount = 0; private int iconFolderInboxResId; private int iconFolderOutbotResId; private int iconFolderOutboxResId; private int iconFolderSentResId; private int iconFolderTrashResId; private int iconFolderDraftsResId; Loading @@ -45,13 +47,9 @@ public class K9Drawer { private int iconFolderSpamResId; private int iconFolderResId; private final List<Long> userFolderIds = new ArrayList<>(); private final List<Long> userFolderDrawerIds = new ArrayList<>(); private String openedFolderServerId; private final FolderNameFormatter folderNameFormatter = DI.get(FolderNameFormatter.class); private com.mikepenz.materialdrawer.Drawer drawer; private MessageList parent; private String openedFolder; public K9Drawer(MessageList parent, Bundle savedInstanceState) { this.parent = parent; Loading @@ -67,7 +65,13 @@ public class K9Drawer { .withSavedInstance(savedInstanceState) .build(); // header addHeaderItems(); addFooterItems(); initializeFolderIcons(); } private void addHeaderItems() { if (!K9.isHideSpecialAccounts()) { drawer.addItems(new PrimaryDrawerItem() .withName(R.string.integrated_inbox_title) Loading @@ -75,23 +79,22 @@ public class K9Drawer { .withIdentifier(DRAWER_ID_UNIFIED_INBOX), new DividerDrawerItem()); headerCount += 2; headerItemCount += 2; } } // footer private void addFooterItems() { drawer.addItems(new DividerDrawerItem(), new PrimaryDrawerItem() .withName(R.string.preferences_action) .withIcon(getResId(R.attr.iconActionSettings)) .withIdentifier(DRAWER_ID_PREFERENCES) .withSelectable(false)); initializeFolderIcons(); } private void initializeFolderIcons() { iconFolderInboxResId = getResId(R.attr.iconFolderInbox); iconFolderOutbotResId = getResId(R.attr.iconFolderOutbox); iconFolderOutboxResId = getResId(R.attr.iconFolderOutbox); iconFolderSentResId = getResId(R.attr.iconFolderSent); iconFolderTrashResId = getResId(R.attr.iconFolderTrash); iconFolderDraftsResId = getResId(R.attr.iconFolderDrafts); Loading @@ -112,7 +115,7 @@ public class K9Drawer { private int getFolderIcon(Folder folder) { switch (folder.getType()) { case INBOX: return iconFolderInboxResId; case OUTBOX: return iconFolderOutbotResId; case OUTBOX: return iconFolderOutboxResId; case SENT: return iconFolderSentResId; case TRASH: return iconFolderTrashResId; case DRAFTS: return iconFolderDraftsResId; Loading Loading @@ -146,12 +149,6 @@ public class K9Drawer { }; } /** * Set the user folders to display in the drawer * * @param folders * Folder objects to use */ public void setUserFolders(@Nullable List<Folder> folders) { clearUserFolders(); Loading @@ -161,41 +158,41 @@ public class K9Drawer { Collections.reverse(folders); long openedFolderId = -1; long openedFolderDrawerId = -1; for (Folder folder : folders) { long id = folder.getId() << DRAWER_FOLDER_SHIFT; long drawerId = folder.getId() << DRAWER_FOLDER_SHIFT; drawer.addItemAtPosition(new PrimaryDrawerItem() .withIcon(getFolderIcon(folder)) .withIdentifier(id) .withIdentifier(drawerId) .withTag(folder) .withName(getFolderDisplayName(folder)), headerCount); headerItemCount); userFolderIds.add(id); userFolderDrawerIds.add(drawerId); if (folder.getServerId().equals(openedFolder)) { openedFolderId = id; if (folder.getServerId().equals(openedFolderServerId)) { openedFolderDrawerId = drawerId; } } if (openedFolderId != -1) { drawer.setSelection(openedFolderId, false); if (openedFolderDrawerId != -1) { drawer.setSelection(openedFolderDrawerId, false); } } private void clearUserFolders() { for (long id : userFolderIds) { drawer.removeItem(id); for (long drawerId : userFolderDrawerIds) { drawer.removeItem(drawerId); } userFolderIds.clear(); userFolderDrawerIds.clear(); } public void selectFolderId(String folderId) { openedFolder = folderId; for (long id : userFolderIds) { Folder folder = (Folder) drawer.getDrawerItem(id).getTag(); if (folder.getServerId().equals(folderId)) { drawer.setSelection(id, false); public void selectFolder(String folderServerId) { openedFolderServerId = folderServerId; for (long drawerId : userFolderDrawerIds) { Folder folder = (Folder) drawer.getDrawerItem(drawerId).getTag(); if (folder.getServerId().equals(folderServerId)) { drawer.setSelection(drawerId, false); return; } } Loading