mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 11:28:06 +00:00
Added LIME algorithm dropdown in account advanced settings if developer mode is enabled
This commit is contained in:
parent
f397456879
commit
b4c2a52bf7
7 changed files with 152 additions and 22 deletions
|
|
@ -54,7 +54,7 @@ class AccountSettingsFragment : GenericMainFragment() {
|
|||
|
||||
private lateinit var viewModel: AccountSettingsViewModel
|
||||
|
||||
private val dropdownListener = object : AdapterView.OnItemSelectedListener {
|
||||
private val transportDropdownListener = object : AdapterView.OnItemSelectedListener {
|
||||
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
|
||||
val transport = viewModel.availableTransports[position]
|
||||
val transportType = when (transport) {
|
||||
|
|
@ -70,6 +70,17 @@ class AccountSettingsFragment : GenericMainFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
private val limeAlgorithmDropdownListener = object : AdapterView.OnItemSelectedListener {
|
||||
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
|
||||
val limeAlgorithm = viewModel.availableLimeAlgorithms[position]
|
||||
Log.i("$TAG Selected LIME algorithm is now [$limeAlgorithm]")
|
||||
viewModel.selectedLimeAlgorithm.value = limeAlgorithm
|
||||
}
|
||||
|
||||
override fun onNothingSelected(parent: AdapterView<*>?) {
|
||||
}
|
||||
}
|
||||
|
||||
override fun goBack(): Boolean {
|
||||
try {
|
||||
return findNavController().popBackStack()
|
||||
|
|
@ -116,20 +127,8 @@ class AccountSettingsFragment : GenericMainFragment() {
|
|||
(view.parent as? ViewGroup)?.doOnPreDraw {
|
||||
startPostponedEnterTransition()
|
||||
|
||||
val adapter = ArrayAdapter(
|
||||
requireContext(),
|
||||
R.layout.drop_down_item,
|
||||
viewModel.availableTransports
|
||||
)
|
||||
adapter.setDropDownViewResource(R.layout.generic_dropdown_cell)
|
||||
val currentTransport = viewModel.selectedTransport.value?.name?.uppercase(
|
||||
Locale.getDefault()
|
||||
)
|
||||
binding.accountAdvancedSettings.transportSpinner.adapter = adapter
|
||||
binding.accountAdvancedSettings.transportSpinner.setSelection(
|
||||
viewModel.availableTransports.indexOf(currentTransport)
|
||||
)
|
||||
binding.accountAdvancedSettings.transportSpinner.onItemSelectedListener = dropdownListener
|
||||
setupTransportDropdown()
|
||||
setupLimeAlgorithmDropdown()
|
||||
}
|
||||
} else {
|
||||
Log.e(
|
||||
|
|
@ -171,4 +170,37 @@ class AccountSettingsFragment : GenericMainFragment() {
|
|||
|
||||
dialog.show()
|
||||
}
|
||||
|
||||
private fun setupTransportDropdown() {
|
||||
val adapter = ArrayAdapter(
|
||||
requireContext(),
|
||||
R.layout.drop_down_item,
|
||||
viewModel.availableTransports
|
||||
)
|
||||
adapter.setDropDownViewResource(R.layout.generic_dropdown_cell)
|
||||
val currentTransport = viewModel.selectedTransport.value?.name?.uppercase(
|
||||
Locale.getDefault()
|
||||
)
|
||||
binding.accountAdvancedSettings.transportSpinner.adapter = adapter
|
||||
binding.accountAdvancedSettings.transportSpinner.setSelection(
|
||||
viewModel.availableTransports.indexOf(currentTransport)
|
||||
)
|
||||
binding.accountAdvancedSettings.transportSpinner.onItemSelectedListener = transportDropdownListener
|
||||
}
|
||||
|
||||
private fun setupLimeAlgorithmDropdown() {
|
||||
val adapter = ArrayAdapter(
|
||||
requireContext(),
|
||||
R.layout.drop_down_item,
|
||||
viewModel.availableLimeAlgorithms
|
||||
)
|
||||
adapter.setDropDownViewResource(R.layout.generic_dropdown_cell)
|
||||
val currentLimeAlgo = viewModel.selectedLimeAlgorithm.value
|
||||
|
||||
binding.accountAdvancedSettings.limeAlgoSpinner.adapter = adapter
|
||||
binding.accountAdvancedSettings.limeAlgoSpinner.setSelection(
|
||||
viewModel.availableLimeAlgorithms.indexOf(currentLimeAlgo)
|
||||
)
|
||||
binding.accountAdvancedSettings.limeAlgoSpinner.onItemSelectedListener = limeAlgorithmDropdownListener
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,6 +100,12 @@ class AccountSettingsViewModel
|
|||
|
||||
val accountFoundEvent = MutableLiveData<Event<Boolean>>()
|
||||
|
||||
val showDeveloperSettings = MutableLiveData<Boolean>()
|
||||
|
||||
val availableLimeAlgorithms = arrayListOf<String>()
|
||||
|
||||
val selectedLimeAlgorithm = MutableLiveData<String>()
|
||||
|
||||
private lateinit var account: Account
|
||||
private lateinit var natPolicy: NatPolicy
|
||||
private lateinit var natPolicyAuthInfo: AuthInfo
|
||||
|
|
@ -119,6 +125,14 @@ class AccountSettingsViewModel
|
|||
imEncryptionMandatoryAvailable.addSource(conferenceFactoryUri) {
|
||||
imEncryptionMandatoryAvailable.value = isImEncryptionMandatoryAvailable()
|
||||
}
|
||||
|
||||
showDeveloperSettings.postValue(corePreferences.showDeveloperSettings)
|
||||
|
||||
availableLimeAlgorithms.add("c25519")
|
||||
availableLimeAlgorithms.add("c448")
|
||||
availableLimeAlgorithms.add("c25519k512")
|
||||
availableLimeAlgorithms.add("c25519mlk512")
|
||||
availableLimeAlgorithms.add("c448mlk1024")
|
||||
}
|
||||
|
||||
@UiThread
|
||||
|
|
@ -192,6 +206,8 @@ class AccountSettingsViewModel
|
|||
|
||||
limeServerUrl.postValue(params.limeServerUrl)
|
||||
|
||||
selectedLimeAlgorithm.postValue(params.limeAlgo)
|
||||
|
||||
accountFoundEvent.postValue(Event(true))
|
||||
} else {
|
||||
Log.e("$TAG Failed to find account matching identity [$identity]")
|
||||
|
|
@ -313,6 +329,7 @@ class AccountSettingsViewModel
|
|||
|
||||
newParams.ccmpServerUrl = ccmpServerUrl.value
|
||||
newParams.limeServerUrl = limeServerUrl.value
|
||||
newParams.limeAlgo = selectedLimeAlgorithm.value
|
||||
|
||||
newParams.useInternationalPrefixForCallsAndChats = applyPrefix.value == true
|
||||
newParams.isDialEscapePlusEnabled = replacePlusBy00.value == true
|
||||
|
|
|
|||
|
|
@ -34,15 +34,22 @@
|
|||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatSpinner
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/transport_spinner"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="50dp"
|
||||
android:background="@drawable/edit_text_background"
|
||||
android:paddingStart="15dp"
|
||||
android:paddingEnd="30dp"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:gravity="center_vertical"
|
||||
android:overlapAnchor="false"
|
||||
android:dropDownVerticalOffset="25dp"
|
||||
android:spinnerMode="dropdown"
|
||||
android:popupBackground="@drawable/shape_squircle_white_background"
|
||||
android:background="@drawable/edit_text_background"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintTop_toBottomOf="@id/transport_title"
|
||||
app:layout_constraintStart_toStartOf="@id/transport_title"
|
||||
app:layout_constraintEnd_toEndOf="@id/transport_title" />
|
||||
|
|
@ -87,6 +94,8 @@
|
|||
android:text="@={viewModel.sipProxyServer}"
|
||||
android:inputType="text|textUri"
|
||||
android:hint="@string/account_settings_sip_proxy_url_title"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/sip_proxy_title"/>
|
||||
|
|
@ -225,6 +234,8 @@
|
|||
android:text="@={viewModel.expire}"
|
||||
android:inputType="number"
|
||||
android:hint="@string/account_settings_expire_title"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/expire_title"/>
|
||||
|
|
@ -258,6 +269,8 @@
|
|||
android:text="@={viewModel.conferenceFactoryUri}"
|
||||
android:inputType="text|textUri"
|
||||
android:hint="@string/account_settings_conference_factory_uri_title"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/conference_factory_uri_title"/>
|
||||
|
|
@ -290,6 +303,8 @@
|
|||
android:text="@={viewModel.audioVideoConferenceFactoryUri}"
|
||||
android:inputType="text|textUri"
|
||||
android:hint="@string/account_settings_audio_video_conference_factory_uri_title"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/audio_video_conference_factory_uri_title"/>
|
||||
|
|
@ -322,6 +337,8 @@
|
|||
android:text="@={viewModel.ccmpServerUrl}"
|
||||
android:inputType="text|textUri"
|
||||
android:hint="@string/account_settings_ccmp_server_url_title"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/ccmp_server_url_title"/>
|
||||
|
|
@ -337,7 +354,10 @@
|
|||
android:text="@string/account_settings_lime_server_url_title"
|
||||
android:maxLines="2"
|
||||
android:ellipsize="end"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_constraintVertical_bias="0"
|
||||
app:layout_constraintTop_toBottomOf="@id/ccmp_server_url"
|
||||
app:layout_constraintBottom_toTopOf="@id/lime_server"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
|
|
@ -355,10 +375,65 @@
|
|||
android:text="@={viewModel.limeServerUrl}"
|
||||
android:inputType="text|textUri"
|
||||
android:hint="@string/account_settings_lime_server_url_title"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/lime_server_title"
|
||||
app:layout_constraintBottom_toTopOf="@id/update_password"/>
|
||||
app:layout_constraintBottom_toTopOf="@id/lime_algo_title"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/settings_title_style"
|
||||
android:id="@+id/lime_algo_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/assistant_sip_account_lime_algorithm"
|
||||
android:maxLines="2"
|
||||
android:ellipsize="end"
|
||||
android:visibility="@{viewModel.showDeveloperSettings ? View.VISIBLE : View.GONE, default=gone}"
|
||||
app:layout_constraintTop_toBottomOf="@id/lime_server"
|
||||
app:layout_constraintBottom_toTopOf="@id/lime_algo_spinner"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatSpinner
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/lime_algo_spinner"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="50dp"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:gravity="center_vertical"
|
||||
android:overlapAnchor="false"
|
||||
android:dropDownVerticalOffset="25dp"
|
||||
android:spinnerMode="dropdown"
|
||||
android:popupBackground="@drawable/shape_squircle_white_background"
|
||||
android:background="@drawable/edit_text_background"
|
||||
android:visibility="@{viewModel.showDeveloperSettings ? View.VISIBLE : View.GONE, default=gone}"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintTop_toBottomOf="@id/lime_algo_title"
|
||||
app:layout_constraintBottom_toTopOf="@id/update_password"
|
||||
app:layout_constraintStart_toStartOf="@id/lime_algo_title"
|
||||
app:layout_constraintEnd_toEndOf="@id/lime_algo_title" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/lime_algo_spinner_caret"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/spinner_caret_end_margin"
|
||||
android:src="@drawable/caret_down"
|
||||
android:contentDescription="@null"
|
||||
android:visibility="@{viewModel.showDeveloperSettings ? View.VISIBLE : View.GONE, default=gone}"
|
||||
app:tint="?attr/color_main2_600"
|
||||
app:layout_constraintTop_toTopOf="@id/lime_algo_spinner"
|
||||
app:layout_constraintBottom_toBottomOf="@id/lime_algo_spinner"
|
||||
app:layout_constraintEnd_toEndOf="@id/transport_spinner"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/settings_title_style"
|
||||
|
|
@ -379,7 +454,7 @@
|
|||
app:layout_constraintHorizontal_bias="1"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/lime_server"
|
||||
app:layout_constraintTop_toBottomOf="@id/lime_algo_spinner"
|
||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
|||
|
|
@ -234,6 +234,8 @@
|
|||
android:drawablePadding="5dp"
|
||||
app:drawableTint="?attr/color_main2_600"
|
||||
android:visibility="@{!viewModel.hideSipAddresses || viewModel.showDeviceId ? View.VISIBLE : View.GONE, default=gone}"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintStart_toEndOf="@id/sip_address_label"
|
||||
app:layout_constraintEnd_toEndOf="@id/details_background"
|
||||
app:layout_constraintTop_toTopOf="@id/sip_address_label"
|
||||
|
|
@ -352,6 +354,8 @@
|
|||
android:spinnerMode="dropdown"
|
||||
android:popupBackground="@drawable/shape_squircle_white_background"
|
||||
android:background="@drawable/edit_text_background"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintTop_toBottomOf="@id/prefix_label"
|
||||
app:layout_constraintStart_toStartOf="@id/prefix_label"
|
||||
app:layout_constraintEnd_toEndOf="@id/details_background" />
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@
|
|||
android:textColor="@color/gray_main2_600"
|
||||
android:gravity="center_vertical"
|
||||
android:overlapAnchor="false"
|
||||
android:dropDownVerticalOffset="2dp"
|
||||
android:dropDownVerticalOffset="25dp"
|
||||
android:spinnerMode="dropdown"
|
||||
android:popupBackground="@drawable/shape_squircle_white_background"
|
||||
android:background="@drawable/edit_text_background"
|
||||
|
|
@ -340,7 +340,7 @@
|
|||
android:textColor="@color/gray_main2_600"
|
||||
android:gravity="center_vertical"
|
||||
android:overlapAnchor="false"
|
||||
android:dropDownVerticalOffset="2dp"
|
||||
android:dropDownVerticalOffset="25dp"
|
||||
android:spinnerMode="dropdown"
|
||||
android:popupBackground="@drawable/shape_squircle_white_background"
|
||||
android:background="@drawable/edit_text_background"
|
||||
|
|
|
|||
|
|
@ -119,6 +119,7 @@
|
|||
<string name="assistant_create_account_using_email_on_our_web_platform">Créez un compte avec votre email ici :</string>
|
||||
<string name="assistant_already_have_an_account">Vous avez déjà un compte ?</string>
|
||||
<string name="assistant_sip_account_transport_protocol">Transport</string>
|
||||
<string name="assistant_sip_account_lime_algorithm">Algorithme LIME</string>
|
||||
<string name="assistant_third_party_sip_account_warning_explanation">Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte &appName;.\n\nCes fonctionnalités seront masquées si vous utilisez un compte SIP tiers.\n\nPour les activer dans un projet commercial, merci de nous contacter.</string>
|
||||
<string name="assistant_third_party_sip_account_create_linphone_account">Je préfère créer un compte &appName;</string>
|
||||
<string name="assistant_third_party_sip_account_warning_ok">J\'ai compris</string>
|
||||
|
|
|
|||
|
|
@ -160,6 +160,7 @@
|
|||
<string name="assistant_create_account_using_email_on_our_web_platform">Create an account with your email on:</string>
|
||||
<string name="assistant_already_have_an_account">Already have an account?</string>
|
||||
<string name="assistant_sip_account_transport_protocol">Transport</string>
|
||||
<string name="assistant_sip_account_lime_algorithm">LIME algorithm</string>
|
||||
<string name="assistant_third_party_sip_account_warning_explanation">Some features require a &appName; account, such as group messaging, video conferences…\n\nThese features are hidden when you register with a third party SIP account.\n\nTo enable it in a commercial project, please contact us.</string>
|
||||
<string name="assistant_third_party_sip_account_create_linphone_account">I prefer to create a &appName; account</string>
|
||||
<string name="assistant_third_party_sip_account_warning_ok">I understand</string>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue