ThemeableSwitchPreference.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * Nextcloud - Android Client
  3. *
  4. * SPDX-FileCopyrightText: 2017 Tobias Kaminsky <tobias@kaminsky.me>
  5. * SPDX-FileCopyrightText: 2017 Nextcloud GmbH
  6. * SPDX-License-Identifier: AGPL-3.0-or-later
  7. */
  8. package com.owncloud.android.ui;
  9. import android.content.Context;
  10. import android.preference.SwitchPreference;
  11. import android.util.AttributeSet;
  12. import android.view.View;
  13. import android.view.ViewGroup;
  14. import android.widget.Switch;
  15. import com.owncloud.android.MainApp;
  16. import com.owncloud.android.utils.theme.ViewThemeUtils;
  17. import javax.inject.Inject;
  18. /**
  19. * Themeable switch preference TODO Migrate to androidx
  20. */
  21. public class ThemeableSwitchPreference extends SwitchPreference {
  22. @Inject
  23. ViewThemeUtils viewThemeUtils;
  24. public ThemeableSwitchPreference(Context context) {
  25. super(context);
  26. MainApp.getAppComponent().inject(this);
  27. }
  28. public ThemeableSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) {
  29. super(context, attrs, defStyleAttr);
  30. MainApp.getAppComponent().inject(this);
  31. }
  32. public ThemeableSwitchPreference(Context context, AttributeSet attrs) {
  33. super(context, attrs);
  34. MainApp.getAppComponent().inject(this);
  35. }
  36. @Override
  37. protected void onBindView(View view) {
  38. super.onBindView(view);
  39. if (view instanceof ViewGroup) {
  40. findSwitch((ViewGroup) view);
  41. }
  42. }
  43. private void findSwitch(ViewGroup viewGroup) {
  44. for (int i = 0; i < viewGroup.getChildCount(); i++) {
  45. View child = viewGroup.getChildAt(i);
  46. if (child instanceof Switch) {
  47. Switch switchView = (Switch) child;
  48. viewThemeUtils.platform.colorSwitch(switchView);
  49. break;
  50. } else if (child instanceof ViewGroup) {
  51. findSwitch((ViewGroup) child);
  52. }
  53. }
  54. }
  55. }