Fix tab resetting behaviour

This commit is contained in:
kyori19 2021-07-26 00:10:48 +09:00
parent 0f1c44ced1
commit 76cd8f6c06
5 changed files with 32 additions and 41 deletions

View File

@ -77,16 +77,10 @@ import com.keylesspalace.tusky.fragment.NotificationsFragment
import com.keylesspalace.tusky.interfaces.AccountSelectionListener
import com.keylesspalace.tusky.interfaces.ActionButtonActivity
import com.keylesspalace.tusky.interfaces.ReselectableFragment
import com.keylesspalace.tusky.interfaces.ResettableFragment
import com.keylesspalace.tusky.pager.MainPagerAdapter
import com.keylesspalace.tusky.settings.PrefKeys
import com.keylesspalace.tusky.util.ThemeUtils
import com.keylesspalace.tusky.util.deleteStaleCachedMedia
import com.keylesspalace.tusky.util.emojify
import com.keylesspalace.tusky.util.hide
import com.keylesspalace.tusky.util.removeShortcut
import com.keylesspalace.tusky.util.updateShortcut
import com.keylesspalace.tusky.util.viewBinding
import com.keylesspalace.tusky.util.visible
import com.keylesspalace.tusky.util.*
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial
import com.mikepenz.iconics.utils.colorInt
@ -95,19 +89,8 @@ import com.mikepenz.materialdrawer.holder.BadgeStyle
import com.mikepenz.materialdrawer.holder.ColorHolder
import com.mikepenz.materialdrawer.holder.StringHolder
import com.mikepenz.materialdrawer.iconics.iconicsIcon
import com.mikepenz.materialdrawer.model.AbstractDrawerItem
import com.mikepenz.materialdrawer.model.DividerDrawerItem
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem
import com.mikepenz.materialdrawer.model.ProfileDrawerItem
import com.mikepenz.materialdrawer.model.ProfileSettingDrawerItem
import com.mikepenz.materialdrawer.model.SecondaryDrawerItem
import com.mikepenz.materialdrawer.model.interfaces.IProfile
import com.mikepenz.materialdrawer.model.interfaces.descriptionRes
import com.mikepenz.materialdrawer.model.interfaces.descriptionText
import com.mikepenz.materialdrawer.model.interfaces.iconRes
import com.mikepenz.materialdrawer.model.interfaces.iconUrl
import com.mikepenz.materialdrawer.model.interfaces.nameRes
import com.mikepenz.materialdrawer.model.interfaces.nameText
import com.mikepenz.materialdrawer.model.*
import com.mikepenz.materialdrawer.model.interfaces.*
import com.mikepenz.materialdrawer.util.*
import com.mikepenz.materialdrawer.widget.AccountHeaderView
import dagger.android.DispatchingAndroidInjector
@ -638,6 +621,9 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
if (popup.menu is MenuBuilder) {
val menuBuilder = popup.menu as MenuBuilder
if (tabs[i].id in arrayOf(HOME, LOCAL, FEDERATED, HASHTAG, LIST)) {
menuBuilder.findItem(R.id.tabReset).isVisible = true
}
if (tabs[i].id == LIST) {
menuBuilder.findItem(R.id.tabEditList).isVisible = true
}
@ -679,6 +665,11 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
(fragment as ReselectableFragment).onReselect()
}
}
R.id.tabReset -> {
if (fragment is ResettableFragment) {
fragment.onReset()
}
}
R.id.tabEditList -> {
AccountsInListFragment.newInstance(
tabs[i].arguments.getOrNull(0).orEmpty(),

View File

@ -25,14 +25,7 @@ import androidx.core.content.ContextCompat
import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.AsyncDifferConfig
import androidx.recyclerview.widget.AsyncListDiffer
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.ListUpdateCallback
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.SimpleItemAnimator
import androidx.recyclerview.widget.*
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener
import at.connyduck.sparkbutton.helpers.Utils
import autodispose2.androidx.lifecycle.autoDispose
@ -50,18 +43,9 @@ import com.keylesspalace.tusky.db.AccountManager
import com.keylesspalace.tusky.di.Injectable
import com.keylesspalace.tusky.di.ViewModelFactory
import com.keylesspalace.tusky.fragment.SFragment
import com.keylesspalace.tusky.interfaces.ActionButtonActivity
import com.keylesspalace.tusky.interfaces.RefreshableFragment
import com.keylesspalace.tusky.interfaces.ReselectableFragment
import com.keylesspalace.tusky.interfaces.StatusActionListener
import com.keylesspalace.tusky.interfaces.*
import com.keylesspalace.tusky.settings.PrefKeys
import com.keylesspalace.tusky.util.CardViewMode
import com.keylesspalace.tusky.util.ListStatusAccessibilityDelegate
import com.keylesspalace.tusky.util.StatusDisplayOptions
import com.keylesspalace.tusky.util.hide
import com.keylesspalace.tusky.util.show
import com.keylesspalace.tusky.util.viewBinding
import com.keylesspalace.tusky.util.visible
import com.keylesspalace.tusky.util.*
import com.keylesspalace.tusky.view.EndlessOnScrollListener
import com.keylesspalace.tusky.viewdata.AttachmentViewData
import com.keylesspalace.tusky.viewdata.StatusViewData
@ -76,6 +60,7 @@ class TimelineFragment :
StatusActionListener,
Injectable,
ReselectableFragment,
ResettableFragment,
RefreshableFragment {
@Inject
@ -281,7 +266,7 @@ class TimelineFragment :
binding.swipeRefreshLayout.isEnabled = isSwipeToRefreshEnabled
binding.statusView.hide()
viewModel.fullyRefresh()
viewModel.refresh()
}
override fun onReply(position: Int) {
@ -550,6 +535,10 @@ class TimelineFragment :
}
}
override fun onReset() {
viewModel.fullyRefresh()
}
override fun refreshContent() {
onRefresh()
}

View File

@ -0,0 +1,5 @@
package com.keylesspalace.tusky.interfaces
interface ResettableFragment {
fun onReset()
}

View File

@ -5,6 +5,11 @@
android:icon="@drawable/ic_arrow_upward"
android:title="@string/action_tab_jump_to_top" />
<item android:id="@+id/tabReset"
android:icon="@drawable/ic_reject_24dp"
android:title="@string/action_tab_reset"
android:visible="false" />
<item android:id="@+id/tabEditList"
android:icon="@drawable/ic_list"
android:title="@string/action_tab_edit_list"

View File

@ -150,6 +150,7 @@
<string name="action_quote">Quote</string>
<string name="action_authorize">Authorize Now!</string>
<string name="action_tab_jump_to_top">Jump to top</string>
<string name="action_tab_reset">Reset tab</string>
<string name="action_tab_edit_list">Edit this list</string>
<string name="action_tab_toggle_streaming">Use streaming in this tab</string>
<string name="action_tab_toggle_notifications_filter">Toggle notifications filter</string>