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)