diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt index 6a87ab36b..e294b1990 100644 --- a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt @@ -4,6 +4,7 @@ import android.os.Bundle import android.view.MenuItem import android.view.View import android.view.ViewGroup.MarginLayoutParams +import android.widget.Toast import androidx.activity.result.ActivityResultCallback import androidx.annotation.IdRes import androidx.appcompat.view.ActionMode @@ -20,6 +21,8 @@ import com.google.android.material.appbar.AppBarLayout.LayoutParams.* import com.google.android.material.navigation.NavigationBarView import com.google.android.material.snackbar.Snackbar import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.koin.android.ext.android.get import org.koin.androidx.viewmodel.ext.android.viewModel @@ -60,6 +63,8 @@ class MainActivity : View.OnFocusChangeListener, SearchSuggestionListener, NavigationBarView.OnItemSelectedListener { + private var isConfirmingExit: Boolean = false + private val viewModel by viewModel() private val searchSuggestionViewModel by viewModel() private val voiceInputLauncher = registerForActivityResult(VoiceInputContract(), VoiceInputCallback()) @@ -131,6 +136,7 @@ class MainActivity : setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE) runOnCommit { onSearchClosed() } } + shouldHandleExitConfirmation() -> lifecycleScope.launch { resetExitConfirmation() } else -> super.onBackPressed() } } @@ -147,6 +153,19 @@ class MainActivity : return super.onOptionsItemSelected(item) } + private suspend fun resetExitConfirmation() { + isConfirmingExit = true + val toast = Toast.makeText(this, R.string.confirm_exit, Toast.LENGTH_LONG) + toast.show() + delay(2000) + toast.cancel() + isConfirmingExit = false + } + + private fun shouldHandleExitConfirmation(): Boolean { + return !isConfirmingExit + } + override fun onClick(v: View) { when (v.id) { R.id.fab -> viewModel.openLastReader() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eb78d4db9..91ef4caa8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -337,4 +337,5 @@ Changelog Explore Tools + Press back again to exit \ No newline at end of file