From 36fb9ed28ce3681a8eff41efe477853c6099afeb Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Wed, 21 Jan 2026 09:09:49 +0100 Subject: [PATCH 1/4] Rename .java to .kt Signed-off-by: alperozturk96 --- ...hemeableSwitchPreference.java => ThemeableSwitchPreference.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename app/src/main/java/com/owncloud/android/ui/{ThemeableSwitchPreference.java => ThemeableSwitchPreference.kt} (100%) diff --git a/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.java b/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt similarity index 100% rename from app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.java rename to app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt From 7b5b8d9e67e8e396cde945166cc34927b6cf9c0f Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Wed, 21 Jan 2026 09:09:50 +0100 Subject: [PATCH 2/4] feat(settings-activity): m3 switch Signed-off-by: alperozturk96 --- .../android/ui/ThemeableSwitchPreference.kt | 88 +++++++------------ app/src/main/res/layout/themeable_switch.xml | 14 +++ 2 files changed, 48 insertions(+), 54 deletions(-) create mode 100644 app/src/main/res/layout/themeable_switch.xml diff --git a/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt b/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt index 279529622c43..7ab0c7978b6b 100644 --- a/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt +++ b/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt @@ -1,67 +1,47 @@ -/* - * 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 { +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 - ViewThemeUtils viewThemeUtils; + lateinit var viewThemeUtils: ViewThemeUtils - public ThemeableSwitchPreference(Context context) { - super(context); - MainApp.getAppComponent().inject(this); + /** + * Do not delete constructor. These are used. + */ + constructor(context: Context) : super(context) { + init() } - public ThemeableSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - MainApp.getAppComponent().inject(this); + constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) { + init() } - public ThemeableSwitchPreference(Context context, AttributeSet attrs) { - super(context, attrs); - MainApp.getAppComponent().inject(this); + constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { + init() } - @Override - protected void onBindView(View view) { - super.onBindView(view); - - if (view instanceof ViewGroup) { - findSwitch((ViewGroup) view); - } + private fun init() { + MainApp.getAppComponent().inject(this) + setWidgetLayoutResource(R.layout.themeable_switch) } - 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); - } + @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..f16d35852f63 --- /dev/null +++ b/app/src/main/res/layout/themeable_switch.xml @@ -0,0 +1,14 @@ + + \ No newline at end of file From 08fad89ffec3f47ec5e5fb73616ae4b61cbf7436 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Wed, 21 Jan 2026 09:15:07 +0100 Subject: [PATCH 3/4] add license Signed-off-by: alperozturk96 --- .../com/owncloud/android/ui/ThemeableSwitchPreference.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt b/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt index 7ab0c7978b6b..fa8ccbb332be 100644 --- a/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt +++ b/app/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.kt @@ -1,3 +1,10 @@ +/* + * 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 From 7ce0b114642ad48009d3bef58b4dbed27971a409 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Wed, 21 Jan 2026 21:56:21 +0100 Subject: [PATCH 4/4] style: Fix formatting Signed-off-by: Andy Scherzinger --- app/src/main/res/layout/themeable_switch.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/layout/themeable_switch.xml b/app/src/main/res/layout/themeable_switch.xml index f16d35852f63..a83754d18a2d 100644 --- a/app/src/main/res/layout/themeable_switch.xml +++ b/app/src/main/res/layout/themeable_switch.xml @@ -1,14 +1,14 @@ - - \ No newline at end of file + android:focusable="false" />