Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 66903ae6 authored by cketti's avatar cketti
Browse files

Revert "Button bar in navigation drawer"

This reverts commit 96b7ca26
parent 3046312b
Loading
Loading
Loading
Loading
+48 −59
Original line number Diff line number Diff line
package com.fsck.k9.ui

import android.annotation.SuppressLint
import android.content.Context
import android.content.res.ColorStateList
import android.content.res.Resources
@@ -8,10 +7,8 @@ import android.graphics.PorterDuff
import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Bundle
import android.view.View
import android.util.TypedValue
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.Toast
import androidx.core.view.GravityCompat
import androidx.drawerlayout.widget.DrawerLayout
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
@@ -49,10 +46,12 @@ import com.mikepenz.materialdrawer.model.interfaces.selectedColorInt
import com.mikepenz.materialdrawer.util.AbstractDrawerImageLoader
import com.mikepenz.materialdrawer.util.DrawerImageLoader
import com.mikepenz.materialdrawer.util.addItems
import com.mikepenz.materialdrawer.util.addStickyFooterItem
import com.mikepenz.materialdrawer.util.getDrawerItem
import com.mikepenz.materialdrawer.util.removeAllItems
import com.mikepenz.materialdrawer.widget.AccountHeaderView
import com.mikepenz.materialdrawer.widget.MaterialDrawerSliderView
import java.util.ArrayList
import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
@@ -72,12 +71,6 @@ class K9Drawer(private val parent: MessageList, savedInstanceState: Bundle?) : K
    private val messagingController: MessagingController by inject()
    private val accountImageLoader: AccountImageLoader by inject()

    private val buttonRow: LinearLayout = parent.findViewById(R.id.material_drawer_button_row)
    private val buttonSettings: ImageView = parent.findViewById(R.id.drawer_button_settings)
    private val buttonManageFolders: ImageView = parent.findViewById(R.id.drawer_button_manage_folders)
    private val buttonRefreshAll: ImageView = parent.findViewById(R.id.drawer_button_refresh_all)
    private val buttonRefreshAccount: ImageView = parent.findViewById(R.id.drawer_button_refresh_account)

    private val drawer: DrawerLayout = parent.findViewById(R.id.drawerLayout)
    private val sliderView: MaterialDrawerSliderView = parent.findViewById(R.id.material_drawer_slider)
    private val headerView: AccountHeaderView = AccountHeaderView(parent).apply {
@@ -109,7 +102,6 @@ class K9Drawer(private val parent: MessageList, savedInstanceState: Bundle?) : K

        initializeImageLoader()
        configureAccountHeader()
        configureButtonBar()

        drawer.addDrawerListener(parent.createDrawerListener())
        sliderView.tintStatusBar = true
@@ -136,6 +128,8 @@ class K9Drawer(private val parent: MessageList, savedInstanceState: Bundle?) : K
            }
        }

        addFooterItems()

        accountsViewModel.displayAccountsLiveData.observeNotNull(parent) { accounts ->
            setAccounts(accounts)
        }
@@ -170,7 +164,7 @@ class K9Drawer(private val parent: MessageList, savedInstanceState: Bundle?) : K
            val account = (profile as ProfileDrawerItem).tag as Account
            openedAccountUuid = account.uuid
            val eventHandled = !parent.openRealAccount(account)
            updateButtonBarVisibility(false)
            updateUserAccountsAndFolders(account)

            eventHandled
        }
