diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/EditContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/EditContactFragment.kt
index 1c380d583..2cfec619d 100644
--- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/EditContactFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/EditContactFragment.kt
@@ -31,6 +31,7 @@ import androidx.core.view.doOnPreDraw
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.lifecycle.lifecycleScope
+import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import androidx.navigation.navGraphViewModels
import kotlinx.coroutines.launch
@@ -55,7 +56,7 @@ class EditContactFragment : GenericFragment() {
private lateinit var binding: ContactNewOrEditFragmentBinding
private val viewModel: ContactNewOrEditViewModel by navGraphViewModels(
- R.id.main_nav_graph
+ R.id.contact_nav_graph
)
private val args: EditContactFragmentArgs by navArgs()
@@ -114,7 +115,7 @@ class EditContactFragment : GenericFragment() {
model.confirmRemovalEvent.observe(viewLifecycleOwner) {
it.consume {
- goBack()
+ findNavController().popBackStack()
dialog.dismiss()
}
}
@@ -134,7 +135,7 @@ class EditContactFragment : GenericFragment() {
getString(R.string.contact_editor_saved_changes_toast),
R.drawable.info
)
- goBack()
+ findNavController().popBackStack()
} else {
(requireActivity() as MainActivity).showRedToast(
getString(R.string.contact_editor_error_saving_changes_toast),
diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt
index 8e242b701..e7eb41230 100644
--- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt
@@ -31,6 +31,7 @@ import androidx.annotation.UiThread
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.lifecycle.lifecycleScope
+import androidx.navigation.fragment.findNavController
import androidx.navigation.navGraphViewModels
import kotlinx.coroutines.launch
import org.linphone.BR
@@ -129,7 +130,8 @@ class NewContactFragment : GenericFragment() {
it.consume { refKey ->
if (refKey.isNotEmpty()) {
backPressedCallback.isEnabled = false
- goBack()
+ findNavController().popBackStack()
+
sharedViewModel.showContactEvent.value = Event(refKey)
(requireActivity() as MainActivity).showGreenToast(
getString(R.string.contact_editor_saved_contact_toast),
@@ -222,7 +224,7 @@ class NewContactFragment : GenericFragment() {
model.confirmRemovalEvent.observe(viewLifecycleOwner) {
it.consume {
backPressedCallback.isEnabled = false
- goBack()
+ findNavController().popBackStack()
dialog.dismiss()
}
}
diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt
index 309249de9..78358c603 100644
--- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt
@@ -81,6 +81,8 @@ class ContactNewOrEditViewModel @UiThread constructor() : ViewModel() {
@UiThread
fun findFriendByRefKey(refKey: String?) {
+ reset()
+
coreContext.postOnCoreThread { core ->
friend = if (refKey.isNullOrEmpty()) {
core.createFriend()
@@ -257,4 +259,17 @@ class ContactNewOrEditViewModel @UiThread constructor() : ViewModel() {
private fun isSaveButtonEnabled(): Boolean {
return firstName.value.orEmpty().isNotEmpty() || lastName.value.orEmpty().isNotEmpty()
}
+
+ @UiThread
+ private fun reset() {
+ isEdit.value = false
+ picturePath.value = ""
+ firstName.value = ""
+ lastName.value = ""
+ sipAddresses.clear()
+ phoneNumbers.clear()
+ company.value = ""
+ jobTitle.value = ""
+ saveButtonEnabled.value = false
+ }
}
diff --git a/app/src/main/java/org/linphone/ui/main/help/fragment/DebugFragment.kt b/app/src/main/java/org/linphone/ui/main/help/fragment/DebugFragment.kt
new file mode 100644
index 000000000..b5f807a65
--- /dev/null
+++ b/app/src/main/java/org/linphone/ui/main/help/fragment/DebugFragment.kt
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2010-2023 Belledonne Communications SARL.
+ *
+ * This file is part of linphone-android
+ * (see https://www.linphone.org).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package org.linphone.ui.main.help.fragment
+
+import android.content.ClipData
+import android.content.ClipboardManager
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.navigation.navGraphViewModels
+import org.linphone.R
+import org.linphone.databinding.HelpDebugFragmentBinding
+import org.linphone.ui.main.MainActivity
+import org.linphone.ui.main.fragment.GenericFragment
+import org.linphone.ui.main.help.viewmodel.HelpViewModel
+import org.linphone.utils.AppUtils
+
+class DebugFragment : GenericFragment() {
+ companion object {
+ private const val TAG = "[Debug Fragment]"
+ }
+
+ private lateinit var binding: HelpDebugFragmentBinding
+
+ val viewModel: HelpViewModel by navGraphViewModels(
+ R.id.main_nav_graph
+ )
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ binding = HelpDebugFragmentBinding.inflate(layoutInflater)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ binding.lifecycleOwner = viewLifecycleOwner
+ binding.viewModel = viewModel
+
+ binding.setBackClickListener {
+ goBack()
+ }
+
+ viewModel.debugLogsCleanedEvent.observe(viewLifecycleOwner) {
+ it.consume {
+ (requireActivity() as MainActivity).showGreenToast(
+ getString(R.string.help_advanced_debug_logs_cleaned_toast_message),
+ R.drawable.info
+ )
+ }
+ }
+
+ viewModel.uploadDebugLogsFinishedEvent.observe(viewLifecycleOwner) {
+ it.consume { url ->
+ val clipboard =
+ requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
+ val clip = ClipData.newPlainText("Logs url", url)
+ clipboard.setPrimaryClip(clip)
+
+ (requireActivity() as MainActivity).showGreenToast(
+ getString(
+ R.string.help_advanced_debug_logs_url_copied_into_clipboard_toast_message
+ ),
+ R.drawable.info
+ )
+
+ AppUtils.shareUploadedLogsUrl(requireActivity(), url)
+ }
+ }
+
+ viewModel.uploadDebugLogsErrorEvent.observe(viewLifecycleOwner) {
+ it.consume {
+ (requireActivity() as MainActivity).showRedToast(
+ getString(R.string.help_advanced_debug_logs_upload_error_toast_message),
+ R.drawable.warning_circle
+ )
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/org/linphone/ui/main/settings/fragment/HelpFragment.kt b/app/src/main/java/org/linphone/ui/main/help/fragment/HelpFragment.kt
similarity index 69%
rename from app/src/main/java/org/linphone/ui/main/settings/fragment/HelpFragment.kt
rename to app/src/main/java/org/linphone/ui/main/help/fragment/HelpFragment.kt
index f471d7d76..165f44113 100644
--- a/app/src/main/java/org/linphone/ui/main/settings/fragment/HelpFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/help/fragment/HelpFragment.kt
@@ -1,8 +1,5 @@
-package org.linphone.ui.main.settings.fragment
+package org.linphone.ui.main.help.fragment
-import android.content.ClipData
-import android.content.ClipboardManager
-import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
@@ -10,14 +7,14 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.UiThread
+import androidx.navigation.fragment.findNavController
import androidx.navigation.navGraphViewModels
import org.linphone.R
import org.linphone.core.tools.Log
import org.linphone.databinding.HelpFragmentBinding
import org.linphone.ui.main.MainActivity
import org.linphone.ui.main.fragment.GenericFragment
-import org.linphone.ui.main.settings.viewmodel.HelpViewModel
-import org.linphone.utils.AppUtils
+import org.linphone.ui.main.help.viewmodel.HelpViewModel
@UiThread
class HelpFragment : GenericFragment() {
@@ -49,6 +46,11 @@ class HelpFragment : GenericFragment() {
goBack()
}
+ binding.setDebugClickListener {
+ val action = HelpFragmentDirections.actionHelpFragmentToDebugFragment()
+ findNavController().navigate(action)
+ }
+
binding.setPrivacyPolicyClickListener {
val url = getString(R.string.privacy_policy_url)
try {
@@ -111,41 +113,5 @@ class HelpFragment : GenericFragment() {
)
}
}
-
- viewModel.debugLogsCleanedEvent.observe(viewLifecycleOwner) {
- it.consume {
- (requireActivity() as MainActivity).showGreenToast(
- getString(R.string.help_advanced_debug_logs_cleaned_toast_message),
- R.drawable.info
- )
- }
- }
-
- viewModel.uploadDebugLogsFinishedEvent.observe(viewLifecycleOwner) {
- it.consume { url ->
- val clipboard =
- requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
- val clip = ClipData.newPlainText("Logs url", url)
- clipboard.setPrimaryClip(clip)
-
- (requireActivity() as MainActivity).showGreenToast(
- getString(
- R.string.help_advanced_debug_logs_url_copied_into_clipboard_toast_message
- ),
- R.drawable.info
- )
-
- AppUtils.shareUploadedLogsUrl(requireActivity(), url)
- }
- }
-
- viewModel.uploadDebugLogsErrorEvent.observe(viewLifecycleOwner) {
- it.consume {
- (requireActivity() as MainActivity).showRedToast(
- getString(R.string.help_advanced_debug_logs_upload_error_toast_message),
- R.drawable.warning_circle
- )
- }
- }
}
}
diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/HelpViewModel.kt b/app/src/main/java/org/linphone/ui/main/help/viewmodel/HelpViewModel.kt
similarity index 99%
rename from app/src/main/java/org/linphone/ui/main/settings/viewmodel/HelpViewModel.kt
rename to app/src/main/java/org/linphone/ui/main/help/viewmodel/HelpViewModel.kt
index 1c8f328ae..a0586da94 100644
--- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/HelpViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/help/viewmodel/HelpViewModel.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.main.settings.viewmodel
+package org.linphone.ui.main.help.viewmodel
import androidx.annotation.UiThread
import androidx.annotation.WorkerThread
diff --git a/app/src/main/res/drawable/secondary_cell_background.xml b/app/src/main/res/drawable/secondary_cell_background.xml
index b0e3d17fd..269221cf3 100644
--- a/app/src/main/res/drawable/secondary_cell_background.xml
+++ b/app/src/main/res/drawable/secondary_cell_background.xml
@@ -5,5 +5,5 @@
+ android:drawable="@color/transparent_color" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/account_list_cell.xml b/app/src/main/res/layout/account_list_cell.xml
index 8782df3d4..133bedee5 100644
--- a/app/src/main/res/layout/account_list_cell.xml
+++ b/app/src/main/res/layout/account_list_cell.xml
@@ -15,7 +15,7 @@
android:onClick="@{() -> model.setAsDefault()}"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/white">
+ android:background="@{model.isDefault ? @color/transparent_light_orange : @color/white, default=@color/transparent_light_orange}">
@@ -85,26 +87,12 @@
android:text="@{model.registrationState, default=@string/drawer_menu_account_connection_status_connected}"
android:textColor="@{model.isConnected ? @color/green_online : model.inError ? @color/red_danger : @color/gray_1, default=@color/green_online}"
android:textSize="12sp"
+ app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="@id/name"
+ app:layout_constraintEnd_toStartOf="@id/menu"
app:layout_constraintTop_toBottomOf="@id/name"
app:layout_constraintBottom_toTopOf="@id/separator"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ app:layout_constraintTop_toBottomOf="@id/title"
+ app:layout_constraintBottom_toBottomOf="parent">
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/contact_device_trust_list_cell.xml b/app/src/main/res/layout/contact_device_trust_list_cell.xml
index 0f1ad5131..8db0dd2b2 100644
--- a/app/src/main/res/layout/contact_device_trust_list_cell.xml
+++ b/app/src/main/res/layout/contact_device_trust_list_cell.xml
@@ -15,8 +15,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
- android:paddingBottom="8dp"
- android:background="@drawable/secondary_cell_background">
+ android:paddingBottom="8dp">
diff --git a/app/src/main/res/layout/drawer_menu.xml b/app/src/main/res/layout/drawer_menu.xml
index 129becab3..74e4b7002 100644
--- a/app/src/main/res/layout/drawer_menu.xml
+++ b/app/src/main/res/layout/drawer_menu.xml
@@ -61,6 +61,7 @@
android:layout_height="0dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
+ android:fillViewport="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/brand_name"
@@ -69,17 +70,35 @@
-
+ android:layout_height="wrap_content"
+ android:src="@drawable/illu"
+ android:layout_margin="10dp"
+ app:layout_constraintHeight_max="200dp"
+ app:layout_constraintBottom_toTopOf="@id/no_contacts_label"
+ app:layout_constraintDimensionRatio="1:1"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/background" />
+
+
diff --git a/app/src/main/res/layout/help_debug_fragment.xml b/app/src/main/res/layout/help_debug_fragment.xml
new file mode 100644
index 000000000..6ff00cb0f
--- /dev/null
+++ b/app/src/main/res/layout/help_debug_fragment.xml
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/help_fragment.xml b/app/src/main/res/layout/help_fragment.xml
index d0c883c43..d2113c50b 100644
--- a/app/src/main/res/layout/help_fragment.xml
+++ b/app/src/main/res/layout/help_fragment.xml
@@ -17,9 +17,12 @@
+
+ type="org.linphone.ui.main.help.viewmodel.HelpViewModel" />
+ app:layout_constraintBottom_toBottomOf="@id/debug_title" />
-
-
-
-
-
-
-
-
+ app:layout_constraintEnd_toEndOf="parent"/>
diff --git a/app/src/main/res/layout/settings_fragment.xml b/app/src/main/res/layout/settings_fragment.xml
index 99b281838..235db486c 100644
--- a/app/src/main/res/layout/settings_fragment.xml
+++ b/app/src/main/res/layout/settings_fragment.xml
@@ -13,524 +13,535 @@
type="org.linphone.ui.main.settings.viewmodel.SettingsViewModel" />
-
+ android:layout_height="match_parent">
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/navigation/main_nav_graph.xml b/app/src/main/res/navigation/main_nav_graph.xml
index 284cc7f39..a8363de33 100644
--- a/app/src/main/res/navigation/main_nav_graph.xml
+++ b/app/src/main/res/navigation/main_nav_graph.xml
@@ -56,7 +56,8 @@
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
- app:popExitAnim="@anim/slide_out_right" />
+ app:popExitAnim="@anim/slide_out_right"
+ app:launchSingleTop="true" />
+ tools:layout="@layout/help_fragment" >
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 60a2c658c..c56828f37 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -21,6 +21,7 @@
#FFEACB
#FFB266
#A622334D
+ #1ABF4601
#EEF7F8
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1b9622208..1b13e3b35 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -111,7 +111,6 @@
Phone number already used
Invalid phone number and/or prefix
- Default
Manage the profile
Connected
Refreshing
@@ -132,6 +131,7 @@
Check update
Contribute on &appName; translation
Advanced
+ Troubleshooting
Enable/disable debug logs
Blah
Clean logs