#2238 actionbars now works but memory leaks might be active again.

This commit is contained in:
HissPirat 2020-08-05 14:05:33 +02:00
parent 5c8af5d419
commit 33a4abb2e2
8 changed files with 44 additions and 30 deletions

View File

@ -60,11 +60,6 @@ class LocalLibraryFragment : ZimFileSelectFragment() {
(baseActivity as KiwixMainActivity).cachedComponent.inject(this)
}
override fun onDestroyView() {
super.onDestroyView()
(activity as AppCompatActivity).setSupportActionBar(null)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.menu_zim_manager, menu)
val searchItem = menu.findItem(R.id.action_search)
@ -88,7 +83,6 @@ class LocalLibraryFragment : ZimFileSelectFragment() {
): View? {
LanguageUtils(requireActivity())
.changeFont(requireActivity().layoutInflater, sharedPreferenceUtil)
setHasOptionsMenu(true)
val root = inflater.inflate(R.layout.fragment_destination_library, container, false)
val toolbar = root.findViewById<Toolbar>(R.id.toolbar)
val activity = activity as CoreMainActivity
@ -98,9 +92,15 @@ class LocalLibraryFragment : ZimFileSelectFragment() {
setTitle(R.string.library)
}
activity.setupDrawerToggle(toolbar)
setHasOptionsMenu(true)
return root
}
override fun onDestroyView() {
super.onDestroyView()
(activity as AppCompatActivity).setSupportActionBar(null)
}
override fun render(state: FileSelectListState) {
super.render(state)
val items = state.bookOnDiskListItems

View File

@ -57,11 +57,6 @@ class OnlineLibraryFragment : LibraryFragment(), FragmentActivityExtensions {
zimManageViewModel.requestFiltering.onNext("")
}
override fun onDestroyView() {
super.onDestroyView()
(activity as AppCompatActivity).setSupportActionBar(null)
}
override fun onBackPressed(activity: AppCompatActivity): FragmentActivityExtensions.Super {
getActivity()?.finish()
return FragmentActivityExtensions.Super.ShouldNotCall

View File

@ -258,11 +258,6 @@ class KiwixReaderFragment : CoreReaderFragment() {
)
}
override fun onDestroyView() {
super.onDestroyView()
(activity as AppCompatActivity).setSupportActionBar(null)
}
override fun openFullScreen() {
super.openFullScreen()
requireActivity().bottom_nav_view.visibility = GONE

View File

@ -20,6 +20,7 @@ package org.kiwix.kiwixmobile.core.main
import android.content.Intent
import android.os.Bundle
import android.view.ActionMode
import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.widget.Toolbar
@ -159,6 +160,20 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider {
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
if (activeFragments().filterIsInstance<FragmentActivityExtensions>().isEmpty()) {
return super.onCreateOptionsMenu(menu)
}
var returnValue = true
activeFragments().filterIsInstance<FragmentActivityExtensions>().forEach {
if (it.onCreateOptionsMenu(menu, this) == FragmentActivityExtensions.Super.ShouldCall) {
returnValue = super.onCreateOptionsMenu(menu)
}
}
return returnValue
}
private fun activeFragments(): MutableList<Fragment> =
supportFragmentManager.fragments

View File

@ -788,11 +788,9 @@ public abstract class CoreReaderFragment extends BaseFragment
@Override public void onDestroyView() {
super.onDestroyView();
safeDispose();
super.onDestroy();
tabCallback = null;
hideBackToTopTimer.cancel();
hideBackToTopTimer = null;
webViewList.clear();
// TODO create a base Activity class that class this.
FileUtils.deleteCachedFiles(getActivity());
tts.shutdown();

View File

@ -90,6 +90,21 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val activity = requireActivity() as CoreMainActivity
activity.setSupportActionBar(toolbar)
activity.supportActionBar?.apply {
setDisplayHomeAsUpEnabled(true)
title = title
}
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.menu_page, menu)
val search = menu.findItem(R.id.menu_page_search).actionView as SearchView
@ -97,7 +112,7 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
search.setOnQueryTextListener(SimpleTextListener {
pageViewModel.actions.offer(Action.Filter(it))
})
pageViewModel.state.observe(viewLifecycleOwner, Observer(::render))
super<BaseFragment>.onCreateOptionsMenu(menu, inflater)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
@ -113,11 +128,6 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
val activity = requireActivity() as CoreMainActivity
activity.setSupportActionBar(toolbar)
activity.supportActionBar?.apply {
setDisplayHomeAsUpEnabled(true)
title = title
}
recycler_view.layoutManager = LinearLayoutManager(activity, RecyclerView.VERTICAL, false)
recycler_view.adapter = pageAdapter
@ -129,16 +139,14 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
page_switch.setOnCheckedChangeListener { _, isChecked ->
pageViewModel.actions.offer(Action.UserClickedShowAllToggle(isChecked))
}
pageViewModel.state.observe(viewLifecycleOwner, Observer(::render))
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
setHasOptionsMenu(true)
return inflater.inflate(R.layout.fragment_page, container, false)
}
): View? = inflater.inflate(R.layout.fragment_page, container, false)
override fun onDestroy() {
compositeDisposable.clear()

View File

@ -4,6 +4,7 @@ import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.base.BaseActivity
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.coreActivityComponent
import org.kiwix.kiwixmobile.core.extensions.viewModel
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.page.PageFragment
import org.kiwix.kiwixmobile.core.page.adapter.PageAdapter
import org.kiwix.kiwixmobile.core.page.adapter.PageDelegate.PageItemDelegate
@ -20,8 +21,9 @@ class BookmarksFragment : PageFragment() {
override val noItemsString: String by lazy { getString(R.string.no_bookmarks) }
override val switchString: String by lazy { getString(R.string.bookmarks_from_current_book) }
override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showBookmarksAllBooks }
override fun inject(baseActivity: BaseActivity) {
requireActivity().coreActivityComponent.inject(this)
(baseActivity as CoreMainActivity).coreActivityComponent.inject(this)
}
override val searchQueryHint: String by lazy { getString(R.string.search_bookmarks) }

View File

@ -4,6 +4,7 @@ import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.base.BaseActivity
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.coreActivityComponent
import org.kiwix.kiwixmobile.core.extensions.viewModel
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.page.PageFragment
import org.kiwix.kiwixmobile.core.page.adapter.PageAdapter
import org.kiwix.kiwixmobile.core.page.adapter.PageDelegate.HistoryDateDelegate
@ -25,7 +26,7 @@ class HistoryFragment : PageFragment() {
override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showHistoryAllBooks }
override fun inject(baseActivity: BaseActivity) {
requireActivity().coreActivityComponent.inject(this)
(baseActivity as CoreMainActivity).coreActivityComponent.inject(this)
}
override val searchQueryHint: String by lazy { getString(R.string.search_history) }