Loading app/src/main/AndroidManifest.xml +2 −4 Original line number Diff line number Diff line Loading @@ -28,8 +28,7 @@ <activity android:name=".RecorderActivity" android:exported="true" android:theme="@style/AppTheme.Main"> android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.PHONE_STATE" /> Loading @@ -53,8 +52,7 @@ <activity android:name=".ListActivity" android:label="@string/list_title" android:parentActivityName=".RecorderActivity" android:theme="@style/AppTheme.Main" /> android:parentActivityName=".RecorderActivity" /> <activity android:name=".DialogActivity" Loading app/src/main/java/org/lineageos/recorder/ListActivity.kt +19 −3 Original line number Diff line number Diff line Loading @@ -17,7 +17,11 @@ import android.widget.ProgressBar import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.Toolbar import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible import androidx.core.view.updatePadding import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver Loading Loading @@ -60,6 +64,9 @@ class ListActivity : AppCompatActivity(), RecordingListCallbacks { setContentView(R.layout.activity_list) // Setup edge-to-edge WindowCompat.setDecorFitsSystemWindows(window, false) setSupportActionBar(toolbar) supportActionBar?.let { it.setDisplayShowHomeEnabled(true) Loading @@ -80,10 +87,19 @@ class ListActivity : AppCompatActivity(), RecordingListCallbacks { listRecyclerView.layoutManager = LinearLayoutManager(this) listRecyclerView.adapter = adapter loadRecordings() ViewCompat.setOnApplyWindowInsetsListener(contentView) { _, windowInsets -> val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) listRecyclerView.updatePadding( bottom = insets.bottom, left = insets.left, right = insets.right, ) Utils.setFullScreen(window, contentView) Utils.setVerticalInsets(listRecyclerView) windowInsets } loadRecordings() } override fun onPlay(uri: Uri) { Loading app/src/main/java/org/lineageos/recorder/RecorderActivity.kt +16 −2 Original line number Diff line number Diff line Loading @@ -29,7 +29,11 @@ import android.widget.ImageView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible import androidx.core.view.updatePadding import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.floatingactionbutton.FloatingActionButton import org.lineageos.recorder.service.SoundRecorderService Loading Loading @@ -121,13 +125,23 @@ class RecorderActivity : AppCompatActivity(R.layout.activity_main) { public override fun onCreate(savedInstance: Bundle?) { super.onCreate(savedInstance) // Setup edge-to-edge WindowCompat.setDecorFitsSystemWindows(window, false) floatingActionButton.setOnClickListener { toggleSoundRecorder() } pauseResumeImageView.setOnClickListener { togglePause() } openSoundListImageView.setOnClickListener { openList() } settingsImageView.setOnClickListener { openSettings() } Utils.setFullScreen(window, contentView) Utils.setVerticalInsets(contentView) ViewCompat.setOnApplyWindowInsetsListener(contentView) { _, windowInsets -> val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) contentView.updatePadding( bottom = insets.bottom, ) windowInsets } lifecycle.addObserver(taskExecutor) Loading app/src/main/java/org/lineageos/recorder/list/RecordingItemViewHolder.kt +1 −1 Original line number Diff line number Diff line Loading @@ -63,7 +63,7 @@ class RecordingItemViewHolder( private fun showPopupMenu(view: View) { val wrapper = ContextThemeWrapper( itemView.context, R.style.AppTheme_Main_PopupMenuOverlapAnchor R.style.AppTheme_PopupMenuOverlapAnchor ) val popupMenu = PopupMenu(wrapper, view, Gravity.NO_GRAVITY) popupMenu.inflate(R.menu.menu_list_item) Loading app/src/main/java/org/lineageos/recorder/utils/Utils.kt +0 −29 Original line number Diff line number Diff line Loading @@ -7,41 +7,12 @@ package org.lineageos.recorder.utils import android.app.NotificationManager import android.content.Context import android.os.Build import android.view.View import android.view.Window import android.view.inputmethod.InputMethodManager import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import org.lineageos.recorder.service.SoundRecorderService import java.io.Closeable import java.io.IOException object Utils { fun setFullScreen(window: Window, view: View) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { window.setDecorFitsSystemWindows(false) return } var flags = view.systemUiVisibility flags = flags or (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) view.systemUiVisibility = flags } fun setVerticalInsets(view: View) { ViewCompat.setOnApplyWindowInsetsListener(view) { v: View, insets: WindowInsetsCompat -> val systemInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding( v.paddingLeft, v.paddingTop, v.paddingRight, systemInsets.bottom ) insets } } /** * Unconditionally close a `Closeable`. * Loading Loading
app/src/main/AndroidManifest.xml +2 −4 Original line number Diff line number Diff line Loading @@ -28,8 +28,7 @@ <activity android:name=".RecorderActivity" android:exported="true" android:theme="@style/AppTheme.Main"> android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.PHONE_STATE" /> Loading @@ -53,8 +52,7 @@ <activity android:name=".ListActivity" android:label="@string/list_title" android:parentActivityName=".RecorderActivity" android:theme="@style/AppTheme.Main" /> android:parentActivityName=".RecorderActivity" /> <activity android:name=".DialogActivity" Loading
app/src/main/java/org/lineageos/recorder/ListActivity.kt +19 −3 Original line number Diff line number Diff line Loading @@ -17,7 +17,11 @@ import android.widget.ProgressBar import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.Toolbar import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible import androidx.core.view.updatePadding import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver Loading Loading @@ -60,6 +64,9 @@ class ListActivity : AppCompatActivity(), RecordingListCallbacks { setContentView(R.layout.activity_list) // Setup edge-to-edge WindowCompat.setDecorFitsSystemWindows(window, false) setSupportActionBar(toolbar) supportActionBar?.let { it.setDisplayShowHomeEnabled(true) Loading @@ -80,10 +87,19 @@ class ListActivity : AppCompatActivity(), RecordingListCallbacks { listRecyclerView.layoutManager = LinearLayoutManager(this) listRecyclerView.adapter = adapter loadRecordings() ViewCompat.setOnApplyWindowInsetsListener(contentView) { _, windowInsets -> val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) listRecyclerView.updatePadding( bottom = insets.bottom, left = insets.left, right = insets.right, ) Utils.setFullScreen(window, contentView) Utils.setVerticalInsets(listRecyclerView) windowInsets } loadRecordings() } override fun onPlay(uri: Uri) { Loading
app/src/main/java/org/lineageos/recorder/RecorderActivity.kt +16 −2 Original line number Diff line number Diff line Loading @@ -29,7 +29,11 @@ import android.widget.ImageView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible import androidx.core.view.updatePadding import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.floatingactionbutton.FloatingActionButton import org.lineageos.recorder.service.SoundRecorderService Loading Loading @@ -121,13 +125,23 @@ class RecorderActivity : AppCompatActivity(R.layout.activity_main) { public override fun onCreate(savedInstance: Bundle?) { super.onCreate(savedInstance) // Setup edge-to-edge WindowCompat.setDecorFitsSystemWindows(window, false) floatingActionButton.setOnClickListener { toggleSoundRecorder() } pauseResumeImageView.setOnClickListener { togglePause() } openSoundListImageView.setOnClickListener { openList() } settingsImageView.setOnClickListener { openSettings() } Utils.setFullScreen(window, contentView) Utils.setVerticalInsets(contentView) ViewCompat.setOnApplyWindowInsetsListener(contentView) { _, windowInsets -> val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) contentView.updatePadding( bottom = insets.bottom, ) windowInsets } lifecycle.addObserver(taskExecutor) Loading
app/src/main/java/org/lineageos/recorder/list/RecordingItemViewHolder.kt +1 −1 Original line number Diff line number Diff line Loading @@ -63,7 +63,7 @@ class RecordingItemViewHolder( private fun showPopupMenu(view: View) { val wrapper = ContextThemeWrapper( itemView.context, R.style.AppTheme_Main_PopupMenuOverlapAnchor R.style.AppTheme_PopupMenuOverlapAnchor ) val popupMenu = PopupMenu(wrapper, view, Gravity.NO_GRAVITY) popupMenu.inflate(R.menu.menu_list_item) Loading
app/src/main/java/org/lineageos/recorder/utils/Utils.kt +0 −29 Original line number Diff line number Diff line Loading @@ -7,41 +7,12 @@ package org.lineageos.recorder.utils import android.app.NotificationManager import android.content.Context import android.os.Build import android.view.View import android.view.Window import android.view.inputmethod.InputMethodManager import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import org.lineageos.recorder.service.SoundRecorderService import java.io.Closeable import java.io.IOException object Utils { fun setFullScreen(window: Window, view: View) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { window.setDecorFitsSystemWindows(false) return } var flags = view.systemUiVisibility flags = flags or (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) view.systemUiVisibility = flags } fun setVerticalInsets(view: View) { ViewCompat.setOnApplyWindowInsetsListener(view) { v: View, insets: WindowInsetsCompat -> val systemInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding( v.paddingLeft, v.paddingTop, v.paddingRight, systemInsets.bottom ) insets } } /** * Unconditionally close a `Closeable`. * Loading