@@ -222,36 +216,6 @@ class K9Drawer(private val parent: MessageList, savedInstanceState: Bundle?) : K
        return if (unreadCount > 0) unreadCount.toString() else null
    }

    private fun updateButtonBarVisibility(showsAccounts: Boolean) {
        buttonManageFolders.visibility = if (showsAccounts) View.GONE else View.VISIBLE
        buttonRefreshAccount.visibility = if (showsAccounts) View.GONE else View.VISIBLE
        buttonRefreshAll.visibility = if (showsAccounts) View.VISIBLE else View.GONE
    }

    @SuppressLint("ClickableViewAccessibility")
    private fun configureButtonBar() {
        headerView.onAccountHeaderSelectionViewClickListener = { view, profile ->
            updateButtonBarVisibility(!headerView.selectionListShown)
            false
        }
        updateButtonBarVisibility(headerView.selectionListShown)

        buttonRow.setOnTouchListener { _, _ -> true } // To avoid touch going through
        buttonSettings.setOnClickListener { SettingsActivity.launch(parent) }
        buttonManageFolders.setOnClickListener { parent.launchManageFoldersScreen() }
        buttonRefreshAccount.setOnClickListener { refreshAndShowProgress(headerView.activeProfile?.tag as Account) }
        buttonRefreshAll.setOnClickListener { refreshAndShowProgress(null) }

        val showContentDescription = View.OnLongClickListener { v ->
            Toast.makeText(parent, v.contentDescription, Toast.LENGTH_SHORT).show()
            true
        }
        buttonSettings.setOnLongClickListener(showContentDescription)
        buttonManageFolders.setOnLongClickListener(showContentDescription)
        buttonRefreshAccount.setOnLongClickListener(showContentDescription)
        buttonRefreshAll.setOnLongClickListener(showContentDescription)
    }

    private fun setAccounts(displayAccounts: List<DisplayAccount>) {
        val oldSelectedBackgroundColor = selectedBackgroundColor

@@ -303,6 +267,35 @@ class K9Drawer(private val parent: MessageList, savedInstanceState: Bundle?) : K
        }
    }

    private fun addFooterItems() {
        sliderView.addStickyFooterItem(
            PrimaryDrawerItem().apply {
                nameRes = R.string.folders_action
                iconRes = folderIconProvider.iconFolderResId
                identifier = DRAWER_ID_FOLDERS
                isSelectable = false
            }
        )

        sliderView.addStickyFooterItem(
            PrimaryDrawerItem().apply {
                nameRes = R.string.preferences_action
                iconRes = getResId(R.attr.iconActionSettings)
                identifier = DRAWER_ID_PREFERENCES
                isSelectable = false
            }
        )
    }

    private fun getResId(resAttribute: Int): Int {
        val typedValue = TypedValue()
        val found = parent.theme.resolveAttribute(resAttribute, typedValue, true)
        if (!found) {
            throw AssertionError("Couldn't find resource with attribute $resAttribute")
        }
        return typedValue.resourceId
    }

    private fun getFolderDisplayName(folder: Folder): String {
        return folderNameFormatter.displayName(folder)
    }
