srctree

Akito parent 025fb20b 3001d1d9
Add call confirmation setting

inlinesplit
atox/src/main/kotlin/settings/Settings.kt added: 60, removed: 8, total 52
@@ -92,4 +92,8 @@ class Settings @Inject constructor(private val ctx: Context) {
var confirmQuitting: Boolean
get() = preferences.getBoolean("confirm_quitting", true)
set(confirm) = preferences.edit { putBoolean("confirm_quitting", confirm) }
 
var confirmCalling: Boolean
get() = preferences.getBoolean("confirm_calling", true)
set(confirm) = preferences.edit { putBoolean("confirm_calling", confirm) }
}
 
atox/src/main/kotlin/ui/chat/ChatFragment.kt added: 60, removed: 8, total 52
@@ -176,7 +176,17 @@ class ChatFragment : BaseFragment<FragmentChatBinding>(FragmentChatBinding::infl
true
}
R.id.call -> {
navigateToCallScreen()
if (!viewModel.callingNeedsConfirmation()) {
navigateToCallScreen()
return@setOnMenuItemClickListener true
}
AlertDialog.Builder(requireContext())
.setTitle(R.string.call_confirm)
.setPositiveButton(R.string.call) { _, _ ->
navigateToCallScreen()
}
.setNegativeButton(android.R.string.cancel, null)
.show()
true
}
else -> super.onOptionsItemSelected(item)
 
atox/src/main/kotlin/ui/chat/ChatViewModel.kt added: 60, removed: 8, total 52
@@ -22,6 +22,7 @@ import kotlinx.coroutines.flow.transform
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import ltd.evilcorp.atox.R
import ltd.evilcorp.atox.settings.Settings
import ltd.evilcorp.atox.ui.NotificationHelper
import ltd.evilcorp.core.vo.ConnectionStatus
import ltd.evilcorp.core.vo.Contact
@@ -57,6 +58,7 @@ class ChatViewModel @Inject constructor(
private val resolver: ContentResolver,
private val context: Context,
private val scope: CoroutineScope,
private val settings: Settings,
) : ViewModel() {
private var publicKey = PublicKey("")
private var sentTyping = false
@@ -67,6 +69,7 @@ class ChatViewModel @Inject constructor(
}
val fileTransfers: LiveData<List<FileTransfer>> by lazy { fileTransferManager.transfersFor(publicKey).asLiveData() }
 
fun callingNeedsConfirmation(): Boolean = settings.confirmCalling
val ongoingCall = callManager.inCall.asLiveData()
 
val callState get() = contactManager.get(publicKey)
 
atox/src/main/kotlin/ui/settings/SettingsFragment.kt added: 60, removed: 8, total 52
@@ -150,6 +150,9 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding>(FragmentSettingsB
settingConfirmQuitting.isChecked = vm.getConfirmQuitting()
settingConfirmQuitting.setOnCheckedChangeListener { _, isChecked -> vm.setConfirmQuitting(isChecked) }
 
settingConfirmCalling.isChecked = vm.getConfirmCalling()
settingConfirmCalling.setOnCheckedChangeListener { _, isChecked -> vm.setConfirmCalling(isChecked) }
 
if (vm.getProxyType() != ProxyType.None) {
vm.setUdpEnabled(false)
}
 
atox/src/main/kotlin/ui/settings/SettingsViewModel.kt added: 60, removed: 8, total 52
@@ -105,6 +105,11 @@ class SettingsViewModel @Inject constructor(
settings.confirmQuitting = enabled
}
 
fun getConfirmCalling(): Boolean = settings.confirmCalling
fun setConfirmCalling(enabled: Boolean) {
settings.confirmCalling = enabled
}
 
fun getAutoAwaySeconds() = settings.autoAwaySeconds
fun setAutoAwaySeconds(seconds: Long) {
settings.autoAwaySeconds = seconds
 
atox/src/main/res/layout/fragment_settings.xml added: 60, removed: 8, total 52
@@ -171,6 +171,31 @@
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_calling"
app:layout_constraintEnd_toStartOf="@id/setting_confirm_calling"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/setting_confirm_calling"
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: 60, removed: 8, total 52
@@ -38,6 +38,7 @@
<string name="update">Update</string>
<string name="quit">Quit</string>
<string name="quit_confirm">Are you sure you wish to quit?</string>
<string name="call_confirm">Are you sure you wish to call?</string>
<!-- Friend request notification -->
<string name="friend_requests">Friend requests</string>
<string name="friend_request_from">Friend request from %1$s</string>
@@ -108,6 +109,7 @@
<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="pref_confirm_calling">Confirm call</string>
<string name="friend_request">Friend request</string>
<string name="status_available">Available</string>
<string name="status_away">Away</string>