Fixed: When selecting page items the changes are not reflecting in UI.

* Improved the clicking on page item.
* Fixed: Page items are not showing updating after deleting.
* Fixed: Switch was not disabling when selecting the page items.
* Added SearchView, navigationIcon, and menuItems to page fragment.
This commit is contained in:
MohitMaliFtechiz 2025-04-11 14:56:09 +05:30
parent bceebd5de4
commit acbf1bfec3
8 changed files with 150 additions and 72 deletions

View File

@ -38,6 +38,7 @@ import org.kiwix.kiwixmobile.core.base.BaseActivity
import org.kiwix.kiwixmobile.core.base.BaseFragment import org.kiwix.kiwixmobile.core.base.BaseFragment
import org.kiwix.kiwixmobile.core.extensions.viewModel import org.kiwix.kiwixmobile.core.extensions.viewModel
import org.kiwix.kiwixmobile.core.main.CoreMainActivity import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.page.SEARCH_ICON_TESTING_TAG
import org.kiwix.kiwixmobile.core.ui.components.NavigationIcon import org.kiwix.kiwixmobile.core.ui.components.NavigationIcon
import org.kiwix.kiwixmobile.core.ui.models.ActionMenuItem import org.kiwix.kiwixmobile.core.ui.models.ActionMenuItem
import org.kiwix.kiwixmobile.core.ui.models.IconItem import org.kiwix.kiwixmobile.core.ui.models.IconItem
@ -46,7 +47,6 @@ import org.kiwix.kiwixmobile.language.viewmodel.Action
import org.kiwix.kiwixmobile.language.viewmodel.LanguageViewModel import org.kiwix.kiwixmobile.language.viewmodel.LanguageViewModel
import javax.inject.Inject import javax.inject.Inject
const val SEARCH_ICON_TESTING_TAG = "search"
const val SAVE_ICON_TESTING_TAG = "saveLanguages" const val SAVE_ICON_TESTING_TAG = "saveLanguages"
const val SEARCH_FIELD_TESTING_TAG = "searchField" const val SEARCH_FIELD_TESTING_TAG = "searchField"

View File

@ -94,13 +94,11 @@
<fragment <fragment
android:id="@+id/bookmarksFragment" android:id="@+id/bookmarksFragment"
android:name="org.kiwix.kiwixmobile.core.page.bookmark.BookmarksFragment" android:name="org.kiwix.kiwixmobile.core.page.bookmark.BookmarksFragment"
android:label="BookmarksFragment" android:label="BookmarksFragment" />
tools:layout="@layout/fragment_page" />
<fragment <fragment
android:id="@+id/notesFragment" android:id="@+id/notesFragment"
android:name="org.kiwix.kiwixmobile.core.page.notes.NotesFragment" android:name="org.kiwix.kiwixmobile.core.page.notes.NotesFragment"
android:label="NotesFragment" android:label="NotesFragment" />
tools:layout="@layout/fragment_page" />
<fragment <fragment
android:id="@+id/introFragment" android:id="@+id/introFragment"
android:name="org.kiwix.kiwixmobile.intro.IntroFragment" android:name="org.kiwix.kiwixmobile.intro.IntroFragment"
@ -115,8 +113,7 @@
<fragment <fragment
android:id="@+id/historyFragment" android:id="@+id/historyFragment"
android:name="org.kiwix.kiwixmobile.core.page.history.HistoryFragment" android:name="org.kiwix.kiwixmobile.core.page.history.HistoryFragment"
android:label="HistoryFragment" android:label="HistoryFragment" />
tools:layout="@layout/fragment_page" />
<fragment <fragment
android:id="@+id/languageFragment" android:id="@+id/languageFragment"
android:name="org.kiwix.kiwixmobile.language.LanguageFragment" android:name="org.kiwix.kiwixmobile.language.LanguageFragment"

View File