@@ -314,18 +307,11 @@ class K9Drawer(private val parent: MessageList, savedInstanceState: Bundle?) : K
            foldersViewModel.loadFolders(account)
        }

        swipeRefreshLayout.setOnRefreshListener {
            refreshAndShowProgress(if (headerView.selectionListShown) null else account)
        }
    }

    private fun refreshAndShowProgress(account: Account?) {
        // Account can be null to refresh all (unified inbox or account list).
        if (!swipeRefreshLayout.isRefreshing) {
            swipeRefreshLayout.isRefreshing = true
        }
        swipeRefreshLayout.setOnRefreshListener {
            val accountToRefresh = if (headerView.selectionListShown) null else account
            messagingController.checkMail(
            account, true, true,
                accountToRefresh, true, true,
                object : SimpleMessagingListener() {
                    override fun checkMailFinished(context: Context?, account: Account?) {
                        swipeRefreshLayout.post {
@@ -335,6 +321,7 @@ class K9Drawer(private val parent: MessageList, savedInstanceState: Bundle?) : K
                }
            )
        }
    }

    private fun initializeWithAccountColor(account: Account) {
        getDrawerColorsForAccount(account).let { drawerColors ->
@@ -350,6 +337,8 @@ class K9Drawer(private val parent: MessageList, savedInstanceState: Bundle?) : K

    private fun handleItemClickListener(drawerItem: IDrawerItem<*>) {
        when (drawerItem.identifier) {
            DRAWER_ID_PREFERENCES -> SettingsActivity.launch(parent)
            DRAWER_ID_FOLDERS -> parent.launchManageFoldersScreen()
            DRAWER_ID_UNIFIED_INBOX -> parent.openUnifiedInbox()
            else -> {
                val folder = drawerItem.tag as Folder
+0 −10
Original line number Diff line number Diff line
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:tint="?attr/colorControlNormal"
    android:viewportWidth="24"
    android:viewportHeight="24">
    <path
        android:fillColor="@android:color/white"
        android:pathData="M4 4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H12.08A7 7 0 0 1 12 19A7 7 0 0 1 19 12A7 7 0 0 1 22 12.69V8C22 6.89 21.1 6 20 6H12L10 4H4M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14H18M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z" />
</vector>
+0 −10
Original line number Diff line number Diff line
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:tint="?attr/colorControlNormal"
    android:viewportWidth="24"
    android:viewportHeight="24">
    <path
        android:fillColor="@android:color/white"
        android:pathData="M 15.857724,5.2112257 C 14.378581,4.5245963 13.792531,3.9942489 12,4 7.5800227,4.014181 4.01,7.58 4.01,12 c 0,4.42 3.57,8 7.99,8 3.73,0 7.524253,-2.99534 8.059024,-6.794874 L 17.65,14 C 16.83,16.33 14.61,18 12,18 8.69,18 6,15.31 6,12 6,8.69 8.6900019,6.0035629 12,6 c 1.452738,-0.00156 2.062645,0.5403058 3.076787,1.0329571 l -1.787121,3.6480969 6.559477,-2.4440265 -2.444026,-6.559477 z m 4.452463,0.308222 1.367566,3.6691007 -3.693934,1.4494656 -0.757545,1.913288 6.559477,-2.444026 -2.444026,-6.559477 z" />
</vector>
+6 −68
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/material_drawer_swipe_refresh"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_gravity="start">

    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
        android:id="@+id/material_drawer_swipe_refresh"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1">

    <com.mikepenz.materialdrawer.widget.MaterialDrawerSliderView
        android:id="@+id/material_drawer_slider"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="?attr/messageListDividerColor" />

    <LinearLayout
        android:id="@+id/material_drawer_button_row"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="4dp"
        android:background="?android:attr/windowBackground">
        <ImageView
            android:id="@+id/drawer_button_refresh_account"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="?attr/iconActionRefresh"
            android:contentDescription="@string/check_mail_action"
            android:padding="12dp"
            android:background="?android:attr/selectableItemBackgroundBorderless" />

        <ImageView
            android:id="@+id/drawer_button_refresh_all"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_refresh_all"
            android:contentDescription="@string/check_all_mail_action"
            android:padding="12dp"
            android:background="?android:attr/selectableItemBackgroundBorderless" />

        <View
            android:layout_width="0dp"
            android:layout_height="1dp"
            android:layout_weight="1" />

        <ImageView
            android:id="@+id/drawer_button_manage_folders"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_folder_manage"
            android:contentDescription="@string/folders_action"
            android:padding="12dp"
            android:background="?android:attr/selectableItemBackgroundBorderless" />

        <ImageView
            android:id="@+id/drawer_button_settings"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="?attr/iconActionSettings"
            android:contentDescription="@string/preferences_action"
            android:padding="12dp"
            android:background="?android:attr/selectableItemBackgroundBorderless" />
    </LinearLayout>

</LinearLayout>
+0 −1
Original line number Diff line number Diff line
@@ -116,7 +116,6 @@ Please submit bug reports, contribute new features and ask questions at
    <string name="discard_action">Discard</string>
    <string name="save_draft_action">Save as draft</string>
    <string name="check_mail_action">Check mail</string>
    <string name="check_all_mail_action">Check mail in all accounts</string>
    <string name="send_messages_action">Send messages</string>
    <string name="refresh_folders_action">Refresh folder list</string>
    <string name="filter_folders_action">Find folder</string>