Moved Send/Reset logs buttons to advanced settings like for iOS

This commit is contained in:
Sylvain Berfini 2021-04-26 11:47:44 +02:00
parent 30bd928b78
commit 4e6eb852e7
13 changed files with 104 additions and 105 deletions

View file

@ -40,6 +40,7 @@ This version is a full rewrite of the app in kotlin, using modern Android compon
- Call history view groups call from the same SIP URI (like linphone-iphone)
- Reworked conference (using new linphone-sdk APIs)
- Route audio to headset / headphones / bluetooth device automatically when available
- Send logs / Reset logs buttons moved from About page to Advanced Settings like iOS
- Improved how Android native contacts are used
- Switched to material design for text input fields & switches
- Launcher shortcuts can be to either contacts or chat rooms

View file

@ -26,10 +26,8 @@ import android.view.View
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import org.linphone.R
import org.linphone.activities.main.MainActivity
import org.linphone.activities.main.fragments.SecureFragment
import org.linphone.databinding.AboutFragmentBinding
import org.linphone.utils.AppUtils
class AboutFragment : SecureFragment<AboutFragmentBinding>() {
private lateinit var viewModel: AboutViewModel
@ -61,19 +59,5 @@ class AboutFragment : SecureFragment<AboutFragmentBinding>() {
)
startActivity(browserIntent)
}
viewModel.uploadFinishedEvent.observe(viewLifecycleOwner, {
it.consume { url ->
val clipboard =
requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("Logs url", url)
clipboard.setPrimaryClip(clip)
val activity = requireActivity() as MainActivity
activity.showSnackBar(R.string.logs_url_copied_to_clipboard)
AppUtils.shareUploadedLogsUrl(activity, url)
}
})
}
}

View file

