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

Unverified Commit 599c9056 authored by Arnau Mora's avatar Arnau Mora Committed by GitHub
Browse files

Replace deprecated menu overrides (#443)



* Migrated to menu provider

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Removed override

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Cleanup

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Fixed menus

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>

* Minor changes

---------

Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>
Co-authored-by: default avatarRicki Hirner <hirner@bitfire.at>
parent c8cd6d78
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
import androidx.core.text.HtmlCompat
import androidx.core.view.MenuProvider
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
@@ -81,14 +82,24 @@ class AboutActivity: AppCompatActivity() {

        binding.viewpager.adapter = TabsAdapter(supportFragmentManager)
        binding.tabs.setupWithViewPager(binding.viewpager, false)
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        addMenuProvider(object : MenuProvider {
            override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
                menuInflater.inflate(R.menu.activity_about, menu)
        return true
            }

    fun showWebsite(item: MenuItem) {
            override fun onMenuItemSelected(menuItem: MenuItem) =
                when (menuItem.itemId) {
                    R.id.show_website -> {
                        showWebsite()
                        true
                    }
                    else -> false
                }
        })
    }

    fun showWebsite() {
        UiUtils.launchUri(this, App.homepageUrl(this))
    }

+23 −10
Original line number Diff line number Diff line
@@ -20,10 +20,13 @@ import android.provider.Settings
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.annotation.AnyThread
import androidx.core.content.ContextCompat
import androidx.core.view.MenuHost
import androidx.core.view.MenuProvider
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.AndroidViewModel
@@ -58,8 +61,6 @@ class AccountListFragment: Fragment() {
    private var syncStatusSnackbar: Snackbar? = null

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
        setHasOptionsMenu(true)

        _binding = AccountListBinding.inflate(inflater, container, false)
        return binding.root
    }
@@ -132,17 +133,29 @@ class AccountListFragment: Fragment() {
            accountAdapter.submitList(accounts)
            requireActivity().invalidateOptionsMenu()
        }

        requireActivity().addMenuProvider(object : MenuProvider {
            override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
                menuInflater.inflate(R.menu.activity_accounts, menu)
            }

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) =
        inflater.inflate(R.menu.activity_accounts, menu)
            override fun onMenuItemSelected(menuItem: MenuItem) =
                when (menuItem.itemId) {
                    R.id.syncAll -> {
                        (activity as AccountsActivity).syncAllAccounts()
                        true
                    }
                    else -> false
                }

    override fun onPrepareOptionsMenu(menu: Menu) {
            override fun onPrepareMenu(menu: Menu) {
                // Show "Sync all" only when there is at least one account
                model.accounts.value?.let { accounts ->
                    menu.findItem(R.id.syncAll).setVisible(accounts.isNotEmpty())
                }
            }
        })
    }

    override fun onResume() {
        super.onResume()
+1 −1
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@ class AccountsActivity: AppCompatActivity(), NavigationView.OnNavigationItemSele
    private fun allAccounts() =
            AccountManager.get(this).getAccountsByType(getString(R.string.account_type))

    fun syncAllAccounts(item: MenuItem? = null) {
    fun syncAllAccounts() {
        if (Build.VERSION.SDK_INT >= 25)
            getSystemService<ShortcutManager>()?.reportShortcutUsed(UiUtils.SHORTCUT_SYNC_ALL)

+27 −7
Original line number Diff line number Diff line
@@ -13,10 +13,12 @@ import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.TooltipCompat
import androidx.core.view.MenuProvider
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.*
import androidx.viewpager2.adapter.FragmentStateAdapter
@@ -105,27 +107,45 @@ class AccountActivity: AppCompatActivity() {
                SyncWorker.enqueueAllAuthorities(this, model.account)
            }
        }
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        addMenuProvider(object : MenuProvider {
            override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
                menuInflater.inflate(R.menu.activity_account, menu)
        return true
            }

            override fun onMenuItemSelected(menuItem: MenuItem) =
                when (menuItem.itemId) {
                    R.id.settings -> {
                        openAccountSettings()
                        true
                    }
                    R.id.rename_account -> {
                        renameAccount()
                        true
                    }
                    R.id.delete_account -> {
                        deleteAccountDialog()
                        true
                    }
                    else -> false
                }
        })
    }


    // menu actions

    fun openAccountSettings(menuItem: MenuItem) {
    fun openAccountSettings() {
        val intent = Intent(this, SettingsActivity::class.java)
        intent.putExtra(SettingsActivity.EXTRA_ACCOUNT, model.account)
        startActivity(intent, null)
    }

    fun renameAccount(menuItem: MenuItem) {
    fun renameAccount() {
        RenameAccountFragment.newInstance(model.account).show(supportFragmentManager, null)
    }

    fun deleteAccount(menuItem: MenuItem) {
    fun deleteAccountDialog() {
        MaterialAlertDialogBuilder(this)
                .setIcon(R.drawable.ic_error)
                .setTitle(R.string.account_delete_confirmation_title)
+31 −15
Original line number Diff line number Diff line
@@ -5,7 +5,10 @@
package at.bitfire.davdroid.ui.account

import android.content.Intent
import android.os.Bundle
import android.view.*
import androidx.core.view.MenuHost
import androidx.core.view.MenuProvider
import androidx.fragment.app.FragmentManager
import at.bitfire.davdroid.util.PermissionUtils
import at.bitfire.davdroid.R
@@ -22,19 +25,21 @@ class AddressBooksFragment: CollectionsFragment() {

    override val noCollectionsStringId = R.string.account_no_address_books

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) =
            inflater.inflate(R.menu.carddav_actions, menu)
    private val menuProvider = object : CollectionsMenuProvider() {
        override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
            menuInflater.inflate(R.menu.carddav_actions, menu)
        }

    override fun onPrepareOptionsMenu(menu: Menu) {
        override fun onPrepareMenu(menu: Menu) {
            super.onPrepareMenu(menu)
            menu.findItem(R.id.create_address_book).isVisible = model.hasWriteableCollections.value ?: false
        super.onPrepareOptionsMenu(menu)
        }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        if (super.onOptionsItemSelected(item))
        override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
            if (super.onMenuItemSelected(menuItem))
                return true

        if (item.itemId == R.id.create_address_book) {
            if (menuItem.itemId == R.id.create_address_book) {
                val intent = Intent(requireActivity(), CreateAddressBookActivity::class.java)
                intent.putExtra(CreateAddressBookActivity.EXTRA_ACCOUNT, accountModel.account)
                startActivity(intent)
@@ -43,6 +48,17 @@ class AddressBooksFragment: CollectionsFragment() {

            return false
        }
    }

    override fun onResume() {
        super.onResume()
        requireActivity().addMenuProvider(menuProvider)
    }

    override fun onPause() {
        super.onPause()
        requireActivity().removeMenuProvider(menuProvider)
    }

    override fun checkPermissions() {
        if (PermissionUtils.havePermissions(requireActivity(), PermissionUtils.CONTACT_PERMISSIONS))
Loading