Desktop mode added

This commit is contained in:
MohitMali 2022-11-02 12:37:40 +05:30 committed by gouri-panda
parent 25a8508983
commit 1e99f8e2f9
7 changed files with 50 additions and 6 deletions

View File

@ -276,6 +276,15 @@ class KiwixReaderFragment : CoreReaderFragment() {
}
}
override fun onDesktopModeMenuClicked(isEnable: Boolean) {
getCurrentWebView()?.settings?.apply {
useWideViewPort = isEnable
}.also {
sharedPreferenceUtil?.isDesktopModeEnable = isEnable
mainMenu?.setDesktopModeEnable(!isEnable)
}
}
override fun openFullScreen() {
super.openFullScreen()
hideNavBar()

View File

@ -827,7 +827,9 @@ abstract class CoreReaderFragment :
}
private fun loadUrl(url: String?, webview: KiwixWebView) {
if (url != null && !url.endsWith("null")) {
if (url?.endsWith("null") == false) {
webview.settings.useWideViewPort = sharedPreferenceUtil?.isDesktopModeEnable == true
mainMenu?.setDesktopModeEnable(sharedPreferenceUtil?.isDesktopModeEnable == false)
webview.loadUrl(url)
}
}
@ -1472,6 +1474,7 @@ abstract class CoreReaderFragment :
super<BaseFragment>.onCreateOptionsMenu(menu, inflater)
menu.clear()
mainMenu = createMainMenu(menu)
mainMenu?.setDesktopModeEnable(sharedPreferenceUtil?.isDesktopModeEnable == false)
}
protected open fun createMainMenu(menu: Menu?): MainMenu? =

View File

@ -57,6 +57,7 @@ class MainMenu(
fun onRandomArticleMenuClicked()
fun onReadAloudMenuClicked()
fun onFullscreenMenuClicked()
fun onDesktopModeMenuClicked(isEnable: Boolean)
}
init {
@ -71,6 +72,7 @@ class MainMenu(
private val randomArticle = menu.findItem(R.id.menu_random_article)
private val fullscreen = menu.findItem(R.id.menu_fullscreen)
private var readAloud: MenuItem? = menu.findItem(R.id.menu_read_aloud)
private var desktopMode: MenuItem? = menu.findItem(R.id.menu_desktop_mode)
private var isInTabSwitcher: Boolean = false
init {
@ -96,6 +98,7 @@ class MainMenu(
randomArticle.menuItemClickListener { menuClickListener.onRandomArticleMenuClicked() }
readAloud.menuItemClickListener { menuClickListener.onReadAloudMenuClicked() }
fullscreen.menuItemClickListener { menuClickListener.onFullscreenMenuClicked() }
desktopMode.menuItemClickListener { menuClickListener.onDesktopModeMenuClicked(it.isChecked) }
showWebViewOptions(urlIsValid)
zimFileReader?.let {
@ -114,27 +117,27 @@ class MainMenu(
}
fun onFileOpened(urlIsValid: Boolean) {
setVisibility(urlIsValid, randomArticle, search, readAloud, addNote, fullscreen)
setVisibility(urlIsValid, randomArticle, search, readAloud, addNote, fullscreen, desktopMode)
search.setOnMenuItemClickListener { navigateToSearch() }
}
fun hideBookSpecificMenuItems() {
setVisibility(false, search, tabSwitcher, randomArticle, addNote)
setVisibility(false, search, tabSwitcher, randomArticle, addNote, desktopMode)
}
fun showBookSpecificMenuItems() {
setVisibility(true, search, tabSwitcher, randomArticle, addNote)
setVisibility(true, search, tabSwitcher, randomArticle, addNote, desktopMode)
}
fun showTabSwitcherOptions() {
isInTabSwitcher = true
setVisibility(false, randomArticle, readAloud, addNote, fullscreen)
setVisibility(false, randomArticle, readAloud, addNote, fullscreen, desktopMode)
}
fun showWebViewOptions(urlIsValid: Boolean) {
isInTabSwitcher = false
fullscreen.isVisible = true
setVisibility(urlIsValid, randomArticle, search, readAloud, addNote)
setVisibility(urlIsValid, randomArticle, search, readAloud, addNote, desktopMode)
}
fun updateTabIcon(tabs: Int) {
@ -154,6 +157,10 @@ class MainMenu(
readAloud?.setTitle(R.string.menu_read_aloud)
}
fun setDesktopModeEnable(isEnable: Boolean) {
desktopMode?.isChecked = isEnable
}
private fun setVisibility(visibility: Boolean, vararg menuItems: MenuItem?) {
menuItems.forEach { it?.isVisible = visibility }
}

View File

@ -139,6 +139,12 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) {
fun setIntroShown() = sharedPreferences.edit { putBoolean(PREF_SHOW_INTRO, false) }
var isDesktopModeEnable: Boolean
get() = sharedPreferences.getBoolean(PREF_DESKTOP_MODE_ENABLE, true)
set(isEnable) {
sharedPreferences.edit { putBoolean(PREF_DESKTOP_MODE_ENABLE, isEnable) }
}
var showHistoryAllBooks: Boolean
get() = sharedPreferences.getBoolean(PREF_SHOW_HISTORY_ALL_BOOKS, true)
set(prefShowHistoryAllBooks) {
@ -213,6 +219,7 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) {
const val PREF_WIFI_ONLY = "pref_wifi_only"
const val PREF_KIWIX_MOBILE = "kiwix-mobile"
const val PREF_SHOW_INTRO = "showIntro"
const val PREF_DESKTOP_MODE_ENABLE = "desktop_mode_enable"
private const val PREF_BACK_TO_TOP = "pref_backtotop"
private const val PREF_FULLSCREEN = "pref_fullscreen"
private const val PREF_NEW_TAB_BACKGROUND = "pref_newtab_background"

View File

@ -46,4 +46,12 @@
app:showAsAction="never"
tools:visible="true" />
<item
android:id="@+id/menu_desktop_mode"
android:title="@string/menu_desktop_mode"
android:visible="false"
android:checkable="true"
app:showAsAction="never"
tools:visible="true"/>
</menu>

View File

@ -323,4 +323,5 @@
<string name="open_article">Open Article</string>
<string name="delete_note_dialog_message">Note: Notes are not deleted from your storage</string>
<string name="delete_selected_notes">Delete Selected Notes?</string>
<string name="menu_desktop_mode">Desktop Mode</string>
</resources>

View File

@ -208,6 +208,15 @@ class CustomReaderFragment : CoreReaderFragment() {
menu.findItem(R.id.menu_host_books)?.isVisible = false
}
override fun onDesktopModeMenuClicked(isEnable: Boolean) {
getCurrentWebView()?.settings?.apply {
useWideViewPort = isEnable
}.also {
sharedPreferenceUtil?.isDesktopModeEnable = isEnable
mainMenu?.setDesktopModeEnable(!isEnable)
}
}
private fun enforcedLanguage(): Boolean {
val currentLocaleCode = Locale.getDefault().toString()
if (BuildConfig.ENFORCED_LANG.isNotEmpty() && BuildConfig.ENFORCED_LANG != currentLocaleCode) {