Moved Send/Reset logs buttons to advanced settings like for iOS
This commit is contained in:
parent
30bd928b78
commit
4e6eb852e7
13 changed files with 104 additions and 105 deletions
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue