Skip to content

Commit f8d33e4

Browse files
committed
refactor: update edge-to-edge implementation
1 parent 282b61c commit f8d33e4

21 files changed

+143
-162
lines changed

app/src/main/kotlin/org/fossify/gallery/activities/EditActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ class EditActivity : SimpleActivity() {
121121
super.onResume()
122122
isEditingWithThirdParty = false
123123
binding.bottomEditorDrawActions.bottomDrawWidth.setColors(getProperTextColor(), getProperPrimaryColor(), getProperBackgroundColor())
124-
setupTopAppBar(binding.editorToolbar, NavigationIcon.Arrow)
124+
setupTopAppBar(binding.editorAppbar, NavigationIcon.Arrow)
125125
}
126126

127127
override fun onStop() {

app/src/main/kotlin/org/fossify/gallery/activities/ExcludedFoldersActivity.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,16 @@ class ExcludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
2222
setupOptionsMenu()
2323
binding.manageFoldersToolbar.title = getString(org.fossify.commons.R.string.excluded_folders)
2424

25-
updateEdgeToEdge(topAppBar = binding.manageFoldersToolbar, scrollingView = binding.manageFoldersList)
26-
setupMaterialScrollListener(binding.manageFoldersList, binding.manageFoldersToolbar)
25+
setupEdgeToEdge(
26+
padTopSystem = listOf(binding.manageFoldersAppbar),
27+
padBottomSystem = listOf(binding.manageFoldersList)
28+
)
29+
setupMaterialScrollListener(binding.manageFoldersList, binding.manageFoldersAppbar)
2730
}
2831

2932
override fun onResume() {
3033
super.onResume()
31-
setupTopAppBar(binding.manageFoldersToolbar, NavigationIcon.Arrow)
34+
setupTopAppBar(binding.manageFoldersAppbar, NavigationIcon.Arrow)
3235
}
3336

3437
private fun updateFolders() {

app/src/main/kotlin/org/fossify/gallery/activities/HiddenFoldersActivity.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,16 @@ class HiddenFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
2525
setupOptionsMenu()
2626
binding.manageFoldersToolbar.title = getString(R.string.hidden_folders)
2727

28-
updateEdgeToEdge(topAppBar = binding.manageFoldersToolbar, scrollingView = binding.manageFoldersList)
29-
setupMaterialScrollListener(binding.manageFoldersList, binding.manageFoldersToolbar)
28+
setupEdgeToEdge(
29+
padTopSystem = listOf(binding.manageFoldersAppbar),
30+
padBottomSystem = listOf(binding.manageFoldersList)
31+
)
32+
setupMaterialScrollListener(binding.manageFoldersList, binding.manageFoldersAppbar)
3033
}
3134

3235
override fun onResume() {
3336
super.onResume()
34-
setupTopAppBar(binding.manageFoldersToolbar, NavigationIcon.Arrow)
37+
setupTopAppBar(binding.manageFoldersAppbar, NavigationIcon.Arrow)
3538
}
3639

3740
private fun updateFolders() {

app/src/main/kotlin/org/fossify/gallery/activities/IncludedFoldersActivity.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,16 @@ class IncludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
2222
setupOptionsMenu()
2323
binding.manageFoldersToolbar.title = getString(R.string.include_folders)
2424

25-
updateEdgeToEdge(topAppBar = binding.manageFoldersToolbar, scrollingView = binding.manageFoldersList)
26-
setupMaterialScrollListener(binding.manageFoldersList, binding.manageFoldersToolbar)
25+
setupEdgeToEdge(
26+
padTopSystem = listOf(binding.manageFoldersAppbar),
27+
padBottomSystem = listOf(binding.manageFoldersList)
28+
)
29+
setupMaterialScrollListener(binding.manageFoldersList, binding.manageFoldersAppbar)
2730
}
2831

2932
override fun onResume() {
3033
super.onResume()
31-
setupTopAppBar(binding.manageFoldersToolbar, NavigationIcon.Arrow)
34+
setupTopAppBar(binding.manageFoldersAppbar, NavigationIcon.Arrow)
3235
}
3336

3437
private fun updateFolders() {

app/src/main/kotlin/org/fossify/gallery/activities/MainActivity.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,8 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
230230
setupOptionsMenu()
231231
refreshMenuItems()
232232

233-
updateEdgeToEdge(
234-
topAppBar = binding.mainMenu.getToolbar(),
235-
scrollingView = binding.directoriesGrid,
233+
setupEdgeToEdge(
234+
padBottomImeAndSystem = listOf(binding.directoriesGrid)
236235
)
237236

238237
binding.directoriesRefreshLayout.setOnRefreshListener { getDirectories() }
@@ -447,7 +446,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
447446

448447
private fun refreshMenuItems() {
449448
if (!mIsThirdPartyIntent) {
450-
binding.mainMenu.getToolbar().menu.apply {
449+
binding.mainMenu.requireToolbar().menu.apply {
451450
findItem(R.id.column_count).isVisible = config.viewTypeFolders == VIEW_TYPE_GRID
452451
findItem(R.id.set_as_default_folder).isVisible = !config.defaultFolder.isEmpty()
453452
findItem(R.id.open_recycle_bin).isVisible =
@@ -457,7 +456,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
457456
}
458457
}
459458

460-
binding.mainMenu.getToolbar().menu.apply {
459+
binding.mainMenu.requireToolbar().menu.apply {
461460
findItem(R.id.temporarily_show_hidden).isVisible = !config.shouldShowHidden
462461
findItem(R.id.stop_showing_hidden).isVisible =
463462
(!isRPlus() || isExternalStorageManager()) && config.temporarilyShowHidden
@@ -474,7 +473,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
474473
R.menu.menu_main
475474
}
476475

477-
binding.mainMenu.getToolbar().inflateMenu(menuId)
476+
binding.mainMenu.requireToolbar().inflateMenu(menuId)
478477
binding.mainMenu.toggleHideOnScroll(!config.scrollHorizontally)
479478
binding.mainMenu.setupMenu()
480479

@@ -491,7 +490,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
491490
binding.directoriesSwitchSearching.beVisibleIf(text.isNotEmpty())
492491
}
493492

494-
binding.mainMenu.getToolbar().setOnMenuItemClickListener { menuItem ->
493+
binding.mainMenu.requireToolbar().setOnMenuItemClickListener { menuItem ->
495494
when (menuItem.itemId) {
496495
R.id.sort -> showSortingDialog()
497496
R.id.filter -> showFilterMediaDialog()
@@ -516,7 +515,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
516515
}
517516

518517
private fun updateMenuColors() {
519-
updateStatusbarColor(getProperBackgroundColor())
520518
binding.mainMenu.updateColors()
521519
}
522520

app/src/main/kotlin/org/fossify/gallery/activities/MediaActivity.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,9 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
173173
setupOptionsMenu()
174174
refreshMenuItems()
175175
storeStateVariables()
176-
updateEdgeToEdge(
177-
topAppBar = binding.mediaSearchMenu.getToolbar(),
178-
scrollingView = binding.mediaGrid,
176+
setupEdgeToEdge(
177+
padTopSystem = listOf(binding.mediaMenu),
178+
padBottomImeAndSystem = listOf(binding.mediaGrid)
179179
)
180180

181181
if (mShowAll) {
@@ -329,7 +329,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
329329
val isDefaultFolder = !config.defaultFolder.isEmpty()
330330
&& File(config.defaultFolder).compareTo(File(mPath)) == 0
331331

332-
binding.mediaMenu.getToolbar().menu.apply {
332+
binding.mediaMenu.requireToolbar().menu.apply {
333333
findItem(R.id.group).isVisible = !config.scrollHorizontally
334334

335335
findItem(R.id.empty_recycle_bin).isVisible = mPath == RECYCLE_BIN
@@ -357,7 +357,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
357357
}
358358

359359
private fun setupOptionsMenu() {
360-
binding.mediaMenu.getToolbar().inflateMenu(R.menu.menu_media)
360+
binding.mediaMenu.requireToolbar().inflateMenu(R.menu.menu_media)
361361
binding.mediaMenu.toggleHideOnScroll(!config.scrollHorizontally)
362362
binding.mediaMenu.setupMenu()
363363

@@ -367,7 +367,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
367367
binding.mediaRefreshLayout.isEnabled = text.isEmpty() && config.enablePullToRefresh
368368
}
369369

370-
binding.mediaMenu.getToolbar().setOnMenuItemClickListener { menuItem ->
370+
binding.mediaMenu.requireToolbar().setOnMenuItemClickListener { menuItem ->
371371
when (menuItem.itemId) {
372372
R.id.sort -> showSortingDialog()
373373
R.id.filter -> showFilterMediaDialog()
@@ -410,7 +410,6 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
410410
}
411411

412412
private fun updateMenuColors() {
413-
updateStatusbarColor(getProperBackgroundColor())
414413
binding.mediaMenu.updateColors()
415414
}
416415

app/src/main/kotlin/org/fossify/gallery/activities/PhotoVideoActivity.kt

Lines changed: 21 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@ package org.fossify.gallery.activities
33
import android.content.Intent
44
import android.content.res.Configuration
55
import android.graphics.Color
6-
import android.graphics.drawable.ColorDrawable
76
import android.net.Uri
87
import android.os.Bundle
98
import android.provider.MediaStore
109
import android.text.Html
11-
import android.view.View
1210
import android.widget.RelativeLayout
1311
import org.fossify.commons.dialogs.PropertiesDialog
1412
import org.fossify.commons.extensions.*
@@ -23,6 +21,9 @@ import org.fossify.gallery.fragments.ViewPagerFragment
2321
import org.fossify.gallery.helpers.*
2422
import org.fossify.gallery.models.Medium
2523
import java.io.File
24+
import androidx.core.graphics.drawable.toDrawable
25+
import androidx.core.view.ViewCompat
26+
import androidx.core.view.WindowInsetsCompat
2627

2728
open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentListener {
2829
private var mMedium: Medium? = null
@@ -36,10 +37,11 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
3637
private val binding by viewBinding(FragmentHolderBinding::inflate)
3738

3839
public override fun onCreate(savedInstanceState: Bundle?) {
39-
showTransparentTop = true
40-
4140
super.onCreate(savedInstanceState)
4241
setContentView(binding.root)
42+
setupEdgeToEdge(
43+
padBottomSystem = listOf(binding.bottomActions.bottomActionsWrapper)
44+
)
4345
if (checkAppSideloading()) {
4446
return
4547
}
@@ -53,29 +55,14 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
5355

5456
override fun onResume() {
5557
super.onResume()
56-
57-
if (config.bottomActions) {
58-
window.navigationBarColor = Color.TRANSPARENT
59-
} else {
60-
setTranslucentNavigation()
61-
}
62-
6358
if (config.blackBackground) {
64-
updateStatusbarColor(Color.BLACK)
59+
binding.fragmentHolder.background = Color.BLACK.toDrawable()
6560
}
6661
}
6762

6863
override fun onConfigurationChanged(newConfig: Configuration) {
6964
super.onConfigurationChanged(newConfig)
7065
initBottomActionsLayout()
71-
72-
binding.topShadow.layoutParams.height = statusBarHeight + actionBarHeight
73-
(binding.fragmentViewerAppbar.layoutParams as RelativeLayout.LayoutParams).topMargin = statusBarHeight
74-
if (!portrait && navigationBarOnSide && navigationBarWidth > 0) {
75-
binding.fragmentViewerToolbar.setPadding(0, 0, navigationBarWidth, 0)
76-
} else {
77-
binding.fragmentViewerToolbar.setPadding(0, 0, 0, 0)
78-
}
7966
}
8067

8168
fun refreshMenuItems() {
@@ -91,7 +78,6 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
9178
}
9279

9380
private fun setupOptionsMenu() {
94-
(binding.fragmentViewerAppbar.layoutParams as RelativeLayout.LayoutParams).topMargin = statusBarHeight
9581
binding.fragmentViewerToolbar.apply {
9682
setTitleTextColor(Color.WHITE)
9783
overflowIcon = resources.getColoredDrawableWithColor(org.fossify.commons.R.drawable.ic_three_dots_vector, Color.WHITE)
@@ -194,15 +180,8 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
194180
}
195181
}
196182

197-
binding.topShadow.layoutParams.height = statusBarHeight + actionBarHeight
198-
if (!portrait && navigationBarOnSide && navigationBarWidth > 0) {
199-
binding.fragmentViewerToolbar.setPadding(0, 0, navigationBarWidth, 0)
200-
} else {
201-
binding.fragmentViewerToolbar.setPadding(0, 0, 0, 0)
202-
}
203-
204183
checkNotchSupport()
205-
showSystemUI(true)
184+
showSystemUI()
206185
val bundle = Bundle()
207186
val file = File(mUri.toString())
208187
val intentType = intent.type ?: ""
@@ -228,7 +207,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
228207
}
229208

230209
if (config.blackBackground) {
231-
binding.fragmentHolder.background = ColorDrawable(Color.BLACK)
210+
binding.fragmentHolder.background = Color.BLACK.toDrawable()
232211
}
233212

234213
if (config.maxBrightness) {
@@ -237,9 +216,16 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
237216
window.attributes = attributes
238217
}
239218

240-
window.decorView.setOnSystemUiVisibilityChangeListener { visibility ->
241-
val isFullscreen = visibility and View.SYSTEM_UI_FLAG_FULLSCREEN != 0
242-
mFragment?.fullscreenToggled(isFullscreen)
219+
ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { _, insets ->
220+
val systemBarsVisible = insets.isVisible(
221+
WindowInsetsCompat.Type.statusBars() or WindowInsetsCompat.Type.navigationBars()
222+
)
223+
val fullscreen = !systemBarsVisible
224+
if (mIsFullScreen != fullscreen) {
225+
mIsFullScreen = fullscreen
226+
mFragment?.fullscreenToggled(fullscreen)
227+
}
228+
insets
243229
}
244230

245231
initBottomActions()
@@ -332,7 +318,6 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
332318
}
333319

334320
private fun initBottomActionsLayout() {
335-
binding.bottomActions.root.layoutParams.height = resources.getDimension(R.dimen.bottom_actions_height).toInt() + navigationBarHeight
336321
if (config.bottomActions) {
337322
binding.bottomActions.root.beVisible()
338323
} else {
@@ -386,11 +371,8 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList
386371

387372
override fun fragmentClicked() {
388373
mIsFullScreen = !mIsFullScreen
389-
if (mIsFullScreen) {
390-
hideSystemUI(true)
391-
} else {
392-
showSystemUI(true)
393-
}
374+
if (mIsFullScreen) hideSystemUI() else showSystemUI()
375+
mFragment?.fullscreenToggled(mIsFullScreen)
394376

395377
val newAlpha = if (mIsFullScreen) 0f else 1f
396378
binding.topShadow.animate().alpha(newAlpha).start()

app/src/main/kotlin/org/fossify/gallery/activities/SearchActivity.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener {
3939
super.onCreate(savedInstanceState)
4040
setContentView(binding.root)
4141
setupOptionsMenu()
42-
updateEdgeToEdge(topAppBar = binding.searchMenu.getToolbar(), scrollingView = binding.searchGrid)
42+
setupEdgeToEdge(
43+
padTopSystem = listOf(binding.searchMenu),
44+
padBottomImeAndSystem = listOf(binding.searchGrid)
45+
)
4346
binding.searchEmptyTextPlaceholder.setTextColor(getProperTextColor())
4447
getAllMedia()
4548
binding.searchFastscroller.updateColors(getProperPrimaryColor())
@@ -56,7 +59,7 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener {
5659
}
5760

5861
private fun setupOptionsMenu() {
59-
binding.searchMenu.getToolbar().inflateMenu(R.menu.menu_search)
62+
binding.searchMenu.requireToolbar().inflateMenu(R.menu.menu_search)
6063
binding.searchMenu.toggleHideOnScroll(true)
6164
binding.searchMenu.setupMenu()
6265
binding.searchMenu.toggleForceArrowBackIcon(true)
@@ -76,7 +79,7 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener {
7679
textChanged(text)
7780
}
7881

79-
binding.searchMenu.getToolbar().setOnMenuItemClickListener { menuItem ->
82+
binding.searchMenu.requireToolbar().setOnMenuItemClickListener { menuItem ->
8083
when (menuItem.itemId) {
8184
R.id.toggle_filename -> toggleFilenameVisibility()
8285
else -> return@setOnMenuItemClickListener false
@@ -86,7 +89,6 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener {
8689
}
8790

8891
private fun updateMenuColors() {
89-
updateStatusbarColor(getProperBackgroundColor())
9092
binding.searchMenu.updateColors()
9193
}
9294

app/src/main/kotlin/org/fossify/gallery/activities/SetWallpaperActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class SetWallpaperActivity : SimpleActivity(), CropImageView.OnCropImageComplete
5454

5555
override fun onResume() {
5656
super.onResume()
57-
setupTopAppBar(binding.setWallpaperToolbar, NavigationIcon.Arrow)
57+
setupTopAppBar(binding.setWallpaperAppbar, NavigationIcon.Arrow)
5858
}
5959

6060
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {

app/src/main/kotlin/org/fossify/gallery/activities/SettingsActivity.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,16 @@ class SettingsActivity : SimpleActivity() {
3838
super.onCreate(savedInstanceState)
3939
setContentView(binding.root)
4040

41-
updateEdgeToEdge(topAppBar = binding.settingsToolbar, scrollingView = binding.settingsNestedScrollview)
42-
setupMaterialScrollListener(binding.settingsNestedScrollview, binding.settingsToolbar)
41+
setupEdgeToEdge(
42+
padTopSystem = listOf(binding.settingsAppbar),
43+
padBottomSystem = listOf(binding.settingsNestedScrollview)
44+
)
45+
setupMaterialScrollListener(binding.settingsNestedScrollview, binding.settingsAppbar)
4346
}
4447

4548
override fun onResume() {
4649
super.onResume()
47-
setupTopAppBar(binding.settingsToolbar, NavigationIcon.Arrow)
50+
setupTopAppBar(binding.settingsAppbar, NavigationIcon.Arrow)
4851
setupSettingItems()
4952
}
5053

0 commit comments

Comments
 (0)