diff --git a/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.java b/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.java deleted file mode 100644 index 279529622c43..000000000000 --- a/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Nextcloud - Android Client - * - * SPDX-FileCopyrightText: 2017 Tobias Kaminsky - * SPDX-FileCopyrightText: 2017 Nextcloud GmbH - * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only - */ -package com.owncloud.android.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.preference.SwitchPreference; -import android.util.AttributeSet; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Switch; - -import com.owncloud.android.MainApp; -import com.owncloud.android.utils.theme.ViewThemeUtils; - -import javax.inject.Inject; - -/** - * Themeable switch preference TODO Migrate to androidx - */ -public class ThemeableSwitchPreference extends SwitchPreference { - @Inject - ViewThemeUtils viewThemeUtils; - - public ThemeableSwitchPreference(Context context) { - super(context); - MainApp.getAppComponent().inject(this); - } - - public ThemeableSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - MainApp.getAppComponent().inject(this); - } - - public ThemeableSwitchPreference(Context context, AttributeSet attrs) { - super(context, attrs); - MainApp.getAppComponent().inject(this); - } - - @Override - protected void onBindView(View view) { - super.onBindView(view); - - if (view instanceof ViewGroup) { - findSwitch((ViewGroup) view); - } - } - - private void findSwitch(ViewGroup viewGroup) { - for (int i = 0; i < viewGroup.getChildCount(); i++) { - View child = viewGroup.getChildAt(i); - - if (child instanceof @SuppressLint("UseSwitchCompatOrMaterialCode") Switch switchView) { - viewThemeUtils.platform.colorSwitch(switchView); - - break; - } else if (child instanceof ViewGroup) { - findSwitch((ViewGroup) child); - } - } - } -} diff --git a/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt b/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt new file mode 100644 index 000000000000..fa8ccbb332be --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt @@ -0,0 +1,54 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 Alper Ozturk + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui + +import android.content.Context +import android.preference.SwitchPreference +import android.util.AttributeSet +import android.view.View +import com.google.android.material.materialswitch.MaterialSwitch +import com.owncloud.android.MainApp +import com.owncloud.android.R +import com.owncloud.android.utils.theme.ViewThemeUtils +import javax.inject.Inject + +@Suppress("DEPRECATION") +class ThemeableSwitchPreference : SwitchPreference { + @Inject + lateinit var viewThemeUtils: ViewThemeUtils + + /** + * Do not delete constructor. These are used. + */ + constructor(context: Context) : super(context) { + init() + } + + constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) { + init() + } + + constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { + init() + } + + private fun init() { + MainApp.getAppComponent().inject(this) + setWidgetLayoutResource(R.layout.themeable_switch) + } + + @Deprecated("Deprecated in Java") + override fun onBindView(view: View) { + super.onBindView(view) + val checkable = view.findViewById(R.id.switch_widget) + if (checkable is MaterialSwitch) { + checkable.setChecked(isChecked) + viewThemeUtils.material.colorMaterialSwitch(checkable) + } + } +} diff --git a/app/src/main/res/layout/themeable_switch.xml b/app/src/main/res/layout/themeable_switch.xml new file mode 100644 index 000000000000..a83754d18a2d --- /dev/null +++ b/app/src/main/res/layout/themeable_switch.xml @@ -0,0 +1,14 @@ + + +