Loading legacy/ui/folder/src/main/java/app/k9mail/legacy/ui/folder/DisplayFolderRepository.kt +9 −1 Original line number Diff line number Diff line Loading @@ -57,7 +57,15 @@ class DisplayFolderRepository( }.sortedWith(sortForDisplay) } fun getDisplayFoldersFlow(account: Account, displayMode: Account.FolderMode): Flow<List<DisplayFolder>> { fun getDisplayFoldersFlow(account: Account, includeHiddenFolders: Boolean): Flow<List<DisplayFolder>> { return if (includeHiddenFolders) { getDisplayFoldersFlow(account, FolderMode.ALL) } else { getDisplayFoldersFlow(account.uuid) } } private fun getDisplayFoldersFlow(account: Account, displayMode: Account.FolderMode): Flow<List<DisplayFolder>> { val messageStore = messageStoreManager.getMessageStore(account.uuid) return callbackFlow { Loading legacy/ui/legacy/src/main/java/com/fsck/k9/ui/choosefolder/ChooseFolderActivity.kt +13 −16 Original line number Diff line number Diff line Loading @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.RecyclerView import app.k9mail.core.mail.folder.api.FolderType import app.k9mail.core.ui.legacy.designsystem.atom.icon.Icons import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.FolderMode import app.k9mail.legacy.message.controller.MessageReference import app.k9mail.legacy.ui.folder.DisplayFolder import app.k9mail.legacy.ui.folder.FolderIconProvider Loading Loading @@ -64,10 +63,10 @@ class ChooseFolderActivity : K9Activity() { updateFolderList(folders) } val savedDisplayMode = savedInstanceState?.getString(STATE_DISPLAY_MODE)?.let { FolderMode.valueOf(it) } val displayMode = savedDisplayMode ?: getInitialDisplayMode() val savedShowHiddenFolders = savedInstanceState?.getBoolean(STATE_SHOW_HIDDEN_FOLDERS) val showHiddenFolders = savedShowHiddenFolders ?: false viewModel.setDisplayMode(account, displayMode) viewModel.setDisplayMode(account, showHiddenFolders) } private fun decodeArguments(savedInstanceState: Bundle?): Boolean { Loading @@ -88,10 +87,6 @@ class ChooseFolderActivity : K9Activity() { return true } private fun getInitialDisplayMode(): FolderMode { return account.folderDisplayMode } private fun initializeActionBar() { val actionBar = supportActionBar ?: error("Action bar missing") actionBar.setDisplayHomeAsUpEnabled(true) Loading Loading @@ -146,7 +141,7 @@ class ChooseFolderActivity : K9Activity() { override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) scrollToFolderId?.let { folderId -> outState.putLong(STATE_SCROLL_TO_FOLDER_ID, folderId) } outState.putString(STATE_DISPLAY_MODE, viewModel.currentDisplayMode?.name) outState.putBoolean(STATE_SHOW_HIDDEN_FOLDERS, viewModel.isShowHiddenFolders) } override fun onCreateOptionsMenu(menu: Menu): Boolean { Loading @@ -156,6 +151,11 @@ class ChooseFolderActivity : K9Activity() { return true } override fun onPrepareOptionsMenu(menu: Menu?): Boolean { menu?.findItem(R.id.toggle_hidden_folders)?.setChecked(viewModel.isShowHiddenFolders) return super.onPrepareOptionsMenu(menu) } private fun configureFolderSearchView(menu: Menu) { val folderMenuItem = menu.findItem(R.id.filter_folders) val folderSearchView = folderMenuItem.actionView as SearchView Loading @@ -178,10 +178,7 @@ class ChooseFolderActivity : K9Activity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { android.R.id.home -> finish() R.id.display_1st_class -> setDisplayMode(FolderMode.FIRST_CLASS) R.id.display_1st_and_2nd_class -> setDisplayMode(FolderMode.FIRST_AND_SECOND_CLASS) R.id.display_not_second_class -> setDisplayMode(FolderMode.NOT_SECOND_CLASS) R.id.display_all -> setDisplayMode(FolderMode.ALL) R.id.toggle_hidden_folders -> setShowHiddenFolders(item.isChecked.not()) R.id.list_folders -> refreshFolderList() else -> return super.onOptionsItemSelected(item) } Loading @@ -192,8 +189,8 @@ class ChooseFolderActivity : K9Activity() { messagingController.refreshFolderList(account) } private fun setDisplayMode(displayMode: FolderMode) { viewModel.setDisplayMode(account, displayMode) private fun setShowHiddenFolders(enabled: Boolean) { viewModel.setDisplayMode(account, enabled) } private fun returnResult(folderId: Long, displayName: String) { Loading Loading @@ -239,7 +236,7 @@ class ChooseFolderActivity : K9Activity() { companion object { private const val STATE_SCROLL_TO_FOLDER_ID = "scrollToFolderId" private const val STATE_DISPLAY_MODE = "displayMode" private const val STATE_SHOW_HIDDEN_FOLDERS = "showHiddenFolders" private const val EXTRA_ACCOUNT = "accountUuid" private const val EXTRA_CURRENT_FOLDER_ID = "currentFolderId" private const val EXTRA_SCROLL_TO_FOLDER_ID = "scrollToFolderId" Loading legacy/ui/legacy/src/main/java/com/fsck/k9/ui/choosefolder/ChooseFolderViewModel.kt +7 −8 Original line number Diff line number Diff line Loading @@ -5,7 +5,6 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.asLiveData import androidx.lifecycle.viewModelScope import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.FolderMode import app.k9mail.legacy.ui.folder.DisplayFolder import app.k9mail.legacy.ui.folder.DisplayFolderRepository import kotlinx.coroutines.ExperimentalCoroutinesApi Loading @@ -19,23 +18,23 @@ class ChooseFolderViewModel( ) : ViewModel() { private val inputFlow = MutableSharedFlow<DisplayMode>(replay = 1) private val foldersFlow = inputFlow .flatMapLatest { (account, displayMode) -> folderRepository.getDisplayFoldersFlow(account, displayMode) .flatMapLatest { (account, showHiddenFolders) -> folderRepository.getDisplayFoldersFlow(account, showHiddenFolders) } var currentDisplayMode: FolderMode? = null var isShowHiddenFolders: Boolean = false private set fun getFolders(): LiveData<List<DisplayFolder>> { return foldersFlow.asLiveData() } fun setDisplayMode(account: Account, displayMode: FolderMode) { currentDisplayMode = displayMode fun setDisplayMode(account: Account, showHiddenFolders: Boolean) { isShowHiddenFolders = showHiddenFolders viewModelScope.launch { inputFlow.emit(DisplayMode(account, displayMode)) inputFlow.emit(DisplayMode(account, showHiddenFolders)) } } } private data class DisplayMode(val account: Account, val displayMode: FolderMode) private data class DisplayMode(val account: Account, val showHiddenFolders: Boolean) legacy/ui/legacy/src/main/java/com/fsck/k9/ui/managefolders/ManageFoldersFragment.kt +0 −11 Original line number Diff line number Diff line Loading @@ -121,10 +121,6 @@ class ManageFoldersFragment : Fragment() { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.list_folders -> refreshFolderList() R.id.display_1st_class -> setDisplayMode(Account.FolderMode.FIRST_CLASS) R.id.display_1st_and_2nd_class -> setDisplayMode(Account.FolderMode.FIRST_AND_SECOND_CLASS) R.id.display_not_second_class -> setDisplayMode(Account.FolderMode.NOT_SECOND_CLASS) R.id.display_all -> setDisplayMode(Account.FolderMode.ALL) else -> return super.onOptionsItemSelected(item) } Loading @@ -135,13 +131,6 @@ class ManageFoldersFragment : Fragment() { messagingController.refreshFolderList(account) } private fun setDisplayMode(newMode: Account.FolderMode) { account.folderDisplayMode = newMode preferences.saveAccount(account) itemAdapter.filter(null) } private fun folderListFilter(item: FolderListItem, constraint: CharSequence?): Boolean { if (constraint.isNullOrEmpty()) return true Loading legacy/ui/legacy/src/main/java/com/fsck/k9/ui/managefolders/ManageFoldersViewModel.kt +1 −1 Original line number Diff line number Diff line Loading @@ -11,6 +11,6 @@ class ManageFoldersViewModel( private val folderRepository: DisplayFolderRepository, ) : ViewModel() { fun getFolders(account: Account): LiveData<List<DisplayFolder>> { return folderRepository.getDisplayFoldersFlow(account.uuid).asLiveData() return folderRepository.getDisplayFoldersFlow(account, includeHiddenFolders = true).asLiveData() } } Loading
legacy/ui/folder/src/main/java/app/k9mail/legacy/ui/folder/DisplayFolderRepository.kt +9 −1 Original line number Diff line number Diff line Loading @@ -57,7 +57,15 @@ class DisplayFolderRepository( }.sortedWith(sortForDisplay) } fun getDisplayFoldersFlow(account: Account, displayMode: Account.FolderMode): Flow<List<DisplayFolder>> { fun getDisplayFoldersFlow(account: Account, includeHiddenFolders: Boolean): Flow<List<DisplayFolder>> { return if (includeHiddenFolders) { getDisplayFoldersFlow(account, FolderMode.ALL) } else { getDisplayFoldersFlow(account.uuid) } } private fun getDisplayFoldersFlow(account: Account, displayMode: Account.FolderMode): Flow<List<DisplayFolder>> { val messageStore = messageStoreManager.getMessageStore(account.uuid) return callbackFlow { Loading
legacy/ui/legacy/src/main/java/com/fsck/k9/ui/choosefolder/ChooseFolderActivity.kt +13 −16 Original line number Diff line number Diff line Loading @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.RecyclerView import app.k9mail.core.mail.folder.api.FolderType import app.k9mail.core.ui.legacy.designsystem.atom.icon.Icons import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.FolderMode import app.k9mail.legacy.message.controller.MessageReference import app.k9mail.legacy.ui.folder.DisplayFolder import app.k9mail.legacy.ui.folder.FolderIconProvider Loading Loading @@ -64,10 +63,10 @@ class ChooseFolderActivity : K9Activity() { updateFolderList(folders) } val savedDisplayMode = savedInstanceState?.getString(STATE_DISPLAY_MODE)?.let { FolderMode.valueOf(it) } val displayMode = savedDisplayMode ?: getInitialDisplayMode() val savedShowHiddenFolders = savedInstanceState?.getBoolean(STATE_SHOW_HIDDEN_FOLDERS) val showHiddenFolders = savedShowHiddenFolders ?: false viewModel.setDisplayMode(account, displayMode) viewModel.setDisplayMode(account, showHiddenFolders) } private fun decodeArguments(savedInstanceState: Bundle?): Boolean { Loading @@ -88,10 +87,6 @@ class ChooseFolderActivity : K9Activity() { return true } private fun getInitialDisplayMode(): FolderMode { return account.folderDisplayMode } private fun initializeActionBar() { val actionBar = supportActionBar ?: error("Action bar missing") actionBar.setDisplayHomeAsUpEnabled(true) Loading Loading @@ -146,7 +141,7 @@ class ChooseFolderActivity : K9Activity() { override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) scrollToFolderId?.let { folderId -> outState.putLong(STATE_SCROLL_TO_FOLDER_ID, folderId) } outState.putString(STATE_DISPLAY_MODE, viewModel.currentDisplayMode?.name) outState.putBoolean(STATE_SHOW_HIDDEN_FOLDERS, viewModel.isShowHiddenFolders) } override fun onCreateOptionsMenu(menu: Menu): Boolean { Loading @@ -156,6 +151,11 @@ class ChooseFolderActivity : K9Activity() { return true } override fun onPrepareOptionsMenu(menu: Menu?): Boolean { menu?.findItem(R.id.toggle_hidden_folders)?.setChecked(viewModel.isShowHiddenFolders) return super.onPrepareOptionsMenu(menu) } private fun configureFolderSearchView(menu: Menu) { val folderMenuItem = menu.findItem(R.id.filter_folders) val folderSearchView = folderMenuItem.actionView as SearchView Loading @@ -178,10 +178,7 @@ class ChooseFolderActivity : K9Activity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { android.R.id.home -> finish() R.id.display_1st_class -> setDisplayMode(FolderMode.FIRST_CLASS) R.id.display_1st_and_2nd_class -> setDisplayMode(FolderMode.FIRST_AND_SECOND_CLASS) R.id.display_not_second_class -> setDisplayMode(FolderMode.NOT_SECOND_CLASS) R.id.display_all -> setDisplayMode(FolderMode.ALL) R.id.toggle_hidden_folders -> setShowHiddenFolders(item.isChecked.not()) R.id.list_folders -> refreshFolderList() else -> return super.onOptionsItemSelected(item) } Loading @@ -192,8 +189,8 @@ class ChooseFolderActivity : K9Activity() { messagingController.refreshFolderList(account) } private fun setDisplayMode(displayMode: FolderMode) { viewModel.setDisplayMode(account, displayMode) private fun setShowHiddenFolders(enabled: Boolean) { viewModel.setDisplayMode(account, enabled) } private fun returnResult(folderId: Long, displayName: String) { Loading Loading @@ -239,7 +236,7 @@ class ChooseFolderActivity : K9Activity() { companion object { private const val STATE_SCROLL_TO_FOLDER_ID = "scrollToFolderId" private const val STATE_DISPLAY_MODE = "displayMode" private const val STATE_SHOW_HIDDEN_FOLDERS = "showHiddenFolders" private const val EXTRA_ACCOUNT = "accountUuid" private const val EXTRA_CURRENT_FOLDER_ID = "currentFolderId" private const val EXTRA_SCROLL_TO_FOLDER_ID = "scrollToFolderId" Loading
legacy/ui/legacy/src/main/java/com/fsck/k9/ui/choosefolder/ChooseFolderViewModel.kt +7 −8 Original line number Diff line number Diff line Loading @@ -5,7 +5,6 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.asLiveData import androidx.lifecycle.viewModelScope import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.FolderMode import app.k9mail.legacy.ui.folder.DisplayFolder import app.k9mail.legacy.ui.folder.DisplayFolderRepository import kotlinx.coroutines.ExperimentalCoroutinesApi Loading @@ -19,23 +18,23 @@ class ChooseFolderViewModel( ) : ViewModel() { private val inputFlow = MutableSharedFlow<DisplayMode>(replay = 1) private val foldersFlow = inputFlow .flatMapLatest { (account, displayMode) -> folderRepository.getDisplayFoldersFlow(account, displayMode) .flatMapLatest { (account, showHiddenFolders) -> folderRepository.getDisplayFoldersFlow(account, showHiddenFolders) } var currentDisplayMode: FolderMode? = null var isShowHiddenFolders: Boolean = false private set fun getFolders(): LiveData<List<DisplayFolder>> { return foldersFlow.asLiveData() } fun setDisplayMode(account: Account, displayMode: FolderMode) { currentDisplayMode = displayMode fun setDisplayMode(account: Account, showHiddenFolders: Boolean) { isShowHiddenFolders = showHiddenFolders viewModelScope.launch { inputFlow.emit(DisplayMode(account, displayMode)) inputFlow.emit(DisplayMode(account, showHiddenFolders)) } } } private data class DisplayMode(val account: Account, val displayMode: FolderMode) private data class DisplayMode(val account: Account, val showHiddenFolders: Boolean)
legacy/ui/legacy/src/main/java/com/fsck/k9/ui/managefolders/ManageFoldersFragment.kt +0 −11 Original line number Diff line number Diff line Loading @@ -121,10 +121,6 @@ class ManageFoldersFragment : Fragment() { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.list_folders -> refreshFolderList() R.id.display_1st_class -> setDisplayMode(Account.FolderMode.FIRST_CLASS) R.id.display_1st_and_2nd_class -> setDisplayMode(Account.FolderMode.FIRST_AND_SECOND_CLASS) R.id.display_not_second_class -> setDisplayMode(Account.FolderMode.NOT_SECOND_CLASS) R.id.display_all -> setDisplayMode(Account.FolderMode.ALL) else -> return super.onOptionsItemSelected(item) } Loading @@ -135,13 +131,6 @@ class ManageFoldersFragment : Fragment() { messagingController.refreshFolderList(account) } private fun setDisplayMode(newMode: Account.FolderMode) { account.folderDisplayMode = newMode preferences.saveAccount(account) itemAdapter.filter(null) } private fun folderListFilter(item: FolderListItem, constraint: CharSequence?): Boolean { if (constraint.isNullOrEmpty()) return true Loading
legacy/ui/legacy/src/main/java/com/fsck/k9/ui/managefolders/ManageFoldersViewModel.kt +1 −1 Original line number Diff line number Diff line Loading @@ -11,6 +11,6 @@ class ManageFoldersViewModel( private val folderRepository: DisplayFolderRepository, ) : ViewModel() { fun getFolders(account: Account): LiveData<List<DisplayFolder>> { return folderRepository.getDisplayFoldersFlow(account.uuid).asLiveData() return folderRepository.getDisplayFoldersFlow(account, includeHiddenFolders = true).asLiveData() } }