@ -19,14 +19,11 @@
*/
package org.linphone.activities.main.about
import androidx.lifecycle.ViewModel
import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.activities.main.viewmodels.LogsUploadViewModel
class AboutViewModel : LogsUploadViewModel() {
class AboutViewModel : ViewModel() {
val appVersion: String = coreContext.appVersion
val sdkVersion: String = coreContext.sdkVersion
val showLogsButtons: Boolean = corePreferences.debugLogs
}

View file

@ -19,8 +19,7 @@
*/
package org.linphone.activities.main.settings.fragments
import android.content.ActivityNotFoundException
import android.content.Intent
import android.content.*
import android.net.Uri
import android.os.Bundle
import android.provider.Settings
@ -31,10 +30,12 @@ import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import org.linphone.R
import org.linphone.activities.GenericFragment
import org.linphone.activities.main.MainActivity
import org.linphone.activities.main.settings.viewmodels.AdvancedSettingsViewModel
import org.linphone.core.tools.Log
import org.linphone.core.tools.compatibility.DeviceUtils
import org.linphone.databinding.SettingsAdvancedFragmentBinding
import org.linphone.utils.AppUtils
import org.linphone.utils.PowerManagerUtils
class AdvancedSettingsFragment : GenericFragment<SettingsAdvancedFragmentBinding>() {
@ -53,6 +54,20 @@ class AdvancedSettingsFragment : GenericFragment<SettingsAdvancedFragmentBinding
binding.setBackClickListener { findNavController().popBackStack() }
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
viewModel.uploadFinishedEvent.observe(viewLifecycleOwner, {
it.consume { url ->
val clipboard =
requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("Logs url", url)
clipboard.setPrimaryClip(clip)
val activity = requireActivity() as MainActivity
activity.showSnackBar(R.string.logs_url_copied_to_clipboard)
AppUtils.shareUploadedLogsUrl(activity, url)
}
})
viewModel.setNightModeEvent.observe(viewLifecycleOwner, {
it.consume { value ->
AppCompatDelegate.setDefaultNightMode(

View file

@ -21,15 +21,20 @@ package org.linphone.activities.main.settings.viewmodels
import androidx.lifecycle.MutableLiveData
import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.R
import org.linphone.activities.main.settings.SettingListenerStub
import org.linphone.activities.main.viewmodels.LogsUploadViewModel
import org.linphone.core.CoreContext
import org.linphone.core.Factory
import org.linphone.mediastream.Version
import org.linphone.utils.AppUtils
import org.linphone.utils.Event
class AdvancedSettingsViewModel : GenericSettingsViewModel() {
class AdvancedSettingsViewModel : LogsUploadViewModel() {
protected val prefs = corePreferences
protected val core = coreContext.core
val debugModeListener = object : SettingListenerStub() {
override fun onBoolValueChanged(newValue: Boolean) {
prefs.debugLogs = newValue
@ -46,6 +51,18 @@ class AdvancedSettingsViewModel : GenericSettingsViewModel() {
}
val logsServerUrl = MutableLiveData<String>()
val sendDebugLogsListener = object : SettingListenerStub() {
override fun onClicked() {
uploadLogs()
}
}
val resetDebugLogsListener = object : SettingListenerStub() {
override fun onClicked() {
resetLogs()
}
}
val backgroundModeListener = object : SettingListenerStub() {
override fun onBoolValueChanged(newValue: Boolean) {
prefs.keepServiceAlive = newValue

View file

@ -172,47 +172,10 @@
android:layout_height="1dp"
android:background="?attr/dividerColor" />
<LinearLayout
android:visibility="@{viewModel.showLogsButtons ? View.VISIBLE : View.GONE}"
android:background="?attr/backgroundColor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingTop="20dp"
android:orientation="horizontal">
<TextView
android:onClick="@{() -> viewModel.uploadLogs()}"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/assistant_button"
android:textColor="@drawable/assistant_button_text_color"
style="@style/button_font"
android:padding="10dp"
android:text="@string/about_send_log" />
<TextView
android:onClick="@{() -> viewModel.resetLogs()}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/assistant_button"
android:textColor="@drawable/assistant_button_text_color"
style="@style/button_font"
android:padding="10dp"
android:text="@string/about_reset_log" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<include
layout="@layout/wait_layout"
bind:visibility="@{viewModel.uploadInProgress}"/>
</RelativeLayout>
</layout>

View file

@ -176,49 +176,12 @@
android:layout_height="1dp"
android:background="?attr/dividerColor" />
<LinearLayout
android:visibility="@{viewModel.showLogsButtons ? View.VISIBLE : View.GONE}"
android:background="?attr/backgroundColor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingTop="20dp"
android:orientation="horizontal">
<TextView
android:onClick="@{() -> viewModel.uploadLogs()}"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/assistant_button"
android:textColor="@drawable/assistant_button_text_color"
style="@style/button_font"
android:padding="10dp"
android:text="@string/about_send_log" />
<TextView
android:onClick="@{() -> viewModel.resetLogs()}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/assistant_button"
android:textColor="@drawable/assistant_button_text_color"
style="@style/button_font"
android:padding="10dp"
android:text="@string/about_reset_log" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<include
layout="@layout/wait_layout"
bind:visibility="@{viewModel.uploadInProgress}"/>
</RelativeLayout>
</layout>

View file

@ -65,6 +65,15 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
style="@style/settings_category_font"
android:text="@string/advanced_settings_debug_title"
android:paddingTop="15dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<include
layout="@layout/settings_widget_switch"
linphone:title="@{@string/advanced_settings_debug_mode_title}"
@ -81,6 +90,29 @@
linphone:inputType="@{InputType.TYPE_TEXT_VARIATION_URI}"
linphone:enabled="@{viewModel.debugMode}"/>
<include
layout="@layout/settings_widget_basic"
linphone:title="@{@string/advanced_settings_send_debug_logs_title}"
linphone:subtitle="@{@string/advanced_settings_send_debug_logs_summary}"
linphone:listener="@{viewModel.sendDebugLogsListener}"
linphone:enabled="@{viewModel.debugMode}"/>
<include
layout="@layout/settings_widget_basic"
linphone:title="@{@string/advanced_settings_reset_debug_logs_title}"
linphone:subtitle="@{@string/advanced_settings_reset_debug_logs_summary}"
linphone:listener="@{viewModel.resetDebugLogsListener}"
linphone:enabled="@{viewModel.debugMode}"/>
<TextView
style="@style/settings_category_font"
android:text="@string/advanced_settings_other_title"
android:paddingTop="15dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<include
layout="@layout/settings_widget_switch"
linphone:enabled="@{viewModel.backgroundModeEnabled}"
@ -136,8 +168,7 @@
<TextView
style="@style/settings_category_font"
android:id="@+id/pref_video_codecs_header"
android:text="@string/android_settings_codecs_title"
android:text="@string/advanced_settings_android_title"
android:paddingTop="15dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
@ -165,6 +196,10 @@
</androidx.core.widget.NestedScrollView>
<include
layout="@layout/wait_layout"
bind:visibility="@{viewModel.uploadInProgress}"/>
</RelativeLayout>
</layout>

View file

@ -509,7 +509,7 @@
<string name="advanced_settings_remote_provisioning_url_title">URL de aprovisionamiento remoto</string>
<string name="advanced_settings_logs_server_url_title">Registra la URL del servidor de carga</string>
<string name="advanced_settings_logs_server_url_summary">No edites a menos que sepas lo que estás haciendo!</string>
<string name="android_settings_codecs_title">Android</string>
<string name="advanced_settings_android_title">Android</string>
<string name="advanced_settings_go_to_battery_optimization_settings">Ajustes de optimización de la batería</string>
<string name="advanced_settings_go_to_android_app_settings">Ajustes de app Android</string>
<string name="tunnel_settings_hostname_url_title">Nombre de usuario</string>
@ -559,4 +559,8 @@
<string name="chat_message_context_menu_imdn_info">Estado de envío</string>
<string name="chat_room_cant_open_file_no_app_found">No se puede abrir el archivo, no hay una apliación disponible para este formato.</string>
<string name="dialog_lime_security_message">Los mensajes instantáneos se cifran de extremo a extremo en conversaciones seguras. Es posible mejorar el nivel de seguridad de una conversación autenticando a los participantes. Para ello, llame al contacto y siga el proceso de autenticación.</string>
<string name="advanced_settings_send_debug_logs_title">Enviar registros</string>
<string name="advanced_settings_send_debug_logs_summary"></string>
<string name="advanced_settings_reset_debug_logs_title">Restablecer registros</string>
<string name="advanced_settings_reset_debug_logs_summary"></string>
</resources>

View file

@ -358,7 +358,7 @@
<string name="advanced_settings_remote_provisioning_url_title">URL de configuration distante</string>
<string name="advanced_settings_logs_server_url_title">URL du serveur de téléchargement des traces</string>
<string name="advanced_settings_logs_server_url_summary">Ne changez pas cette valeur sans savoir ce que vous faites !</string>
<string name="android_settings_codecs_title">Android</string>
<string name="advanced_settings_android_title">Android</string>
<string name="advanced_settings_go_to_battery_optimization_settings">Paramètres d\'optimisation de la batterie</string>
<string name="advanced_settings_go_to_power_manager_settings">Paramètres de gestion de l\'énergie</string>
<string name="advanced_settings_go_to_android_app_settings">Paramètres de l\'app Android</string>
@ -580,4 +580,10 @@
<string name="chat_message_cant_open_file_in_app_dialog_message">Voulez-vous essayer de l\'ouvrir comme texte ou de l\'exporter (en clair) vers une appli tierce si disponible ?</string>
<string name="chat_message_cant_open_file_in_app_dialog_export_button">Exporter</string>
<string name="chat_message_cant_open_file_in_app_dialog_open_as_text_button">Ouvrir comme texte</string>
<string name="advanced_settings_send_debug_logs_title">Envoyer les traces</string>
<string name="advanced_settings_send_debug_logs_summary"></string>
<string name="advanced_settings_reset_debug_logs_title">Vider les traces</string>
<string name="advanced_settings_reset_debug_logs_summary"></string>
<string name="advanced_settings_debug_title">Paramètres de deboggage</string>
<string name="advanced_settings_other_title">Autres paramètres</string>
</resources>

View file

@ -123,7 +123,7 @@
<string name="account_settings_display_name_title">显示名</string>
<string name="tunnel_settings_dual_port_summary">双模式下需要</string>
<string name="tunnel_settings_mode_title">模式</string>
<string name="android_settings_codecs_title">安卓</string>
<string name="advanced_settings_android_title">安卓</string>
<string name="advanced_settings_go_to_battery_optimization_settings">电池优化设置</string>
<string name="advanced_settings_go_to_power_manager_settings">电源管理设置</string>
<string name="tunnel_settings_hostname_url_title">主机名</string>
@ -565,4 +565,8 @@
<item quantity="other">\@string/contact_delete_one_dialog</item>
</plurals>
<string name="chat_settings_mark_as_read_notif_dismissal_title">撤消通知后标记为已读</string>
<string name="advanced_settings_send_debug_logs_title">发送日志</string>
<string name="advanced_settings_send_debug_logs_summary"></string>
<string name="advanced_settings_reset_debug_logs_title">重启日志</string>
<string name="advanced_settings_reset_debug_logs_summary"></string>
</resources>

View file

@ -382,9 +382,13 @@
<string name="advanced_settings_device_name_summary">更改將在下一啟動時應用</string>
<string name="advanced_settings_remote_provisioning_url_title">遠程配置網址</string>
<string name="advanced_settings_logs_server_url_title">日誌上傳伺服器網址</string>
<string name="android_settings_codecs_title">安卓</string>
<string name="advanced_settings_android_title">安卓</string>
<string name="advanced_settings_go_to_power_manager_settings">電源管理設置</string>
<string name="advanced_settings_go_to_android_app_settings">安卓應用設置</string>
<string name="advanced_settings_send_debug_logs_title">發送日誌</string>
<string name="advanced_settings_send_debug_logs_summary"></string>
<string name="advanced_settings_reset_debug_logs_title">重啓日誌</string>
<string name="advanced_settings_reset_debug_logs_summary"></string>
<string name="tunnel_settings_hostname_url_title">主機名</string>
<string name="tunnel_settings_port_title">端口</string>
<string name="tunnel_settings_dual_mode_title">啟用雙模式</string>

View file

@ -492,12 +492,18 @@
<string name="advanced_settings_remote_provisioning_url_summary"></string>
<string name="advanced_settings_logs_server_url_title">Logs upload server URL</string>
<string name="advanced_settings_logs_server_url_summary">Do not edit unless you know what you are doing!</string>
<string name="android_settings_codecs_title">Android</string>
<string name="advanced_settings_android_title">Android</string>
<string name="advanced_settings_go_to_battery_optimization_settings">Battery optimization settings</string>
<string name="advanced_settings_go_to_power_manager_settings">Power manager settings</string>
<string name="advanced_settings_go_to_android_app_settings">Android app settings</string>
<string name="advanced_settings_vfs_title">Encrypt everything</string>
<string name="advanced_settings_vfs_summary">Once enabled it can\'t be disabled!</string>
<string name="advanced_settings_send_debug_logs_title">Send logs</string>
<string name="advanced_settings_send_debug_logs_summary"></string>
<string name="advanced_settings_reset_debug_logs_title">Reset logs</string>
<string name="advanced_settings_reset_debug_logs_summary"></string>
<string name="advanced_settings_debug_title">Debug settings</string>
<string name="advanced_settings_other_title">Other settings</string>
<!-- Tunnel settings -->
<string name="tunnel_settings_hostname_url_title">Hostname</string>