From fbe5885d08f7c59922bd1ae6a8794e4e0a504cad Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Sat, 11 Jan 2025 14:15:12 +0100 Subject: [PATCH] Updated numpad to show letters --- .../java/org/linphone/core/CorePreferences.kt | 4 + .../ui/main/history/model/NumpadModel.kt | 34 +- app/src/main/res/layout/call_numpad_digit.xml | 2 +- .../layout/call_numpad_digit_with_letters.xml | 3 + .../layout/call_numpad_digit_with_plus.xml | 53 ++++ .../call_numpad_digit_with_voicemail.xml | 54 ++++ .../layout/start_call_numpad_bottom_sheet.xml | 292 ++++++++---------- 7 files changed, 280 insertions(+), 162 deletions(-) create mode 100644 app/src/main/res/layout/call_numpad_digit_with_plus.xml create mode 100644 app/src/main/res/layout/call_numpad_digit_with_voicemail.xml diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index eb71a1017..20891c000 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -280,6 +280,10 @@ class CorePreferences val automaticallyShowDialpad: Boolean get() = config.getBool("ui", "automatically_show_dialpad", false) + @get:WorkerThread + val showLettersOnDialpad: Boolean + get() = config.getBool("ui", "show_letters_on_dialpad", true) + // Paths @get:WorkerThread diff --git a/app/src/main/java/org/linphone/ui/main/history/model/NumpadModel.kt b/app/src/main/java/org/linphone/ui/main/history/model/NumpadModel.kt index f92da154d..2a98dafb7 100644 --- a/app/src/main/java/org/linphone/ui/main/history/model/NumpadModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/model/NumpadModel.kt @@ -22,7 +22,9 @@ package org.linphone.ui.main.history.model import androidx.annotation.UiThread import androidx.lifecycle.MutableLiveData import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.core.tools.Log +import org.linphone.utils.LinphoneUtils open class NumpadModel @UiThread @@ -40,6 +42,20 @@ open class NumpadModel val digits = MutableLiveData() + val voicemailAvailable = MutableLiveData() + + val showLetters = MutableLiveData() + + init { + coreContext.postOnCoreThread { + showLetters.postValue(corePreferences.showLettersOnDialpad) + + val account = LinphoneUtils.getDefaultAccount() + val voicemailAddress = account?.params?.voicemailAddress + voicemailAvailable.postValue(voicemailAddress != null) + } + } + @UiThread fun onDigitClicked(value: String) { Log.i("$TAG Clicked on digit [$value]") @@ -54,16 +70,22 @@ open class NumpadModel @UiThread fun onDigitLongClicked(value: String): Boolean { - Log.i("$TAG Long clicked on digit [$value]") - onDigitClicked.invoke(value) - return true + if (value == "0") { // Special case + Log.i("$TAG Long clicked on digit [$value]") + onDigitClicked.invoke("+") + return true + } + return false } @UiThread fun onVoicemailLongClicked(): Boolean { - Log.i("$TAG Long clicked on voicemail icon") - onVoicemailClicked.invoke() - return true + if (voicemailAvailable.value == true) { + Log.i("$TAG Long clicked on voicemail icon") + onVoicemailClicked.invoke() + return true + } + return false } @UiThread diff --git a/app/src/main/res/layout/call_numpad_digit.xml b/app/src/main/res/layout/call_numpad_digit.xml index 41f8a45c8..9dc680600 100644 --- a/app/src/main/res/layout/call_numpad_digit.xml +++ b/app/src/main/res/layout/call_numpad_digit.xml @@ -19,7 +19,7 @@ + @@ -16,6 +17,7 @@ @@ -44,6 +46,7 @@ android:textSize="14sp" android:includeFontPadding="false" android:textColor="@color/bc_white" + android:visibility="@{model.showLetters ? View.VISIBLE : View.GONE, default=gone}" app:layout_constraintTop_toBottomOf="@id/digit_label" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/call_numpad_digit_with_plus.xml b/app/src/main/res/layout/call_numpad_digit_with_plus.xml new file mode 100644 index 000000000..52b47a44c --- /dev/null +++ b/app/src/main/res/layout/call_numpad_digit_with_plus.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/call_numpad_digit_with_voicemail.xml b/app/src/main/res/layout/call_numpad_digit_with_voicemail.xml new file mode 100644 index 000000000..5224814d6 --- /dev/null +++ b/app/src/main/res/layout/call_numpad_digit_with_voicemail.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/start_call_numpad_bottom_sheet.xml b/app/src/main/res/layout/start_call_numpad_bottom_sheet.xml index 4259a4f06..a3fc99dd3 100644 --- a/app/src/main/res/layout/start_call_numpad_bottom_sheet.xml +++ b/app/src/main/res/layout/start_call_numpad_bottom_sheet.xml @@ -1,7 +1,7 @@ + xmlns:bind="http://schemas.android.com/tools"> @@ -21,8 +21,7 @@ android:focusable="true" app:behavior_hideable="true" app:behavior_peekHeight="0dp" - app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior" - tools:ignore="HardcodedText"> + app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"> - - - - - - - - - - - - - - - - - - - - - + app:flow_horizontalStyle="spread" + app:flow_wrapMode="aligned" + app:flow_verticalGap="10dp" + app:flow_maxElementsWrap="3" + app:constraint_referenced_ids="digit_1, digit_2, digit_3, digit_4, digit_5, digit_6, digit_7, digit_8, digit_9, digit_star, digit_0, digit_sharp" /> - + + + + + + + + + + + + + + + + + + + + + + + android:layout_width="@dimen/call_dtmf_button_size" + android:layout_height="@dimen/call_dtmf_button_size" + layout="@layout/call_numpad_digit" + bind:digit="@{`#`}" + bind:model="@{model}" + app:layout_constraintTop_toBottomOf="@id/handle" + app:layout_constraintStart_toStartOf="parent" />