@ -24,13 +24,20 @@ import android.view.Menu
import android.view.MenuInflater import android.view.MenuInflater
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.view.ActionMode import androidx.appcompat.view.ActionMode
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Delete
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.referentialEqualityPolicy
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ComposeView
import androidx.core.view.MenuHost import androidx.core.view.MenuHost
import androidx.core.view.MenuProvider import androidx.core.view.MenuProvider
@ -44,7 +51,6 @@ import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.base.BaseFragment import org.kiwix.kiwixmobile.core.base.BaseFragment
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions
import org.kiwix.kiwixmobile.core.databinding.FragmentPageBinding import org.kiwix.kiwixmobile.core.databinding.FragmentPageBinding
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.isCustomApp
import org.kiwix.kiwixmobile.core.extensions.closeKeyboard import org.kiwix.kiwixmobile.core.extensions.closeKeyboard
import org.kiwix.kiwixmobile.core.extensions.setToolTipWithContentDescription import org.kiwix.kiwixmobile.core.extensions.setToolTipWithContentDescription
import org.kiwix.kiwixmobile.core.extensions.setUpSearchView import org.kiwix.kiwixmobile.core.extensions.setUpSearchView
@ -52,14 +58,21 @@ import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.page.adapter.OnItemClickListener import org.kiwix.kiwixmobile.core.page.adapter.OnItemClickListener
import org.kiwix.kiwixmobile.core.page.adapter.Page import org.kiwix.kiwixmobile.core.page.adapter.Page
import org.kiwix.kiwixmobile.core.page.adapter.PageAdapter import org.kiwix.kiwixmobile.core.page.adapter.PageAdapter
import org.kiwix.kiwixmobile.core.page.notes.viewmodel.NotesState
import org.kiwix.kiwixmobile.core.page.viewmodel.Action import org.kiwix.kiwixmobile.core.page.viewmodel.Action
import org.kiwix.kiwixmobile.core.page.viewmodel.PageState import org.kiwix.kiwixmobile.core.page.viewmodel.PageState
import org.kiwix.kiwixmobile.core.page.viewmodel.PageViewModel import org.kiwix.kiwixmobile.core.page.viewmodel.PageViewModel
import org.kiwix.kiwixmobile.core.ui.components.NavigationIcon
import org.kiwix.kiwixmobile.core.ui.models.ActionMenuItem
import org.kiwix.kiwixmobile.core.ui.models.IconItem
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
import org.kiwix.kiwixmobile.core.utils.SimpleRecyclerViewScrollListener import org.kiwix.kiwixmobile.core.utils.SimpleRecyclerViewScrollListener
import org.kiwix.kiwixmobile.core.utils.SimpleTextListener import org.kiwix.kiwixmobile.core.utils.SimpleTextListener
import javax.inject.Inject import javax.inject.Inject
const val SEARCH_ICON_TESTING_TAG = "search"
const val DELETE_MENU_ICON_TESTING_TAG = "deleteMenuIconTestingTag"
abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActivityExtensions { abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActivityExtensions {
abstract val pageViewModel: PageViewModel<*, *> abstract val pageViewModel: PageViewModel<*, *>
@ -74,7 +87,26 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
abstract val searchQueryHint: String abstract val searchQueryHint: String
abstract val pageAdapter: PageAdapter abstract val pageAdapter: PageAdapter
abstract val switchIsChecked: Boolean abstract val switchIsChecked: Boolean
abstract val deleteIconTitle: String abstract val deleteIconTitle: Int
private val pageState: MutableState<PageState<*>> =
mutableStateOf(
NotesState(
emptyList(),
true,
""
),
policy = referentialEqualityPolicy()
)
/**
* Controls the visibility of the "Switch", and its controls.
*
* A [Triple] containing:
* - [String]: The text displayed with switch.
* - [Boolean]: Whether the switch is checked or not.
* - [Boolean]: Whether the switch is enabled or disabled.
*/
private val pageSwitchItem = mutableStateOf(Triple("", true, true))
private var fragmentPageBinding: FragmentPageBinding? = null private var fragmentPageBinding: FragmentPageBinding? = null
override val fragmentToolbar: Toolbar? by lazy { override val fragmentToolbar: Toolbar? by lazy {
fragmentPageBinding?.root?.findViewById(R.id.toolbar) fragmentPageBinding?.root?.findViewById(R.id.toolbar)
@ -119,7 +151,7 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
} }
) )
} }
menu.findItem(R.id.menu_pages_clear).title = deleteIconTitle // Bug fix #3825 // menu.findItem(R.id.menu_pages_clear).title = deleteIconTitle // Bug fix #3825
} }
@Suppress("ReturnCount") @Suppress("ReturnCount")
@ -155,16 +187,16 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
} }
fragmentPageBinding?.noPage?.text = noItemsString fragmentPageBinding?.noPage?.text = noItemsString
fragmentPageBinding?.pageSwitch?.apply { // fragmentPageBinding?.pageSwitch?.apply {
text = switchString // text = switchString
isChecked = switchIsChecked // isChecked = switchIsChecked
// hide switches for custom apps, see more info here https://github.com/kiwix/kiwix-android/issues/3523 // // hide switches for custom apps, see more info here https://github.com/kiwix/kiwix-android/issues/3523
visibility = if (requireActivity().isCustomApp()) GONE else VISIBLE // visibility = if (requireActivity().isCustomApp()) GONE else VISIBLE
} // }
compositeDisposable.add(pageViewModel.effects.subscribe { it.invokeWith(activity) }) compositeDisposable.add(pageViewModel.effects.subscribe { it.invokeWith(activity) })
fragmentPageBinding?.pageSwitch?.setOnCheckedChangeListener { _, isChecked -> // fragmentPageBinding?.pageSwitch?.setOnCheckedChangeListener { _, isChecked ->
pageViewModel.actions.offer(Action.UserClickedShowAllToggle(isChecked)) // pageViewModel.actions.offer(Action.UserClickedShowAllToggle(isChecked))
} // }
pageViewModel.state.observe(viewLifecycleOwner, Observer(::render)) pageViewModel.state.observe(viewLifecycleOwner, Observer(::render))
// hides keyboard when scrolled // hides keyboard when scrolled
@ -184,38 +216,85 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
): View? { ): View? {
return ComposeView(requireContext()).apply { return ComposeView(requireContext()).apply {
setContent { setContent {
val isSearchActive = remember { mutableStateOf(false) }
PageScreen( PageScreen(
pageState = pageViewModel.state, pageState = pageState.value,
effects = pageViewModel.effects, pageSwitchItem = pageSwitchItem.value,
screenTitle = screenTitle, screenTitle = screenTitle,
noItemsString = noItemsString, noItemsString = noItemsString,
switchString = switchString,
searchQueryHint = searchQueryHint, searchQueryHint = searchQueryHint,
switchIsChecked = switchIsChecked, onSwitchChanged = { onSwitchCheckedChanged(it) },
onSwitchChanged = { isChecked -> itemClickListener = this@PageFragment,
pageViewModel.actions.offer(Action.UserClickedShowAllToggle(isChecked)) navigationIcon = {
NavigationIcon(
iconItem = navigationIconItem(isSearchActive.value),
onClick = navigationIconClick(isSearchActive)
)
}, },
onItemClick = { pageViewModel.actions.offer(Action.OnItemClick(it)) }, actionMenuItems = actionMenuList(
onItemLongClick = { pageViewModel.actions.offer(Action.OnItemLongClick(it)) } isSearchActive = isSearchActive.value,
onSearchClick = { isSearchActive.value = true },
onDeleteClick = { pageViewModel.actions.offer(Action.UserClickedDeleteButton) }
)
) )
} }
} }
} }
private fun onSwitchCheckedChanged(isChecked: Boolean): () -> Unit = {
pageSwitchItem.value = pageSwitchItem.value.copy(second = isChecked)
pageViewModel.actions.offer(Action.UserClickedShowAllToggle(isChecked))
}
private fun navigationIconItem(isSearchActive: Boolean) = if (isSearchActive) {
IconItem.Drawable(R.drawable.ic_close_white_24dp)
} else {
IconItem.Vector(Icons.AutoMirrored.Filled.ArrowBack)
}
private fun navigationIconClick(isSearchActive: MutableState<Boolean>): () -> Unit = {
if (isSearchActive.value) {
isSearchActive.value = false
pageViewModel.actions.offer(Action.Exit)
} else {
requireActivity().onBackPressedDispatcher.onBackPressed()
}
}
private fun actionMenuList(
isSearchActive: Boolean,
onSearchClick: () -> Unit,
onDeleteClick: () -> Unit
): List<ActionMenuItem> {
return listOfNotNull(
when {
!isSearchActive -> ActionMenuItem(
icon = IconItem.Drawable(R.drawable.action_search),
contentDescription = R.string.search_label,
onClick = onSearchClick,
testingTag = SEARCH_ICON_TESTING_TAG
)
else -> null
},
ActionMenuItem(
icon = IconItem.Vector(Icons.Default.Delete),
// Adding content description for #3825.
contentDescription = deleteIconTitle,
onClick = onDeleteClick,
testingTag = DELETE_MENU_ICON_TESTING_TAG
)
)
}
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView() super.onDestroyView()
compositeDisposable.clear() compositeDisposable.clear()
fragmentPageBinding?.apply {
recyclerView.adapter = null
root.removeAllViews()
}
fragmentPageBinding = null
} }
private fun render(state: PageState<*>) { private fun render(state: PageState<*>) {
pageAdapter.items = state.visiblePageItems pageState.value = state
fragmentPageBinding?.pageSwitch?.isEnabled = !state.isInSelectionState pageSwitchItem.value = Triple(switchString, switchIsChecked, !state.isInSelectionState)
fragmentPageBinding?.noPage?.visibility = if (state.pageItems.isEmpty()) VISIBLE else GONE
if (state.isInSelectionState) { if (state.isInSelectionState) {
if (actionMode == null) { if (actionMode == null) {
actionMode = actionMode =

View File

@ -39,6 +39,7 @@ import androidx.compose.ui.text.style.TextOverflow
import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.downloader.model.Base64String import org.kiwix.kiwixmobile.core.downloader.model.Base64String
import org.kiwix.kiwixmobile.core.downloader.model.toPainter import org.kiwix.kiwixmobile.core.downloader.model.toPainter
import org.kiwix.kiwixmobile.core.page.adapter.OnItemClickListener
import org.kiwix.kiwixmobile.core.page.adapter.Page import org.kiwix.kiwixmobile.core.page.adapter.Page
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.EIGHT_DP import org.kiwix.kiwixmobile.core.utils.ComposeDimens.EIGHT_DP
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.PAGE_LIST_ITEM_FAVICON_SIZE import org.kiwix.kiwixmobile.core.utils.ComposeDimens.PAGE_LIST_ITEM_FAVICON_SIZE
@ -48,13 +49,15 @@ import org.kiwix.kiwixmobile.core.utils.ComposeDimens.SIXTEEN_DP
@Composable @Composable
fun PageListItem( fun PageListItem(
page: Page, page: Page,
onClick: () -> Unit, itemClickListener: OnItemClickListener
onLongClick: () -> Unit
) { ) {
Row( Row(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.combinedClickable(onClick = onClick, onLongClick = onLongClick) .combinedClickable(
onClick = { itemClickListener.onItemClick(page) },
onLongClick = { itemClickListener.onItemLongClick(page) }
)
.background(MaterialTheme.colorScheme.surface) .background(MaterialTheme.colorScheme.surface)
.padding( .padding(
horizontal = SIXTEEN_DP, horizontal = SIXTEEN_DP,

View File

@ -32,55 +32,51 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.Switch import androidx.compose.material3.Switch
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.lifecycle.MutableLiveData
import io.reactivex.processors.PublishProcessor
import org.kiwix.kiwixmobile.core.base.SideEffect
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.isCustomApp import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.isCustomApp
import org.kiwix.kiwixmobile.core.main.CoreMainActivity import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.page.adapter.OnItemClickListener
import org.kiwix.kiwixmobile.core.page.adapter.Page import org.kiwix.kiwixmobile.core.page.adapter.Page
import org.kiwix.kiwixmobile.core.page.history.adapter.HistoryListItem.DateItem import org.kiwix.kiwixmobile.core.page.history.adapter.HistoryListItem.DateItem
import org.kiwix.kiwixmobile.core.page.viewmodel.PageState import org.kiwix.kiwixmobile.core.page.viewmodel.PageState
import org.kiwix.kiwixmobile.core.ui.components.KiwixAppBar import org.kiwix.kiwixmobile.core.ui.components.KiwixAppBar
import org.kiwix.kiwixmobile.core.ui.models.ActionMenuItem
import org.kiwix.kiwixmobile.core.ui.theme.KiwixTheme import org.kiwix.kiwixmobile.core.ui.theme.KiwixTheme
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.EIGHT_DP import org.kiwix.kiwixmobile.core.utils.ComposeDimens.EIGHT_DP
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.SIXTEEN_DP import org.kiwix.kiwixmobile.core.utils.ComposeDimens.SIXTEEN_DP
@Suppress("LongParameterList", "IgnoredReturnValue", "UnusedParameter") @Suppress(
"LongParameterList",
"IgnoredReturnValue",
"UnusedParameter",
"ComposableLambdaParameterNaming"
)
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun PageScreen( fun PageScreen(
pageState: MutableLiveData<out PageState<out Page>>, pageState: PageState<out Page>,
effects: PublishProcessor<SideEffect<*>>, pageSwitchItem: Triple<String, Boolean, Boolean>,
screenTitle: Int, screenTitle: Int,
noItemsString: String, noItemsString: String,
switchString: String,
searchQueryHint: String, searchQueryHint: String,
switchIsChecked: Boolean,
onSwitchChanged: (Boolean) -> Unit, onSwitchChanged: (Boolean) -> Unit,
onItemClick: (Page) -> Unit, itemClickListener: OnItemClickListener,
onItemLongClick: (Page) -> Unit actionMenuItems: List<ActionMenuItem>,
navigationIcon: @Composable () -> Unit,
) { ) {
val context = LocalActivity.current as CoreMainActivity val context = LocalActivity.current as CoreMainActivity
val state by pageState.observeAsState()
LaunchedEffect(Unit) {
effects.subscribe { it.invokeWith(context) }
}
KiwixTheme { KiwixTheme {
Scaffold( Scaffold(
topBar = { topBar = {
Column { Column {
KiwixAppBar( KiwixAppBar(
titleId = screenTitle, titleId = screenTitle,
navigationIcon = {}, navigationIcon = navigationIcon,
actionMenuItems = actionMenuItems
) )
// hide switches for custom apps, see more info here https://github.com/kiwix/kiwix-android/issues/3523
if (!context.isCustomApp()) { if (!context.isCustomApp()) {
Row( Row(
modifier = Modifier modifier = Modifier
@ -88,14 +84,18 @@ fun PageScreen(
.padding(horizontal = SIXTEEN_DP, vertical = EIGHT_DP), .padding(horizontal = SIXTEEN_DP, vertical = EIGHT_DP),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Text(switchString, modifier = Modifier.weight(1f)) Text(pageSwitchItem.first, modifier = Modifier.weight(1f))
Switch(checked = switchIsChecked, onCheckedChange = onSwitchChanged) Switch(
checked = pageSwitchItem.second,
onCheckedChange = onSwitchChanged,
enabled = pageSwitchItem.third
)
} }
} }
} }
} }
) { padding -> ) { padding ->
val items = state?.visiblePageItems.orEmpty() val items = pageState.pageItems
Box(modifier = Modifier.padding(padding)) { Box(modifier = Modifier.padding(padding)) {
if (items.isEmpty()) { if (items.isEmpty()) {
Text( Text(
@ -105,13 +105,12 @@ fun PageScreen(
) )
} else { } else {
LazyColumn { LazyColumn {
items(items) { item -> items(pageState.visiblePageItems) { item ->
when (item) { when (item) {
is Page -> { is Page -> {
PageListItem( PageListItem(
page = item, page = item,
onClick = { onItemClick(item) }, itemClickListener = itemClickListener
onLongClick = { onItemLongClick(item) }
) )
} }

View File

@ -19,8 +19,8 @@ class BookmarksFragment : PageFragment() {
override val screenTitle: Int by lazy { R.string.bookmarks } override val screenTitle: Int by lazy { R.string.bookmarks }
override val noItemsString: String by lazy { getString(R.string.no_bookmarks) } 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 switchString: String by lazy { getString(R.string.bookmarks_from_current_book) }
override val deleteIconTitle: String by lazy { override val deleteIconTitle: Int by lazy {
getString(R.string.pref_clear_all_bookmarks_title) R.string.pref_clear_all_bookmarks_title
} }
override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showBookmarksAllBooks } override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showBookmarksAllBooks }

View File

@ -22,8 +22,8 @@ class HistoryFragment : PageFragment() {
override val noItemsString: String by lazy { getString(R.string.no_history) } override val noItemsString: String by lazy { getString(R.string.no_history) }
override val switchString: String by lazy { getString(R.string.history_from_current_book) } override val switchString: String by lazy { getString(R.string.history_from_current_book) }
override val screenTitle: Int by lazy { R.string.history } override val screenTitle: Int by lazy { R.string.history }
override val deleteIconTitle: String by lazy { override val deleteIconTitle: Int by lazy {
getString(R.string.pref_clear_all_history_title) R.string.pref_clear_all_history_title
} }
override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showHistoryAllBooks } override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showHistoryAllBooks }

View File

@ -38,8 +38,8 @@ class NotesFragment : PageFragment() {
override val noItemsString: String by lazy { getString(R.string.no_notes) } override val noItemsString: String by lazy { getString(R.string.no_notes) }
override val switchString: String by lazy { getString(R.string.notes_from_all_books) } override val switchString: String by lazy { getString(R.string.notes_from_all_books) }
override val deleteIconTitle: String by lazy { override val deleteIconTitle: Int by lazy {
getString(R.string.pref_clear_notes) R.string.pref_clear_notes
} }
override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showNotesAllBooks } override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showNotesAllBooks }