From ebda69e739fb7697c423b3816808587613af3127 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 28 Aug 2020 16:52:50 +0200 Subject: [PATCH] Added leak canary + started fixing leaks --- app/build.gradle | 3 +- .../linphone/activities/GenericFragment.kt | 49 +++++++++++++++++++ .../fragments/AbstractPhoneFragment.kt | 5 +- .../fragments/AccountLoginFragment.kt | 15 +----- .../fragments/CountryPickerFragment.kt | 10 +++- .../EchoCancellerCalibrationFragment.kt | 18 ++----- .../fragments/EmailAccountCreationFragment.kt | 17 ++----- .../EmailAccountValidationFragment.kt | 17 ++----- .../fragments/GenericAccountLoginFragment.kt | 17 ++----- .../fragments/PhoneAccountCreationFragment.kt | 15 +----- .../fragments/PhoneAccountLinkingFragment.kt | 15 +----- .../PhoneAccountValidationFragment.kt | 17 ++----- .../assistant/fragments/QrCodeFragment.kt | 18 ++----- .../fragments/RemoteProvisioningFragment.kt | 17 ++----- .../assistant/fragments/TopBarFragment.kt | 19 ++----- .../assistant/fragments/WelcomeFragment.kt | 17 ++----- .../call/fragments/ControlsFragment.kt | 17 ++----- .../call/fragments/StatisticsFragment.kt | 18 ++----- .../call/fragments/StatusFragment.kt | 17 ++----- .../activities/main/about/AboutFragment.kt | 17 ++----- .../fragments/ChatRoomCreationFragment.kt | 16 ++---- .../chat/fragments/DetailChatRoomFragment.kt | 12 ++--- .../main/chat/fragments/DevicesFragment.kt | 18 ++----- .../main/chat/fragments/EphemeralFragment.kt | 18 ++----- .../main/chat/fragments/GroupInfoFragment.kt | 17 ++----- .../main/chat/fragments/ImdnFragment.kt | 17 ++----- .../chat/fragments/MasterChatRoomsFragment.kt | 15 +----- .../fragments/ContactEditorFragment.kt | 17 ++----- .../fragments/DetailContactFragment.kt | 16 ++---- .../fragments/MasterContactsFragment.kt | 15 +----- .../fragments/SyncAccountPickerFragment.kt | 10 +++- .../main/dialer/fragments/DialerFragment.kt | 17 ++----- .../main/fragments/ListTopBarFragment.kt | 18 ++----- .../main/fragments/MasterFragment.kt | 5 +- .../main/fragments/StatusFragment.kt | 18 ++----- .../activities/main/fragments/TabsFragment.kt | 17 ++----- .../fragments/DetailCallLogFragment.kt | 16 ++---- .../fragments/MasterCallLogsFragment.kt | 15 +----- .../fragments/RecordingsFragment.kt | 15 +----- .../fragments/AccountSettingsFragment.kt | 16 ++---- .../fragments/AdvancedSettingsFragment.kt | 16 ++---- .../fragments/AudioSettingsFragment.kt | 15 ++---- .../fragments/CallSettingsFragment.kt | 16 ++---- .../fragments/ChatSettingsFragment.kt | 16 ++---- .../fragments/ContactsSettingsFragment.kt | 16 ++---- .../fragments/NetworkSettingsFragment.kt | 16 ++---- .../settings/fragments/SettingsFragment.kt | 18 ++----- .../fragments/TunnelSettingsFragment.kt | 16 ++---- .../fragments/VideoSettingsFragment.kt | 15 ++---- .../sidemenu/fragments/SideMenuFragment.kt | 17 ++----- 50 files changed, 209 insertions(+), 598 deletions(-) create mode 100644 app/src/main/java/org/linphone/activities/GenericFragment.kt diff --git a/app/build.gradle b/app/build.gradle index 35289450a..c99e78597 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -156,7 +156,7 @@ dependencies { implementation 'androidx.core:core-ktx:1.3.1' implementation 'androidx.navigation:navigation-fragment-ktx:2.3.0' implementation 'androidx.navigation:navigation-ui-ktx:2.3.0' - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'androidx.constraintlayout:constraintlayout:2.0.1' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0' implementation 'androidx.recyclerview:recyclerview:1.1.0' @@ -169,6 +169,7 @@ dependencies { } implementation 'org.linphone:linphone-sdk-android:4.5+' + debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.4' } if (firebaseEnabled()) { diff --git a/app/src/main/java/org/linphone/activities/GenericFragment.kt b/app/src/main/java/org/linphone/activities/GenericFragment.kt new file mode 100644 index 000000000..ea55d1888 --- /dev/null +++ b/app/src/main/java/org/linphone/activities/GenericFragment.kt @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2010-2020 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.activities + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.databinding.DataBindingUtil +import androidx.databinding.ViewDataBinding +import androidx.fragment.app.Fragment + +abstract class GenericFragment : Fragment() { + private var _binding: T? = null + protected val binding get() = _binding!! + + abstract fun getLayoutId(): Int + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + _binding = DataBindingUtil.inflate(inflater, getLayoutId(), container, false) + return _binding!!.root + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/AbstractPhoneFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/AbstractPhoneFragment.kt index 4d8dac9cc..fd601d81a 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/AbstractPhoneFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/AbstractPhoneFragment.kt @@ -22,15 +22,16 @@ package org.linphone.activities.assistant.fragments import android.Manifest import android.content.pm.PackageManager -import androidx.fragment.app.Fragment +import androidx.databinding.ViewDataBinding import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.assistant.viewmodels.AbstractPhoneViewModel import org.linphone.core.tools.Log import org.linphone.utils.PermissionHelper import org.linphone.utils.PhoneNumberUtils -abstract class AbstractPhoneFragment : Fragment() { +abstract class AbstractPhoneFragment : GenericFragment() { abstract val viewModel: AbstractPhoneViewModel override fun onRequestPermissionsResult( diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/AccountLoginFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/AccountLoginFragment.kt index e4e5ab124..f6b9e32f0 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/AccountLoginFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/AccountLoginFragment.kt @@ -23,9 +23,6 @@ import android.app.Dialog import android.content.Intent import android.net.Uri import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.LinphoneApplication.Companion.coreContext @@ -37,19 +34,11 @@ import org.linphone.activities.main.viewmodels.DialogViewModel import org.linphone.databinding.AssistantAccountLoginFragmentBinding import org.linphone.utils.DialogUtils -class AccountLoginFragment : AbstractPhoneFragment() { - private lateinit var binding: AssistantAccountLoginFragmentBinding +class AccountLoginFragment : AbstractPhoneFragment() { override lateinit var viewModel: AccountLoginViewModel private lateinit var sharedViewModel: SharedAssistantViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AssistantAccountLoginFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.assistant_account_login_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/CountryPickerFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/CountryPickerFragment.kt index 625be72fa..6c7ac400b 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/CountryPickerFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/CountryPickerFragment.kt @@ -30,7 +30,8 @@ import org.linphone.core.DialPlan import org.linphone.databinding.AssistantCountryPickerFragmentBinding class CountryPickerFragment(private val listener: CountryPickedListener) : DialogFragment() { - private lateinit var binding: AssistantCountryPickerFragmentBinding + private var _binding: AssistantCountryPickerFragmentBinding? = null + private val binding get() = _binding!! private lateinit var adapter: CountryPickerAdapter override fun onCreate(savedInstanceState: Bundle?) { @@ -38,12 +39,17 @@ class CountryPickerFragment(private val listener: CountryPickedListener) : Dialo setStyle(STYLE_NO_TITLE, R.style.assistant_country_dialog_style) } + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - binding = AssistantCountryPickerFragmentBinding.inflate(inflater, container, false) + _binding = AssistantCountryPickerFragmentBinding.inflate(inflater, container, false) adapter = CountryPickerAdapter() binding.countryList.adapter = adapter diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/EchoCancellerCalibrationFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/EchoCancellerCalibrationFragment.kt index 5bc497175..ed6eb9b06 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/EchoCancellerCalibrationFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/EchoCancellerCalibrationFragment.kt @@ -21,28 +21,18 @@ package org.linphone.activities.assistant.fragments import android.content.pm.PackageManager import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider +import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.assistant.viewmodels.EchoCancellerCalibrationViewModel import org.linphone.core.tools.Log import org.linphone.databinding.AssistantEchoCancellerCalibrationFragmentBinding import org.linphone.utils.PermissionHelper -class EchoCancellerCalibrationFragment : Fragment() { - private lateinit var binding: AssistantEchoCancellerCalibrationFragmentBinding +class EchoCancellerCalibrationFragment : GenericFragment() { private lateinit var viewModel: EchoCancellerCalibrationViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AssistantEchoCancellerCalibrationFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.assistant_echo_canceller_calibration_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/EmailAccountCreationFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/EmailAccountCreationFragment.kt index cadc39f1e..97ee046ec 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/EmailAccountCreationFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/EmailAccountCreationFragment.kt @@ -20,31 +20,20 @@ package org.linphone.activities.assistant.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.assistant.viewmodels.EmailAccountCreationViewModel import org.linphone.activities.assistant.viewmodels.EmailAccountCreationViewModelFactory import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel import org.linphone.databinding.AssistantEmailAccountCreationFragmentBinding -class EmailAccountCreationFragment : Fragment() { - private lateinit var binding: AssistantEmailAccountCreationFragmentBinding +class EmailAccountCreationFragment : GenericFragment() { private lateinit var sharedViewModel: SharedAssistantViewModel private lateinit var viewModel: EmailAccountCreationViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AssistantEmailAccountCreationFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.assistant_email_account_creation_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/EmailAccountValidationFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/EmailAccountValidationFragment.kt index d56f23631..31561c9be 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/EmailAccountValidationFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/EmailAccountValidationFragment.kt @@ -20,29 +20,18 @@ package org.linphone.activities.assistant.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.assistant.viewmodels.* import org.linphone.databinding.AssistantEmailAccountValidationFragmentBinding -class EmailAccountValidationFragment : Fragment() { - private lateinit var binding: AssistantEmailAccountValidationFragmentBinding +class EmailAccountValidationFragment : GenericFragment() { private lateinit var sharedViewModel: SharedAssistantViewModel private lateinit var viewModel: EmailAccountValidationViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AssistantEmailAccountValidationFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.assistant_email_account_validation_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/GenericAccountLoginFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/GenericAccountLoginFragment.kt index 1c4ee8f51..437a5133c 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/GenericAccountLoginFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/GenericAccountLoginFragment.kt @@ -21,14 +21,11 @@ package org.linphone.activities.assistant.fragments import android.app.Dialog import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.assistant.viewmodels.GenericLoginViewModel import org.linphone.activities.assistant.viewmodels.GenericLoginViewModelFactory import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel @@ -36,19 +33,11 @@ import org.linphone.activities.main.viewmodels.DialogViewModel import org.linphone.databinding.AssistantGenericAccountLoginFragmentBinding import org.linphone.utils.DialogUtils -class GenericAccountLoginFragment : Fragment() { - private lateinit var binding: AssistantGenericAccountLoginFragmentBinding +class GenericAccountLoginFragment : GenericFragment() { private lateinit var sharedViewModel: SharedAssistantViewModel private lateinit var viewModel: GenericLoginViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AssistantGenericAccountLoginFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.assistant_generic_account_login_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountCreationFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountCreationFragment.kt index d801a5f66..c29d1ce52 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountCreationFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountCreationFragment.kt @@ -20,9 +20,6 @@ package org.linphone.activities.assistant.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.R @@ -31,19 +28,11 @@ import org.linphone.activities.assistant.viewmodels.PhoneAccountCreationViewMode import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel import org.linphone.databinding.AssistantPhoneAccountCreationFragmentBinding -class PhoneAccountCreationFragment : AbstractPhoneFragment() { - private lateinit var binding: AssistantPhoneAccountCreationFragmentBinding +class PhoneAccountCreationFragment : AbstractPhoneFragment() { private lateinit var sharedViewModel: SharedAssistantViewModel override lateinit var viewModel: PhoneAccountCreationViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AssistantPhoneAccountCreationFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.assistant_phone_account_creation_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountLinkingFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountLinkingFragment.kt index e5c58fbd2..d59ff72d7 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountLinkingFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountLinkingFragment.kt @@ -20,9 +20,6 @@ package org.linphone.activities.assistant.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.LinphoneApplication @@ -31,19 +28,11 @@ import org.linphone.activities.assistant.viewmodels.* import org.linphone.core.tools.Log import org.linphone.databinding.AssistantPhoneAccountLinkingFragmentBinding -class PhoneAccountLinkingFragment : AbstractPhoneFragment() { - private lateinit var binding: AssistantPhoneAccountLinkingFragmentBinding +class PhoneAccountLinkingFragment : AbstractPhoneFragment() { private lateinit var sharedViewModel: SharedAssistantViewModel override lateinit var viewModel: PhoneAccountLinkingViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AssistantPhoneAccountLinkingFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.assistant_phone_account_linking_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountValidationFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountValidationFragment.kt index ae59a53d1..2f94ec25b 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountValidationFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountValidationFragment.kt @@ -22,32 +22,21 @@ package org.linphone.activities.assistant.fragments import android.content.ClipboardManager import android.content.Context.CLIPBOARD_SERVICE import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.assistant.viewmodels.PhoneAccountValidationViewModel import org.linphone.activities.assistant.viewmodels.PhoneAccountValidationViewModelFactory import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel import org.linphone.databinding.AssistantPhoneAccountValidationFragmentBinding -class PhoneAccountValidationFragment : Fragment() { - private lateinit var binding: AssistantPhoneAccountValidationFragmentBinding +class PhoneAccountValidationFragment : GenericFragment() { private lateinit var sharedViewModel: SharedAssistantViewModel private lateinit var viewModel: PhoneAccountValidationViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AssistantPhoneAccountValidationFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.assistant_phone_account_validation_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/QrCodeFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/QrCodeFragment.kt index b00691b32..a84f16003 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/QrCodeFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/QrCodeFragment.kt @@ -21,32 +21,22 @@ package org.linphone.activities.assistant.fragments import android.content.pm.PackageManager import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.assistant.viewmodels.QrCodeViewModel import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel import org.linphone.core.tools.Log import org.linphone.databinding.AssistantQrCodeFragmentBinding import org.linphone.utils.PermissionHelper -class QrCodeFragment : Fragment() { - private lateinit var binding: AssistantQrCodeFragmentBinding +class QrCodeFragment : GenericFragment() { private lateinit var sharedViewModel: SharedAssistantViewModel private lateinit var viewModel: QrCodeViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AssistantQrCodeFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.assistant_qr_code_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/RemoteProvisioningFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/RemoteProvisioningFragment.kt index 4df4f6cd5..f781463b0 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/RemoteProvisioningFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/RemoteProvisioningFragment.kt @@ -20,32 +20,21 @@ package org.linphone.activities.assistant.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.assistant.AssistantActivity import org.linphone.activities.assistant.viewmodels.RemoteProvisioningViewModel import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel import org.linphone.databinding.AssistantRemoteProvisioningFragmentBinding -class RemoteProvisioningFragment : Fragment() { - private lateinit var binding: AssistantRemoteProvisioningFragmentBinding +class RemoteProvisioningFragment : GenericFragment() { private lateinit var sharedViewModel: SharedAssistantViewModel private lateinit var viewModel: RemoteProvisioningViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AssistantRemoteProvisioningFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.assistant_remote_provisioning_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/TopBarFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/TopBarFragment.kt index 85dd13c3a..f6d5941c3 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/TopBarFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/TopBarFragment.kt @@ -20,24 +20,13 @@ package org.linphone.activities.assistant.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController +import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.databinding.AssistantTopBarFragmentBinding -class TopBarFragment : Fragment() { - private lateinit var binding: AssistantTopBarFragmentBinding - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AssistantTopBarFragmentBinding.inflate(inflater, container, false) - return binding.root - } +class TopBarFragment : GenericFragment() { + override fun getLayoutId(): Int = R.layout.assistant_top_bar_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/WelcomeFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/WelcomeFragment.kt index eb0dc97b0..ae208a7fe 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/WelcomeFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/WelcomeFragment.kt @@ -20,28 +20,17 @@ package org.linphone.activities.assistant.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.assistant.viewmodels.WelcomeViewModel import org.linphone.databinding.AssistantWelcomeFragmentBinding -class WelcomeFragment : Fragment() { - private lateinit var binding: AssistantWelcomeFragmentBinding +class WelcomeFragment : GenericFragment() { private lateinit var viewModel: WelcomeViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AssistantWelcomeFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.assistant_welcome_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt b/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt index bfa5360ae..c0f894b2c 100644 --- a/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt +++ b/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt @@ -23,12 +23,9 @@ import android.app.Dialog import android.content.Intent import android.os.Bundle import android.os.SystemClock -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.call.viewmodels.CallsViewModel import org.linphone.activities.call.viewmodels.ControlsViewModel import org.linphone.activities.call.viewmodels.SharedCallViewModel @@ -40,22 +37,14 @@ import org.linphone.utils.AppUtils import org.linphone.utils.DialogUtils import org.linphone.utils.Event -class ControlsFragment : Fragment() { - private lateinit var binding: CallControlsFragmentBinding +class ControlsFragment : GenericFragment() { private lateinit var callsViewModel: CallsViewModel private lateinit var controlsViewModel: ControlsViewModel private lateinit var sharedViewModel: SharedCallViewModel private var dialog: Dialog? = null - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = CallControlsFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.call_controls_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/call/fragments/StatisticsFragment.kt b/app/src/main/java/org/linphone/activities/call/fragments/StatisticsFragment.kt index 7e9bc8d57..23c5393b7 100644 --- a/app/src/main/java/org/linphone/activities/call/fragments/StatisticsFragment.kt +++ b/app/src/main/java/org/linphone/activities/call/fragments/StatisticsFragment.kt @@ -20,26 +20,16 @@ package org.linphone.activities.call.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider +import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.call.viewmodels.StatisticsListViewModel import org.linphone.databinding.CallStatisticsFragmentBinding -class StatisticsFragment : Fragment() { - private lateinit var binding: CallStatisticsFragmentBinding +class StatisticsFragment : GenericFragment() { private lateinit var viewModel: StatisticsListViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = CallStatisticsFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.call_statistics_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/call/fragments/StatusFragment.kt b/app/src/main/java/org/linphone/activities/call/fragments/StatusFragment.kt index 61b8199b2..c6237ce39 100644 --- a/app/src/main/java/org/linphone/activities/call/fragments/StatusFragment.kt +++ b/app/src/main/java/org/linphone/activities/call/fragments/StatusFragment.kt @@ -21,13 +21,10 @@ package org.linphone.activities.call.fragments import android.app.Dialog import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import java.util.* import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.call.viewmodels.SharedCallViewModel import org.linphone.activities.call.viewmodels.StatusViewModel import org.linphone.activities.main.viewmodels.DialogViewModel @@ -37,20 +34,12 @@ import org.linphone.databinding.CallStatusFragmentBinding import org.linphone.utils.DialogUtils import org.linphone.utils.Event -class StatusFragment : Fragment() { - private lateinit var binding: CallStatusFragmentBinding +class StatusFragment : GenericFragment() { private lateinit var viewModel: StatusViewModel private lateinit var sharedViewModel: SharedCallViewModel private var zrtpDialog: Dialog? = null - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = CallStatusFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.call_status_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/about/AboutFragment.kt b/app/src/main/java/org/linphone/activities/main/about/AboutFragment.kt index 1a6ebc6e4..926de5de0 100644 --- a/app/src/main/java/org/linphone/activities/main/about/AboutFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/about/AboutFragment.kt @@ -22,29 +22,18 @@ package org.linphone.activities.main.about import android.content.* import android.net.Uri import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment 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.databinding.AboutFragmentBinding import org.linphone.utils.AppUtils -class AboutFragment : Fragment() { - private lateinit var binding: AboutFragmentBinding +class AboutFragment : GenericFragment() { private lateinit var viewModel: AboutViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = AboutFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.about_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/ChatRoomCreationFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/ChatRoomCreationFragment.kt index c4a1acb0a..e8bccdef1 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/ChatRoomCreationFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/ChatRoomCreationFragment.kt @@ -20,15 +20,13 @@ package org.linphone.activities.main.chat.fragments import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.MainActivity import org.linphone.activities.main.chat.adapters.ChatRoomCreationContactsAdapter import org.linphone.activities.main.chat.viewmodels.ChatRoomCreationViewModel @@ -36,20 +34,12 @@ import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.core.Address import org.linphone.databinding.ChatRoomCreationFragmentBinding -class ChatRoomCreationFragment : Fragment() { - private lateinit var binding: ChatRoomCreationFragmentBinding +class ChatRoomCreationFragment : GenericFragment() { private lateinit var viewModel: ChatRoomCreationViewModel private lateinit var sharedViewModel: SharedMainViewModel private lateinit var adapter: ChatRoomCreationContactsAdapter - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = ChatRoomCreationFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.chat_room_creation_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt index 4fc56c505..ad0a32578 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt @@ -56,8 +56,7 @@ import org.linphone.databinding.ChatRoomDetailFragmentBinding import org.linphone.utils.* import org.linphone.utils.Event -class DetailChatRoomFragment : MasterFragment() { - private lateinit var binding: ChatRoomDetailFragmentBinding +class DetailChatRoomFragment : MasterFragment() { private lateinit var viewModel: ChatRoomViewModel private lateinit var chatSendingViewModel: ChatMessageSendingViewModel private lateinit var listViewModel: ChatMessagesListViewModel @@ -65,13 +64,8 @@ class DetailChatRoomFragment : MasterFragment() { private lateinit var sharedViewModel: SharedMainViewModel private var chatRoomAddress: String? = null - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = ChatRoomDetailFragmentBinding.inflate(inflater, container, false) - return binding.root + override fun getLayoutId(): Int { + return R.layout.chat_room_detail_fragment } override fun onActivityCreated(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/DevicesFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/DevicesFragment.kt index 8bff9f38b..b042e0eb6 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/DevicesFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/DevicesFragment.kt @@ -20,30 +20,20 @@ package org.linphone.activities.main.chat.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController +import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.chat.viewmodels.DevicesListViewModel import org.linphone.activities.main.chat.viewmodels.DevicesListViewModelFactory import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.databinding.ChatRoomDevicesFragmentBinding -class DevicesFragment : Fragment() { - private lateinit var binding: ChatRoomDevicesFragmentBinding +class DevicesFragment : GenericFragment() { private lateinit var listViewModel: DevicesListViewModel private lateinit var sharedViewModel: SharedMainViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = ChatRoomDevicesFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.chat_room_devices_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/EphemeralFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/EphemeralFragment.kt index 5aa15a1a0..9935db461 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/EphemeralFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/EphemeralFragment.kt @@ -20,29 +20,21 @@ package org.linphone.activities.main.chat.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController +import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.chat.viewmodels.EphemeralViewModel import org.linphone.activities.main.chat.viewmodels.EphemeralViewModelFactory import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.databinding.ChatRoomEphemeralFragmentBinding -class EphemeralFragment : Fragment() { - private lateinit var binding: ChatRoomEphemeralFragmentBinding +class EphemeralFragment : GenericFragment() { private lateinit var viewModel: EphemeralViewModel private lateinit var sharedViewModel: SharedMainViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = ChatRoomEphemeralFragmentBinding.inflate(inflater, container, false) - return binding.root + override fun getLayoutId(): Int { + return R.layout.chat_room_ephemeral_fragment } override fun onActivityCreated(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/GroupInfoFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/GroupInfoFragment.kt index 622da8a00..be6c0f209 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/GroupInfoFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/GroupInfoFragment.kt @@ -21,15 +21,12 @@ package org.linphone.activities.main.chat.fragments import android.app.Dialog import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.MainActivity import org.linphone.activities.main.chat.GroupChatRoomMember import org.linphone.activities.main.chat.adapters.GroupInfoParticipantsAdapter @@ -43,21 +40,13 @@ import org.linphone.core.ChatRoomCapabilities import org.linphone.databinding.ChatRoomGroupInfoFragmentBinding import org.linphone.utils.DialogUtils -class GroupInfoFragment : Fragment() { - private lateinit var binding: ChatRoomGroupInfoFragmentBinding +class GroupInfoFragment : GenericFragment() { private lateinit var viewModel: GroupInfoViewModel private lateinit var sharedViewModel: SharedMainViewModel private lateinit var adapter: GroupInfoParticipantsAdapter private var meAdminStatusChangedDialog: Dialog? = null - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = ChatRoomGroupInfoFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.chat_room_group_info_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/ImdnFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/ImdnFragment.kt index 89f025917..69f7f9d9d 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/ImdnFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/ImdnFragment.kt @@ -20,15 +20,12 @@ package org.linphone.activities.main.chat.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.chat.adapters.ImdnAdapter import org.linphone.activities.main.chat.viewmodels.ImdnViewModel import org.linphone.activities.main.chat.viewmodels.ImdnViewModelFactory @@ -37,19 +34,13 @@ import org.linphone.core.tools.Log import org.linphone.databinding.ChatRoomImdnFragmentBinding import org.linphone.utils.RecyclerViewHeaderDecoration -class ImdnFragment : Fragment() { - private lateinit var binding: ChatRoomImdnFragmentBinding +class ImdnFragment : GenericFragment() { private lateinit var viewModel: ImdnViewModel private lateinit var adapter: ImdnAdapter private lateinit var sharedViewModel: SharedMainViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = ChatRoomImdnFragmentBinding.inflate(inflater, container, false) - return binding.root + override fun getLayoutId(): Int { + return R.layout.chat_room_imdn_fragment } override fun onActivityCreated(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt index 0721c77f0..11a7be924 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt @@ -21,9 +21,6 @@ package org.linphone.activities.main.chat.fragments import android.app.Dialog import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration @@ -46,21 +43,13 @@ import org.linphone.core.tools.Log import org.linphone.databinding.ChatRoomMasterFragmentBinding import org.linphone.utils.* -class MasterChatRoomsFragment : MasterFragment() { +class MasterChatRoomsFragment : MasterFragment() { override val dialogConfirmationMessageBeforeRemoval = R.plurals.chat_room_delete_dialog - private lateinit var binding: ChatRoomMasterFragmentBinding private lateinit var listViewModel: ChatRoomsListViewModel private lateinit var adapter: ChatRoomsListAdapter private lateinit var sharedViewModel: SharedMainViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = ChatRoomMasterFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.chat_room_master_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/contact/fragments/ContactEditorFragment.kt b/app/src/main/java/org/linphone/activities/main/contact/fragments/ContactEditorFragment.kt index e782597d1..7c3b813d2 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/fragments/ContactEditorFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/fragments/ContactEditorFragment.kt @@ -26,10 +26,6 @@ import android.net.Uri import android.os.Bundle import android.os.Parcelable import android.provider.MediaStore -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController @@ -37,6 +33,7 @@ import java.io.File import kotlinx.coroutines.launch import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.MainActivity import org.linphone.activities.main.contact.viewmodels.* import org.linphone.activities.main.navigateToContact @@ -48,20 +45,12 @@ import org.linphone.utils.FileUtils import org.linphone.utils.ImageUtils import org.linphone.utils.PermissionHelper -class ContactEditorFragment : Fragment(), SyncAccountPickerFragment.SyncAccountPickedListener { - private lateinit var binding: ContactEditorFragmentBinding +class ContactEditorFragment : GenericFragment(), SyncAccountPickerFragment.SyncAccountPickedListener { private lateinit var viewModel: ContactEditorViewModel private lateinit var sharedViewModel: SharedMainViewModel private var temporaryPicturePath: File? = null - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = ContactEditorFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.contact_editor_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/contact/fragments/DetailContactFragment.kt b/app/src/main/java/org/linphone/activities/main/contact/fragments/DetailContactFragment.kt index 659a81673..fde2c0c14 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/fragments/DetailContactFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/fragments/DetailContactFragment.kt @@ -23,14 +23,12 @@ import android.app.Dialog import android.content.Intent import android.net.Uri import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.MainActivity import org.linphone.activities.main.contact.viewmodels.ContactViewModel import org.linphone.activities.main.contact.viewmodels.ContactViewModelFactory @@ -40,19 +38,11 @@ import org.linphone.core.tools.Log import org.linphone.databinding.ContactDetailFragmentBinding import org.linphone.utils.DialogUtils -class DetailContactFragment : Fragment() { - private lateinit var binding: ContactDetailFragmentBinding +class DetailContactFragment : GenericFragment() { private lateinit var viewModel: ContactViewModel private lateinit var sharedViewModel: SharedMainViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = ContactDetailFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.contact_detail_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt b/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt index c8a890a16..af80f7f1e 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt @@ -22,9 +22,6 @@ package org.linphone.activities.main.contact.fragments import android.app.Dialog import android.content.pm.PackageManager import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration @@ -47,9 +44,8 @@ import org.linphone.core.tools.Log import org.linphone.databinding.ContactMasterFragmentBinding import org.linphone.utils.* -class MasterContactsFragment : MasterFragment() { +class MasterContactsFragment : MasterFragment() { override val dialogConfirmationMessageBeforeRemoval = R.plurals.contact_delete_dialog - private lateinit var binding: ContactMasterFragmentBinding private lateinit var listViewModel: ContactsListViewModel private lateinit var adapter: ContactsListAdapter private lateinit var sharedViewModel: SharedMainViewModel @@ -57,14 +53,7 @@ class MasterContactsFragment : MasterFragment() { private var sipUriToAdd: String? = null private var editOnClick: Boolean = false - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = ContactMasterFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.contact_master_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/contact/fragments/SyncAccountPickerFragment.kt b/app/src/main/java/org/linphone/activities/main/contact/fragments/SyncAccountPickerFragment.kt index 78e5cdc6a..64e31bb05 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/fragments/SyncAccountPickerFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/fragments/SyncAccountPickerFragment.kt @@ -28,7 +28,8 @@ import org.linphone.core.tools.Log import org.linphone.databinding.ContactSyncAccountPickerFragmentBinding class SyncAccountPickerFragment(private val listener: SyncAccountPickedListener) : DialogFragment() { - private lateinit var binding: ContactSyncAccountPickerFragmentBinding + private var _binding: ContactSyncAccountPickerFragmentBinding? = null + private val binding get() = _binding!! private lateinit var adapter: SyncAccountAdapter override fun onCreate(savedInstanceState: Bundle?) { @@ -36,12 +37,17 @@ class SyncAccountPickerFragment(private val listener: SyncAccountPickedListener) setStyle(STYLE_NO_TITLE, R.style.assistant_country_dialog_style) } + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - binding = ContactSyncAccountPickerFragmentBinding.inflate(inflater, container, false) + _binding = ContactSyncAccountPickerFragmentBinding.inflate(inflater, container, false) adapter = SyncAccountAdapter() binding.accountsList.adapter = adapter diff --git a/app/src/main/java/org/linphone/activities/main/dialer/fragments/DialerFragment.kt b/app/src/main/java/org/linphone/activities/main/dialer/fragments/DialerFragment.kt index 62f894d70..1a9efd0d8 100644 --- a/app/src/main/java/org/linphone/activities/main/dialer/fragments/DialerFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/dialer/fragments/DialerFragment.kt @@ -26,10 +26,6 @@ import android.content.Context import android.content.Intent import android.net.Uri import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -37,6 +33,7 @@ import org.linphone.BuildConfig import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.MainActivity import org.linphone.activities.main.dialer.viewmodels.DialerViewModel import org.linphone.activities.main.viewmodels.DialogViewModel @@ -46,21 +43,13 @@ import org.linphone.databinding.DialerFragmentBinding import org.linphone.utils.AppUtils import org.linphone.utils.DialogUtils -class DialerFragment : Fragment() { - private lateinit var binding: DialerFragmentBinding +class DialerFragment : GenericFragment() { private lateinit var viewModel: DialerViewModel private lateinit var sharedViewModel: SharedMainViewModel private var uploadLogsInitiatedByUs = false - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = DialerFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.dialer_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/fragments/ListTopBarFragment.kt b/app/src/main/java/org/linphone/activities/main/fragments/ListTopBarFragment.kt index 12d783bd6..f85948c27 100644 --- a/app/src/main/java/org/linphone/activities/main/fragments/ListTopBarFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/fragments/ListTopBarFragment.kt @@ -20,27 +20,17 @@ package org.linphone.activities.main.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider +import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.viewmodels.ListTopBarViewModel import org.linphone.databinding.ListEditTopBarFragmentBinding import org.linphone.utils.Event -class ListTopBarFragment : Fragment() { - private lateinit var binding: ListEditTopBarFragmentBinding +class ListTopBarFragment : GenericFragment() { private lateinit var viewModel: ListTopBarViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = ListEditTopBarFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.list_edit_top_bar_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/fragments/MasterFragment.kt b/app/src/main/java/org/linphone/activities/main/fragments/MasterFragment.kt index 8c2f9f4b1..48ffb0cfb 100644 --- a/app/src/main/java/org/linphone/activities/main/fragments/MasterFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/fragments/MasterFragment.kt @@ -21,9 +21,10 @@ package org.linphone.activities.main.fragments import android.app.Dialog import android.os.Bundle -import androidx.fragment.app.Fragment +import androidx.databinding.ViewDataBinding import androidx.lifecycle.ViewModelProvider import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.viewmodels.DialogViewModel import org.linphone.activities.main.viewmodels.ListTopBarViewModel import org.linphone.utils.AppUtils @@ -33,7 +34,7 @@ import org.linphone.utils.DialogUtils * This fragment can be inherited by all fragments that will display a list * where items can be selected for removal through the ListTopBarFragment */ -abstract class MasterFragment : Fragment() { +abstract class MasterFragment : GenericFragment() { protected lateinit var listSelectionViewModel: ListTopBarViewModel protected open val dialogConfirmationMessageBeforeRemoval: Int = R.plurals.dialog_default_delete diff --git a/app/src/main/java/org/linphone/activities/main/fragments/StatusFragment.kt b/app/src/main/java/org/linphone/activities/main/fragments/StatusFragment.kt index da8d801ee..5e250e043 100644 --- a/app/src/main/java/org/linphone/activities/main/fragments/StatusFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/fragments/StatusFragment.kt @@ -20,31 +20,21 @@ package org.linphone.activities.main.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.activities.main.viewmodels.StatusViewModel import org.linphone.core.tools.Log import org.linphone.databinding.StatusFragmentBinding import org.linphone.utils.Event -class StatusFragment : Fragment() { - private lateinit var binding: StatusFragmentBinding +class StatusFragment : GenericFragment() { private lateinit var viewModel: StatusViewModel private lateinit var sharedViewModel: SharedMainViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = StatusFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.status_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/fragments/TabsFragment.kt b/app/src/main/java/org/linphone/activities/main/fragments/TabsFragment.kt index ae05023a4..2b7f2a35d 100644 --- a/app/src/main/java/org/linphone/activities/main/fragments/TabsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/fragments/TabsFragment.kt @@ -20,28 +20,17 @@ package org.linphone.activities.main.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.viewmodels.TabsViewModel import org.linphone.databinding.TabsFragmentBinding -class TabsFragment : Fragment() { - private lateinit var binding: TabsFragmentBinding +class TabsFragment : GenericFragment() { private lateinit var viewModel: TabsViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = TabsFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.tabs_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/history/fragments/DetailCallLogFragment.kt b/app/src/main/java/org/linphone/activities/main/history/fragments/DetailCallLogFragment.kt index 0167badb7..205880611 100644 --- a/app/src/main/java/org/linphone/activities/main/history/fragments/DetailCallLogFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/history/fragments/DetailCallLogFragment.kt @@ -20,14 +20,12 @@ package org.linphone.activities.main.history.fragments import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.MainActivity import org.linphone.activities.main.history.viewmodels.CallLogViewModel import org.linphone.activities.main.history.viewmodels.CallLogViewModelFactory @@ -39,19 +37,11 @@ import org.linphone.contact.NativeContact import org.linphone.core.tools.Log import org.linphone.databinding.HistoryDetailFragmentBinding -class DetailCallLogFragment : Fragment() { - private lateinit var binding: HistoryDetailFragmentBinding +class DetailCallLogFragment : GenericFragment() { private lateinit var viewModel: CallLogViewModel private lateinit var sharedViewModel: SharedMainViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = HistoryDetailFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.history_detail_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt b/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt index c01833794..7403d357f 100644 --- a/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt @@ -21,9 +21,6 @@ package org.linphone.activities.main.history.fragments import android.app.Dialog import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController @@ -45,21 +42,13 @@ import org.linphone.core.tools.Log import org.linphone.databinding.HistoryMasterFragmentBinding import org.linphone.utils.* -class MasterCallLogsFragment : MasterFragment() { +class MasterCallLogsFragment : MasterFragment() { override val dialogConfirmationMessageBeforeRemoval = R.plurals.history_delete_dialog - private lateinit var binding: HistoryMasterFragmentBinding private lateinit var listViewModel: CallLogsListViewModel private lateinit var adapter: CallLogsListAdapter private lateinit var sharedViewModel: SharedMainViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = HistoryMasterFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.history_master_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/recordings/fragments/RecordingsFragment.kt b/app/src/main/java/org/linphone/activities/main/recordings/fragments/RecordingsFragment.kt index 738cf8110..e95c51fcf 100644 --- a/app/src/main/java/org/linphone/activities/main/recordings/fragments/RecordingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/recordings/fragments/RecordingsFragment.kt @@ -20,10 +20,7 @@ package org.linphone.activities.main.recordings.fragments import android.os.Bundle -import android.view.LayoutInflater import android.view.MotionEvent -import android.view.View -import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.DividerItemDecoration @@ -36,22 +33,14 @@ import org.linphone.activities.main.recordings.viewmodels.RecordingsViewModel import org.linphone.databinding.RecordingsFragmentBinding import org.linphone.utils.RecyclerViewHeaderDecoration -class RecordingsFragment : MasterFragment() { - private lateinit var binding: RecordingsFragmentBinding +class RecordingsFragment : MasterFragment() { private lateinit var viewModel: RecordingsViewModel private lateinit var adapter: RecordingsListAdapter private var videoX: Float = 0f private var videoY: Float = 0f - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = RecordingsFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.recordings_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/AccountSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/AccountSettingsFragment.kt index 624b60174..645af0a76 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/AccountSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/AccountSettingsFragment.kt @@ -20,32 +20,22 @@ package org.linphone.activities.main.settings.fragments import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.settings.viewmodels.AccountSettingsViewModel import org.linphone.activities.main.settings.viewmodels.AccountSettingsViewModelFactory import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.core.tools.Log import org.linphone.databinding.SettingsAccountFragmentBinding -class AccountSettingsFragment : Fragment() { - private lateinit var binding: SettingsAccountFragmentBinding +class AccountSettingsFragment : GenericFragment() { private lateinit var sharedViewModel: SharedMainViewModel private lateinit var viewModel: AccountSettingsViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = SettingsAccountFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.settings_account_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/AdvancedSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/AdvancedSettingsFragment.kt index 6943ebc0d..9ab53b804 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/AdvancedSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/AdvancedSettingsFragment.kt @@ -24,34 +24,24 @@ import android.content.Intent import android.net.Uri import android.os.Bundle import android.provider.Settings -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.R import org.linphone.activities.GenericActivity +import org.linphone.activities.GenericFragment 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.PowerManagerUtils -class AdvancedSettingsFragment : Fragment() { - private lateinit var binding: SettingsAdvancedFragmentBinding +class AdvancedSettingsFragment : GenericFragment() { private lateinit var viewModel: AdvancedSettingsViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = SettingsAdvancedFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.settings_advanced_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/AudioSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/AudioSettingsFragment.kt index 39ca68c67..de1b12285 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/AudioSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/AudioSettingsFragment.kt @@ -23,33 +23,24 @@ import android.content.pm.PackageManager import android.os.Bundle import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.databinding.DataBindingUtil import androidx.databinding.ViewDataBinding -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.BR import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.settings.SettingListenerStub import org.linphone.activities.main.settings.viewmodels.AudioSettingsViewModel import org.linphone.core.tools.Log import org.linphone.databinding.SettingsAudioFragmentBinding import org.linphone.utils.PermissionHelper -class AudioSettingsFragment : Fragment() { - private lateinit var binding: SettingsAudioFragmentBinding +class AudioSettingsFragment : GenericFragment() { private lateinit var viewModel: AudioSettingsViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = SettingsAudioFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.settings_audio_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt index 6de1a6e83..2fae3602a 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt @@ -24,30 +24,20 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.provider.Settings -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.settings.viewmodels.CallSettingsViewModel import org.linphone.compatibility.Compatibility import org.linphone.databinding.SettingsCallFragmentBinding import org.linphone.mediastream.Version -class CallSettingsFragment : Fragment() { - private lateinit var binding: SettingsCallFragmentBinding +class CallSettingsFragment : GenericFragment() { private lateinit var viewModel: CallSettingsViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = SettingsCallFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.settings_call_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/ChatSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/ChatSettingsFragment.kt index 10d85ccbc..f343d0f82 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/ChatSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/ChatSettingsFragment.kt @@ -23,30 +23,20 @@ import android.content.Intent import android.os.Build import android.os.Bundle import android.provider.Settings -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.settings.viewmodels.ChatSettingsViewModel import org.linphone.compatibility.Compatibility import org.linphone.databinding.SettingsChatFragmentBinding import org.linphone.mediastream.Version -class ChatSettingsFragment : Fragment() { - private lateinit var binding: SettingsChatFragmentBinding +class ChatSettingsFragment : GenericFragment() { private lateinit var viewModel: ChatSettingsViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = SettingsChatFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.settings_chat_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/ContactsSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/ContactsSettingsFragment.kt index d4925ca25..faec29dae 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/ContactsSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/ContactsSettingsFragment.kt @@ -21,33 +21,23 @@ package org.linphone.activities.main.settings.fragments import android.content.pm.PackageManager import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.settings.viewmodels.ContactsSettingsViewModel import org.linphone.compatibility.Compatibility import org.linphone.core.tools.Log import org.linphone.databinding.SettingsContactsFragmentBinding import org.linphone.utils.PermissionHelper -class ContactsSettingsFragment : Fragment() { - private lateinit var binding: SettingsContactsFragmentBinding +class ContactsSettingsFragment : GenericFragment() { private lateinit var viewModel: ContactsSettingsViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = SettingsContactsFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.settings_contacts_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/NetworkSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/NetworkSettingsFragment.kt index 169dc04b9..533811fa8 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/NetworkSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/NetworkSettingsFragment.kt @@ -20,28 +20,18 @@ package org.linphone.activities.main.settings.fragments import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.settings.viewmodels.NetworkSettingsViewModel import org.linphone.databinding.SettingsNetworkFragmentBinding -class NetworkSettingsFragment : Fragment() { - private lateinit var binding: SettingsNetworkFragmentBinding +class NetworkSettingsFragment : GenericFragment() { private lateinit var viewModel: NetworkSettingsViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = SettingsNetworkFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.settings_network_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/SettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/SettingsFragment.kt index 7931fbd19..09dbc432d 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/SettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/SettingsFragment.kt @@ -20,12 +20,10 @@ package org.linphone.activities.main.settings.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController +import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.* import org.linphone.activities.main.navigateToAccountSettings import org.linphone.activities.main.navigateToAudioSettings @@ -36,19 +34,11 @@ import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.core.tools.Log import org.linphone.databinding.SettingsFragmentBinding -class SettingsFragment : Fragment() { - private lateinit var binding: SettingsFragmentBinding +class SettingsFragment : GenericFragment() { private lateinit var sharedViewModel: SharedMainViewModel private lateinit var viewModel: SettingsViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = SettingsFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.settings_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/TunnelSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/TunnelSettingsFragment.kt index 163f7bf9d..f62d0d42c 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/TunnelSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/TunnelSettingsFragment.kt @@ -20,28 +20,18 @@ package org.linphone.activities.main.settings.fragments import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.settings.viewmodels.TunnelSettingsViewModel import org.linphone.databinding.SettingsTunnelFragmentBinding -class TunnelSettingsFragment : Fragment() { - private lateinit var binding: SettingsTunnelFragmentBinding +class TunnelSettingsFragment : GenericFragment() { private lateinit var viewModel: TunnelSettingsViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = SettingsTunnelFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.settings_tunnel_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/VideoSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/VideoSettingsFragment.kt index c4a1bd9ca..5735326af 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/VideoSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/VideoSettingsFragment.kt @@ -23,33 +23,24 @@ import android.content.pm.PackageManager import android.os.Bundle import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.databinding.DataBindingUtil import androidx.databinding.ViewDataBinding -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.linphone.BR import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.main.settings.SettingListenerStub import org.linphone.activities.main.settings.viewmodels.VideoSettingsViewModel import org.linphone.core.tools.Log import org.linphone.databinding.SettingsVideoFragmentBinding import org.linphone.utils.PermissionHelper -class VideoSettingsFragment : Fragment() { - private lateinit var binding: SettingsVideoFragmentBinding +class VideoSettingsFragment : GenericFragment() { private lateinit var viewModel: VideoSettingsViewModel - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = SettingsVideoFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.settings_video_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/org/linphone/activities/main/sidemenu/fragments/SideMenuFragment.kt b/app/src/main/java/org/linphone/activities/main/sidemenu/fragments/SideMenuFragment.kt index 4029a9248..00ff2474e 100644 --- a/app/src/main/java/org/linphone/activities/main/sidemenu/fragments/SideMenuFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/sidemenu/fragments/SideMenuFragment.kt @@ -25,10 +25,6 @@ import android.net.Uri import android.os.Bundle import android.os.Parcelable import android.provider.MediaStore -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController @@ -36,6 +32,7 @@ import java.io.File import kotlinx.coroutines.launch import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R +import org.linphone.activities.GenericFragment import org.linphone.activities.assistant.AssistantActivity import org.linphone.activities.main.navigateToAccountSettings import org.linphone.activities.main.settings.SettingListenerStub @@ -48,20 +45,12 @@ import org.linphone.utils.FileUtils import org.linphone.utils.ImageUtils import org.linphone.utils.PermissionHelper -class SideMenuFragment : Fragment() { - private lateinit var binding: SideMenuFragmentBinding +class SideMenuFragment : GenericFragment() { private lateinit var viewModel: SideMenuViewModel private lateinit var sharedViewModel: SharedMainViewModel private var temporaryPicturePath: File? = null - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = SideMenuFragmentBinding.inflate(inflater, container, false) - return binding.root - } + override fun getLayoutId(): Int = R.layout.side_menu_fragment override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState)