#3668 Added setToolTip function

This commit is contained in:
Sagar 2024-02-03 23:52:08 +05:30 committed by Sagar
parent 4b9a309fb1
commit a907fa3f42
5 changed files with 33 additions and 20 deletions

View File

@ -19,8 +19,10 @@
package org.kiwix.kiwixmobile.core.extensions package org.kiwix.kiwixmobile.core.extensions
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.os.Build
import android.view.View import android.view.View
import androidx.annotation.ColorInt import androidx.annotation.ColorInt
import androidx.appcompat.widget.TooltipCompat
import com.google.android.material.snackbar.BaseTransientBottomBar import com.google.android.material.snackbar.BaseTransientBottomBar
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
@ -69,3 +71,11 @@ fun View.snack(
}) })
}.show() }.show()
} }
fun View.setToolTip(description: String) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
TooltipCompat.setTooltipText(this, description)
} else {
contentDescription = description
}
}

View File

@ -65,7 +65,6 @@ import androidx.annotation.AnimRes
import androidx.appcompat.app.ActionBar import androidx.appcompat.app.ActionBar
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.appcompat.widget.TooltipCompat
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.Group import androidx.constraintlayout.widget.Group
import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.coordinatorlayout.widget.CoordinatorLayout
@ -115,6 +114,7 @@ import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.observeNavigatio
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.requestNotificationPermission import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.requestNotificationPermission
import org.kiwix.kiwixmobile.core.extensions.ViewGroupExtensions.findFirstTextView import org.kiwix.kiwixmobile.core.extensions.ViewGroupExtensions.findFirstTextView
import org.kiwix.kiwixmobile.core.extensions.isFileExist import org.kiwix.kiwixmobile.core.extensions.isFileExist
import org.kiwix.kiwixmobile.core.extensions.setToolTip
import org.kiwix.kiwixmobile.core.extensions.snack import org.kiwix.kiwixmobile.core.extensions.snack
import org.kiwix.kiwixmobile.core.extensions.toast import org.kiwix.kiwixmobile.core.extensions.toast
import org.kiwix.kiwixmobile.core.main.DocumentParser.SectionsListener import org.kiwix.kiwixmobile.core.main.DocumentParser.SectionsListener
@ -694,6 +694,7 @@ abstract class CoreReaderFragment :
) )
setDisplayShowTitleEnabled(false) setDisplayShowTitleEnabled(false)
} }
closeAllTabsButton?.setToolTip(resources.getString(R.string.close_all_tabs))
// Set a negative top margin to the web views to remove // Set a negative top margin to the web views to remove
// the unwanted blank space caused by the toolbar. // the unwanted blank space caused by the toolbar.
setTopMarginToWebViews(-requireActivity().getToolbarHeight()) setTopMarginToWebViews(-requireActivity().getToolbarHeight())
@ -770,11 +771,6 @@ abstract class CoreReaderFragment :
setImageDrawable( setImageDrawable(
ContextCompat.getDrawable(requireActivity(), R.drawable.ic_close_black_24dp) ContextCompat.getDrawable(requireActivity(), R.drawable.ic_close_black_24dp)
) )
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
TooltipCompat.setTooltipText(this, resources.getString(R.string.close_all_tabs))
} else {
contentDescription = resources.getString(R.string.close_all_tabs)
}
} }
tabSwitcherRoot?.let { tabSwitcherRoot?.let {
if (it.visibility == View.VISIBLE) { if (it.visibility == View.VISIBLE) {
@ -938,22 +934,27 @@ abstract class CoreReaderFragment :
hideTabSwitcher() hideTabSwitcher()
return FragmentActivityExtensions.Super.ShouldNotCall return FragmentActivityExtensions.Super.ShouldNotCall
} }
isInFullScreenMode() -> { isInFullScreenMode() -> {
closeFullScreen() closeFullScreen()
return FragmentActivityExtensions.Super.ShouldNotCall return FragmentActivityExtensions.Super.ShouldNotCall
} }
compatCallback?.isActive == true -> { compatCallback?.isActive == true -> {
compatCallback?.finish() compatCallback?.finish()
return FragmentActivityExtensions.Super.ShouldNotCall return FragmentActivityExtensions.Super.ShouldNotCall
} }
drawerLayout?.isDrawerOpen(GravityCompat.END) == true -> { drawerLayout?.isDrawerOpen(GravityCompat.END) == true -> {
drawerLayout?.closeDrawers() drawerLayout?.closeDrawers()
return FragmentActivityExtensions.Super.ShouldNotCall return FragmentActivityExtensions.Super.ShouldNotCall
} }
getCurrentWebView()?.canGoBack() == true -> { getCurrentWebView()?.canGoBack() == true -> {
getCurrentWebView()?.goBack() getCurrentWebView()?.goBack()
return FragmentActivityExtensions.Super.ShouldNotCall return FragmentActivityExtensions.Super.ShouldNotCall
} }
else -> return FragmentActivityExtensions.Super.ShouldCall else -> return FragmentActivityExtensions.Super.ShouldCall
} }
} }
@ -1025,6 +1026,7 @@ abstract class CoreReaderFragment :
pauseTTSButton?.setText(R.string.tts_resume) pauseTTSButton?.setText(R.string.tts_resume)
setActionAndStartTTSService(ACTION_PAUSE_OR_RESUME_TTS, true) setActionAndStartTTSService(ACTION_PAUSE_OR_RESUME_TTS, true)
} }
AudioManager.AUDIOFOCUS_GAIN -> { AudioManager.AUDIOFOCUS_GAIN -> {
pauseTTSButton?.setText(R.string.tts_pause) pauseTTSButton?.setText(R.string.tts_pause)
setActionAndStartTTSService(ACTION_PAUSE_OR_RESUME_TTS, false) setActionAndStartTTSService(ACTION_PAUSE_OR_RESUME_TTS, false)
@ -1310,12 +1312,14 @@ abstract class CoreReaderFragment :
startReadAloud() startReadAloud()
} }
} }
View.VISIBLE -> { View.VISIBLE -> {
if (isBackToTopEnabled) { if (isBackToTopEnabled) {
backToTopButton?.show() backToTopButton?.show()
} }
tts?.stop() tts?.stop()
} }
else -> {} else -> {}
} }
} }
@ -1586,6 +1590,7 @@ abstract class CoreReaderFragment :
} }
} }
} }
REQUEST_POST_NOTIFICATION_PERMISSION -> { REQUEST_POST_NOTIFICATION_PERMISSION -> {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
onReadAloudMenuClicked() onReadAloudMenuClicked()
@ -1740,18 +1745,22 @@ abstract class CoreReaderFragment :
// see https://github.com/kiwix/kiwix-android/issues/2607 // see https://github.com/kiwix/kiwix-android/issues/2607
intent.action = null intent.action = null
} }
CoreSearchWidget.TEXT_CLICKED -> { CoreSearchWidget.TEXT_CLICKED -> {
goToSearch(false) goToSearch(false)
intent.action = null intent.action = null
} }
CoreSearchWidget.STAR_CLICKED -> { CoreSearchWidget.STAR_CLICKED -> {
goToBookmarks() goToBookmarks()
intent.action = null intent.action = null
} }
CoreSearchWidget.MIC_CLICKED -> { CoreSearchWidget.MIC_CLICKED -> {
goToSearch(true) goToSearch(true)
intent.action = null intent.action = null
} }
Intent.ACTION_VIEW -> if (intent.type == null || Intent.ACTION_VIEW -> if (intent.type == null ||
intent.type != "application/octet-stream" intent.type != "application/octet-stream"
) { ) {
@ -2059,10 +2068,12 @@ abstract class CoreReaderFragment :
// This is my web site, so do not override; let my WebView load the page // This is my web site, so do not override; let my WebView load the page
handleEvent = true handleEvent = true
} }
url.startsWith("file://") -> { url.startsWith("file://") -> {
// To handle help page (loaded from resources) // To handle help page (loaded from resources)
handleEvent = true handleEvent = true
} }
url.startsWith(ZimFileReader.UI_URI.toString()) -> { url.startsWith(ZimFileReader.UI_URI.toString()) -> {
handleEvent = true handleEvent = true
} }

View File

@ -19,13 +19,12 @@ package org.kiwix.kiwixmobile.core.main
import android.app.Activity import android.app.Activity
import android.content.res.Configuration import android.content.res.Configuration
import android.os.Build
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.widget.TooltipCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.extensions.setToolTip
import org.kiwix.kiwixmobile.core.reader.ZimFileReader import org.kiwix.kiwixmobile.core.reader.ZimFileReader
const val REQUEST_FILE_SEARCH = 1236 const val REQUEST_FILE_SEARCH = 1236
@ -102,11 +101,7 @@ class MainMenu(
) )
tabSwitcher?.actionView?.apply { tabSwitcher?.actionView?.apply {
setOnClickListener { menuClickListener.onTabMenuClicked() } setOnClickListener { menuClickListener.onTabMenuClicked() }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { setToolTip(resources.getString(R.string.switch_tabs))
TooltipCompat.setTooltipText(this, resources.getText(R.string.switch_tabs))
} else {
contentDescription = resources.getText(R.string.switch_tabs)
}
} }
addNote.menuItemClickListener { menuClickListener.onAddNoteMenuClicked() } addNote.menuItemClickListener { menuClickListener.onAddNoteMenuClicked() }
randomArticle.menuItemClickListener { menuClickListener.onRandomArticleMenuClicked() } randomArticle.menuItemClickListener { menuClickListener.onRandomArticleMenuClicked() }
@ -126,6 +121,7 @@ class MainMenu(
menuClickListener.onHomeMenuClicked() menuClickListener.onHomeMenuClicked()
true true
} }
else -> false else -> false
} }

