Skip to content

Commit

Permalink
feat: add multi-touch gesture action: fullscree, back; replace menu i…
Browse files Browse the repository at this point in the history
…con from setting to three lines
  • Loading branch information
plateaukao committed Jun 17, 2022
1 parent 4b001e1 commit 3397908
Show file tree
Hide file tree
Showing 7 changed files with 74 additions and 63 deletions.
110 changes: 53 additions & 57 deletions app/src/main/java/de/baumann/browser/activity/BrowserActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ import de.baumann.browser.unit.*
import de.baumann.browser.unit.BrowserUnit.downloadFileId
import de.baumann.browser.unit.HelperUnit.toNormalScheme
import de.baumann.browser.unit.ViewUnit.dp
import de.baumann.browser.unit.ViewUnit.hideKeyboard
import de.baumann.browser.util.Constants
import de.baumann.browser.util.DebugT
import de.baumann.browser.view.*
Expand Down Expand Up @@ -443,58 +444,56 @@ open class BrowserActivity : FragmentActivity(), BrowserController, OnClickListe

override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
when (keyCode) {
KeyEvent.KEYCODE_DPAD_DOWN -> {
if (config.useUpDownPageTurn) {
ninjaWebView.pageDownWithNoAnimation()
}
}
KeyEvent.KEYCODE_DPAD_UP -> {
if (config.useUpDownPageTurn) {
ninjaWebView.pageUpWithNoAnimation()
}
}
KeyEvent.KEYCODE_VOLUME_DOWN -> {
return if (config.volumePageTurn) {
ninjaWebView.pageDownWithNoAnimation()
true
} else {
false
}
}
KeyEvent.KEYCODE_VOLUME_UP -> {
return if (config.volumePageTurn) {
ninjaWebView.pageUpWithNoAnimation()
true
} else {
false
}
}
KeyEvent.KEYCODE_DPAD_DOWN -> { if (config.useUpDownPageTurn) ninjaWebView.pageDownWithNoAnimation() }
KeyEvent.KEYCODE_DPAD_UP -> { if (config.useUpDownPageTurn) ninjaWebView.pageUpWithNoAnimation() }
KeyEvent.KEYCODE_VOLUME_DOWN -> { return handleVolumeDownKey() }
KeyEvent.KEYCODE_VOLUME_UP -> { return handleVolumeUpKey() }
KeyEvent.KEYCODE_MENU -> { showMenuDialog() ; return true }
KeyEvent.KEYCODE_BACK -> {
hideKeyboard()
if (overviewDialogController.isVisible()) {
hideOverview()
return true
}
if (fullscreenHolder != null || customView != null || videoView != null) {
return onHideCustomView()
} else if (!binding.appBar.isVisible && sp.getBoolean("sp_toolbarShow", true)) {
showToolbar()
} else if (!composeToolbarViewController.isDisplayed()) {
composeToolbarViewController.show()
} else {
if (ninjaWebView.canGoBack()) {
ninjaWebView.goBack()
} else {
removeAlbum(currentAlbumController!!)
}
}
return true
}
KeyEvent.KEYCODE_BACK -> { return handleBackKey() }
}
return false
}

private fun handleVolumeDownKey(): Boolean {
return if (config.volumePageTurn) {
ninjaWebView.pageDownWithNoAnimation()
true
} else {
false
}
}

private fun handleVolumeUpKey(): Boolean {
return if (config.volumePageTurn) {
ninjaWebView.pageUpWithNoAnimation()
true
} else {
false
}
}

private fun handleBackKey(): Boolean {
hideKeyboard()
if (overviewDialogController.isVisible()) {
hideOverview()
return true
}
if (fullscreenHolder != null || customView != null || videoView != null) {
return onHideCustomView()
} else if (!binding.appBar.isVisible && sp.getBoolean("sp_toolbarShow", true)) {
showToolbar()
} else if (!composeToolbarViewController.isDisplayed()) {
composeToolbarViewController.show()
} else {
if (ninjaWebView.canGoBack()) {
ninjaWebView.goBack()
} else {
removeAlbum(currentAlbumController!!)
}
}
return true
}

override fun showAlbum(controller: AlbumController) {
if (currentAlbumController != null) {
if (currentAlbumController == controller) {
Expand Down Expand Up @@ -1001,7 +1000,9 @@ open class BrowserActivity : FragmentActivity(), BrowserController, OnClickListe
CloseTab -> removeAlbum(currentAlbumController!!)
PageUp -> ninjaWebView.pageUpWithNoAnimation()
PageDown -> ninjaWebView.pageDownWithNoAnimation()
GestureType.Bookmark -> openBookmarkPage()
Bookmark -> openBookmarkPage()
Back -> handleBackKey()
Fullscreen -> fullscreen()
}
}

Expand All @@ -1024,14 +1025,6 @@ open class BrowserActivity : FragmentActivity(), BrowserController, OnClickListe

private fun openHistoryPage(amount: Int = 0) = overviewDialogController.openHistoryPage(amount)

// private fun openBookmarkPage() = BookmarkListDialog(
// this,
// lifecycleScope,
// bookmarkViewModel,
// gotoUrlAction = { url -> updateAlbum(url) },
// addTabAction = { title, url, isForeground -> addAlbum(title, url, isForeground) },
// splitScreenAction = { url -> toggleSplitScreen(url) }
// ).show()
private fun openBookmarkPage() = BookmarksDialogFragment(
lifecycleScope,
bookmarkViewModel,
Expand Down Expand Up @@ -1177,6 +1170,7 @@ open class BrowserActivity : FragmentActivity(), BrowserController, OnClickListe
showAlbum(webView)
if (url.isNotEmpty() && url != BrowserUnit.URL_ABOUT_BLANK) {
webView.loadUrl(url)
} else if (url == BrowserUnit.URL_ABOUT_BLANK) {
} else if (config.showRecentBookmarks) {
showRecentlyUsedBookmarks(webView)
}
Expand Down Expand Up @@ -1318,11 +1312,13 @@ open class BrowserActivity : FragmentActivity(), BrowserController, OnClickListe
if (progress < BrowserUnit.PROGRESS_MAX) {
updateRefresh(true)
progressBar.visibility = VISIBLE
} else {
} else { // web page loading complete
updateRefresh(false)
progressBar.visibility = GONE

scrollChange()

updateSavedAlbumInfo()
}
}

Expand Down
4 changes: 3 additions & 1 deletion app/src/main/java/de/baumann/browser/view/GuestureType.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ enum class GestureType(val value: String, val resId: Int) {
CloseTab("10", R.string.close_tab),
PageUp("11", R.string.page_up),
PageDown("12", R.string.page_down),
Bookmark("13", R.string.bookmarks);
Bookmark("13", R.string.bookmarks),
Back("14", R.string.back),
Fullscreen("15", R.string.fullscreen);

companion object {
fun from(value: String): GestureType = values().firstOrNull { it.value == value } ?: NothingHappen
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ open class ComposeDialogFragment: AppCompatDialogFragment(), KoinComponent {
dialog?.apply {
setStyle(STYLE_NO_TITLE, R.style.ComposeDialog)
requestWindowFeature(Window.FEATURE_NO_TITLE)
window?.setGravity((if (config.isToolbarOnTop) Gravity.CENTER else Gravity.BOTTOM) or Gravity.RIGHT)
window?.setGravity((if (config.isToolbarOnTop) Gravity.CENTER else Gravity.BOTTOM) or Gravity.END)
window?.setBackgroundDrawableResource(R.drawable.background_with_border_margin)
window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,16 @@ class ToolbarConfigDialogFragment: ComposeDialogFragment(){
return ComposeView(requireContext()).apply {
setContent {
AppCompatTheme {
Column(horizontalAlignment = Alignment.End) {
Column(
Modifier.width(IntrinsicSize.Max),
horizontalAlignment = Alignment.End,
) {
val actionInfoList = getCurrentActionList()
var rememberList by remember { mutableStateOf(actionInfoList) }

ToolbarList(
Modifier
.heightIn(100.dp, 600.dp)
.weight(1F, fill = false)
.width(300.dp)
.padding(2.dp), // for round corner spaces
rememberList,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ enum class ToolbarAction(
PageDown(iconResId = R.drawable.ic_page_down, titleResId = R.string.page_down),
TabCount(iconResId = R.drawable.icon_preview, titleResId = R.string.tab_preview),
Font(iconResId = R.drawable.icon_size, titleResId = R.string.font_size),
Settings(iconResId = R.drawable.icon_settings, titleResId = R.string.settings),
Settings(iconResId = R.drawable.ic_menu, titleResId = R.string.settings),
Bookmark(iconResId = R.drawable.ic_bookmarks, titleResId = R.string.bookmarks),
IconSetting(iconResId = R.drawable.ic_toolbar, titleResId = R.string.toolbars),
VerticalLayout(iconResId = R.drawable.ic_vertical_read, titleResId = R.string.vertical_read),
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/res/drawable/ic_menu.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<vector android:height="24dp"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="?attr/colorControlNormal" android:pathData="M3,18h18v-2L3,16v2zM3,13h18v-2L3,11v2zM3,6v2h18L21,6L3,6z"/>
</vector>
7 changes: 6 additions & 1 deletion app/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,15 @@

<style name="TouchAreaDialog" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
<item name="android:backgroundDimAmount">0</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowAnimationStyle">@style/MyAnimation.Window</item>
<item name="android:windowBackground">@drawable/backgound_with_border</item>
</style>

<style name="MyAnimation.Window" parent="@android:style/Animation.Activity">
<item name="android:windowEnterAnimation">@null</item>
<item name="android:windowExitAnimation">@null</item>
</style>

<style name="ComposeDialog" parent="TouchAreaDialog">
<item name="android:windowMinWidthMajor">100%</item>
<item name="android:windowMinWidthMinor">100%</item>
Expand Down

0 comments on commit 3397908

Please sign in to comment.