srctree

Robin Linden parent 30e00267 49e26d2f
Add an option to not need to confirm quitting

inlinesplit
atox/src/main/kotlin/settings/Settings.kt added: 58, removed: 9, total 49
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2020-2021 aTox contributors
// SPDX-FileCopyrightText: 2020-2022 aTox contributors
//
// SPDX-License-Identifier: GPL-3.0-only
 
@@ -88,4 +88,8 @@ class Settings @Inject constructor(private val ctx: Context) {
var disableScreenshots: Boolean
get() = preferences.getBoolean("disable_screenshots", false)
set(disable) = preferences.edit { putBoolean("disable_screenshots", disable) }
 
var confirmQuitting: Boolean
get() = preferences.getBoolean("confirm_quitting", true)
set(confirm) = preferences.edit { putBoolean("confirm_quitting", confirm) }
}
 
atox/src/main/kotlin/ui/contactlist/ContactListFragment.kt added: 58, removed: 9, total 49
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2019-2021 aTox contributors
// SPDX-FileCopyrightText: 2019-2022 aTox contributors
//
// SPDX-License-Identifier: GPL-3.0-only
 
@@ -281,6 +281,12 @@ class ContactListFragment :
R.id.settings -> findNavController().navigate(R.id.action_contactListFragment_to_settingsFragment)
R.id.export_tox_save -> exportToxSaveLauncher.launch(backupFileNameHint)
R.id.quit_tox -> {
if (!viewModel.quittingNeedsConfirmation()) {
viewModel.quitTox()
activity?.finishAffinity()
return false
}
 
AlertDialog.Builder(requireContext())
.setTitle(R.string.quit_confirm)
.setPositiveButton(R.string.quit) { _, _ ->
 
atox/src/main/kotlin/ui/contactlist/ContactListViewModel.kt added: 58, removed: 9, total 49
@@ -19,6 +19,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import ltd.evilcorp.atox.R
import ltd.evilcorp.atox.settings.Settings
import ltd.evilcorp.atox.tox.ToxStarter
import ltd.evilcorp.atox.ui.NotificationHelper
import ltd.evilcorp.core.vo.Contact
@@ -49,6 +50,7 @@ class ContactListViewModel @Inject constructor(
private val notificationHelper: NotificationHelper,
private val tox: Tox,
private val toxStarter: ToxStarter,
private val settings: Settings,
userManager: UserManager
) : ViewModel() {
val publicKey by lazy { tox.publicKey }
@@ -61,6 +63,8 @@ class ContactListViewModel @Inject constructor(
fun tryLoadTox(password: String?): ToxSaveStatus = toxStarter.tryLoadTox(password)
fun quitTox() = toxStarter.stopTox()
 
fun quittingNeedsConfirmation(): Boolean = settings.confirmQuitting
 
fun acceptFriendRequest(friendRequest: FriendRequest) = friendRequestManager.accept(friendRequest)
fun rejectFriendRequest(friendRequest: FriendRequest) = friendRequestManager.reject(friendRequest)
fun deleteContact(publicKey: PublicKey) {
 
atox/src/main/kotlin/ui/settings/SettingsFragment.kt added: 58, removed: 9, total 49
@@ -145,6 +145,9 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding>(FragmentSettingsB
vm.setFtAutoAccept(FtAutoAccept.values()[it])
}
 
settingConfirmQuitting.isChecked = vm.getConfirmQuitting()
settingConfirmQuitting.setOnClickListener { vm.setConfirmQuitting(settingConfirmQuitting.isChecked) }
 
if (vm.getProxyType() != ProxyType.None) {
vm.setUdpEnabled(false)
}
 
atox/src/main/kotlin/ui/settings/SettingsViewModel.kt added: 58, removed: 9, total 49
@@ -100,6 +100,11 @@ class SettingsViewModel @Inject constructor(
settings.autoAwayEnabled = enabled
}
 
fun getConfirmQuitting(): Boolean = settings.confirmQuitting
fun setConfirmQuitting(enabled: Boolean) {
settings.confirmQuitting = enabled
}
 
fun getAutoAwaySeconds() = settings.autoAwaySeconds
fun setAutoAwaySeconds(seconds: Long) {
settings.autoAwaySeconds = seconds
 
atox/src/main/res/layout/fragment_settings.xml added: 58, removed: 9, total 49
@@ -145,6 +145,32 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
 
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/dividerColor"/>
<androidx.constraintlayout.widget.ConstraintLayout
style="@style/OptionRow"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/OptionItemText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/pref_confirm_quitting"
app:layout_constraintEnd_toStartOf="@id/setting_confirm_quitting"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/setting_confirm_quitting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
 
 
atox/src/main/res/values/strings.xml added: 58, removed: 9, total 49
@@ -107,6 +107,7 @@
<string name="pref_udp_enabled">UDP enabled</string>
<string name="pref_heading_general">General</string>
<string name="pref_run_at_startup">Run at boot</string>
<string name="pref_confirm_quitting">Confirm app quit</string>
<string name="friend_request">Friend request</string>
<string name="status_available">Available</string>
<string name="status_away">Away</string>