View File

@ -18,7 +18,6 @@
package org.kiwix.kiwixmobile.core.main package org.kiwix.kiwixmobile.core.main
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.os.Build
import android.text.TextUtils import android.text.TextUtils
import android.util.TypedValue import android.util.TypedValue
import android.view.View import android.view.View
@ -27,7 +26,6 @@ import android.widget.FrameLayout
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.TooltipCompat
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet import androidx.constraintlayout.widget.ConstraintSet
import androidx.constraintlayout.widget.ConstraintSet.BOTTOM import androidx.constraintlayout.widget.ConstraintSet.BOTTOM
@ -40,6 +38,7 @@ import com.google.android.material.card.MaterialCardView
import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.extensions.getAttribute import org.kiwix.kiwixmobile.core.extensions.getAttribute
import org.kiwix.kiwixmobile.core.extensions.setImageDrawableCompat import org.kiwix.kiwixmobile.core.extensions.setImageDrawableCompat
import org.kiwix.kiwixmobile.core.extensions.setToolTip
import org.kiwix.kiwixmobile.core.extensions.tint import org.kiwix.kiwixmobile.core.extensions.tint
import org.kiwix.kiwixmobile.core.utils.DimenUtils.getToolbarHeight import org.kiwix.kiwixmobile.core.utils.DimenUtils.getToolbarHeight
import org.kiwix.kiwixmobile.core.utils.DimenUtils.getWindowHeight import org.kiwix.kiwixmobile.core.utils.DimenUtils.getWindowHeight
@ -68,11 +67,7 @@ class TabsAdapter internal constructor(
.apply { .apply {
id = R.id.tabsAdapterCloseImageView id = R.id.tabsAdapterCloseImageView
setImageDrawableCompat(R.drawable.ic_clear_white_24dp) setImageDrawableCompat(R.drawable.ic_clear_white_24dp)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { setToolTip(resources.getString(R.string.close_tab))
TooltipCompat.setTooltipText(this, "Close Tab")
} else {
contentDescription = "Close Tab"
}
val outValue = TypedValue() val outValue = TypedValue()
context.theme.resolveAttribute(android.R.attr.actionBarItemBackground, outValue, true) context.theme.resolveAttribute(android.R.attr.actionBarItemBackground, outValue, true)
setBackgroundResource(outValue.resourceId) setBackgroundResource(outValue.resourceId)

View File

@ -214,6 +214,7 @@
<string name="search_bookmarks">Search bookmarks</string> <string name="search_bookmarks">Search bookmarks</string>
<string name="switch_tabs">Switch tabs</string> <string name="switch_tabs">Switch tabs</string>
<string name="close_all_tabs">Close all tabs</string> <string name="close_all_tabs">Close all tabs</string>
<string name="close_tab">Close tab</string>
<string name="pending_state">Pending</string> <string name="pending_state">Pending</string>
<string name="running_state">In Progress</string> <string name="running_state">In Progress</string>
<string name="complete">Complete</string> <string name="complete">Complete</string>