Skip to content

Commit

Permalink
hide buttons when scrolling translation
Browse files Browse the repository at this point in the history
  • Loading branch information
plateaukao committed Sep 12, 2021
1 parent b02bb5d commit 8781fd0
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,32 @@ import de.baumann.browser.unit.ViewUnit.dp
import de.baumann.browser.util.TranslationLanguage
import de.baumann.browser.view.NinjaToast
import de.baumann.browser.view.NinjaWebView
import de.baumann.browser.view.NinjaWebView.OnScrollChangeListener
import de.baumann.browser.view.Orientation
import de.baumann.browser.view.TwoPaneLayout
import de.baumann.browser.view.dialog.TranslationLanguageDialog
import java.lang.Math.abs

class TranslationViewController(
private val activity: Activity,
private val translationViewBinding: TranslationPanelBinding,
private val twoPaneLayout: TwoPaneLayout,
private val showTranslationAction: () -> Unit,
private val onTranslationClosed: () -> Unit,
private val onScrollChangeListener: NinjaWebView.OnScrollChangeListener
private val onScrollChangeListener: OnScrollChangeListener
) {
private val config: ConfigManager by lazy { ConfigManager(activity) }
private val webView: NinjaWebView by lazy {
NinjaWebView(activity, null).apply {
shouldHideTranslateContext = true
setScrollChangeListener(object: OnScrollChangeListener {
override fun onScrollChange(scrollY: Int, oldScrollY: Int) {
if (isScrollSynced) onScrollChangeListener.onScrollChange(scrollY, oldScrollY)
if (abs(scrollY - oldScrollY) > 10) {
hideControlButtons()
}
}
})
}
}
private val pageContainer: ViewGroup = translationViewBinding.pageContainer
Expand All @@ -54,12 +64,7 @@ class TranslationViewController(
translationViewBinding.translationFontMinus.setOnClickListener { decreaseFontSize() }

translationViewBinding.translationClose.setOnClickListener { toggleTranslationWindow(false, onTranslationClosed) }
translationViewBinding.translationClose.setOnLongClickListener{
translationViewBinding.pageScroller.visibility = INVISIBLE
translationViewBinding.controlsContainer.visibility = INVISIBLE
translationViewBinding.expandedButton.visibility = VISIBLE
true
}
translationViewBinding.translationClose.setOnLongClickListener{ hideControlButtons(); true }

translationViewBinding.translationOrientation.setOnClickListener {
val orientation = if (twoPaneLayout.getOrientation() == Orientation.Vertical) Orientation.Horizontal else Orientation.Vertical
Expand All @@ -68,15 +73,9 @@ class TranslationViewController(

translationViewBinding.translationOrientation.setOnLongClickListener{ twoPaneLayout.switchPanels() ; true }

translationViewBinding.syncScroll.setOnClickListener {
toggleSyncScroll(!isScrollSynced)
}
translationViewBinding.syncScroll.setOnClickListener { toggleSyncScroll(!isScrollSynced) }

translationViewBinding.expandedButton.setOnClickListener {
translationViewBinding.pageScroller.visibility = VISIBLE
translationViewBinding.controlsContainer.visibility = VISIBLE
translationViewBinding.expandedButton.visibility = INVISIBLE
}
translationViewBinding.expandedButton.setOnClickListener { showControlButtons() }

translationViewBinding.translationLanguage.text = config.translationLanguage.value
translationViewBinding.translationLanguage.setOnClickListener {
Expand All @@ -87,6 +86,18 @@ class TranslationViewController(
}
}

private fun hideControlButtons() {
translationViewBinding.pageScroller.visibility = INVISIBLE
translationViewBinding.controlsContainer.visibility = INVISIBLE
translationViewBinding.expandedButton.visibility = VISIBLE
}

private fun showControlButtons() {
translationViewBinding.pageScroller.visibility = VISIBLE
translationViewBinding.controlsContainer.visibility = VISIBLE
translationViewBinding.expandedButton.visibility = INVISIBLE
}

private fun changeTranslationLanguage(translationLanguage: TranslationLanguage) {
val uri = Uri.parse(webView.url)
val newUri = uri.removeQueryParam("_x_tr_tl").buildUpon()
Expand Down Expand Up @@ -133,8 +144,6 @@ class TranslationViewController(

private fun toggleSyncScroll(shouldSyncScroll: Boolean = false) {
isScrollSynced = shouldSyncScroll
val listener = if (isScrollSynced) onScrollChangeListener else null
webView.setScrollChangeListener(listener)
val drawable = if (isScrollSynced) R.drawable.selected_border_bg else R.drawable.backgound_with_border
translationViewBinding.syncScroll.setBackgroundResource(drawable)
}
Expand Down Expand Up @@ -166,11 +175,11 @@ class TranslationViewController(

// handle translate url
if (config.translationMode == TranslationMode.PAPAGO_URL) {
updatePageViews(0)
updatePageViews(1)
translateUrl(buildPUrlTranslateUrl(text))
return
} else if (config.translationMode == TranslationMode.GOOGLE_URL) {
updatePageViews(0)
updatePageViews(1)
translateUrl(buildGUrlTranslateUrl(text))
return
}
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/layout/translation_panel.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:paddingBottom="2dp"
android:background="@color/color_transparent">

<HorizontalScrollView
Expand Down

0 comments on commit 8781fd0

Please sign in to comment.