diff --git a/lawnchair/AndroidManifest.xml b/lawnchair/AndroidManifest.xml index 6d8dcd8912..fe359e8fea 100644 --- a/lawnchair/AndroidManifest.xml +++ b/lawnchair/AndroidManifest.xml @@ -20,7 +20,7 @@ - diff --git a/lawnchair/res/layout/icon_pack_list_item.xml b/lawnchair/res/layout/icon_pack_list_item.xml new file mode 100644 index 0000000000..bcfb7b3dd5 --- /dev/null +++ b/lawnchair/res/layout/icon_pack_list_item.xml @@ -0,0 +1,36 @@ + + + + + + + + + \ No newline at end of file diff --git a/lawnchair/res/layout/icon_pack_settings_fragment.xml b/lawnchair/res/layout/icon_pack_settings_fragment.xml new file mode 100644 index 0000000000..6ae5e60047 --- /dev/null +++ b/lawnchair/res/layout/icon_pack_settings_fragment.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/lawnchair/res/xml/general_settings.xml b/lawnchair/res/xml/general_settings.xml index 9819459a04..009b188962 100644 --- a/lawnchair/res/xml/general_settings.xml +++ b/lawnchair/res/xml/general_settings.xml @@ -15,4 +15,6 @@ + + \ No newline at end of file diff --git a/lawnchair/res/xml/settings.xml b/lawnchair/res/xml/settings.xml index a24fce9bd1..5c766658dc 100644 --- a/lawnchair/res/xml/settings.xml +++ b/lawnchair/res/xml/settings.xml @@ -6,12 +6,12 @@ android:title="General" android:summary="Notification Dots" android:icon="@drawable/ic_general" - android:fragment="ch.deletescape.lawnchair.settings.GeneralSettingsFragment" /> + android:fragment="ch.deletescape.lawnchair.settings.fragments.GeneralSettingsFragment" /> + android:fragment="ch.deletescape.lawnchair.settings.fragments.HomeScreenSettingsFragment" /> \ No newline at end of file diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/SettingsActivity.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/activities/SettingsActivity.kt similarity index 66% rename from lawnchair/src/ch/deletescape/lawnchair/settings/SettingsActivity.kt rename to lawnchair/src/ch/deletescape/lawnchair/settings/activities/SettingsActivity.kt index dd74bb3b82..a4317bc9f4 100644 --- a/lawnchair/src/ch/deletescape/lawnchair/settings/SettingsActivity.kt +++ b/lawnchair/src/ch/deletescape/lawnchair/settings/activities/SettingsActivity.kt @@ -1,4 +1,4 @@ -package ch.deletescape.lawnchair.settings +package ch.deletescape.lawnchair.settings.activities import android.os.Bundle import android.view.View @@ -8,19 +8,27 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat +import ch.deletescape.lawnchair.settings.fragments.SettingsFragment +import ch.deletescape.lawnchair.settings.interfaces.TitledFragment import com.android.launcher3.R import com.google.android.material.appbar.MaterialToolbar -class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { +class SettingsActivity : AppCompatActivity(), + PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { private lateinit var topAppBar: MaterialToolbar private val context = this - private val fragmentListener = object: FragmentManager.FragmentLifecycleCallbacks() { - override fun onFragmentViewCreated(fm: FragmentManager, fragment: Fragment, v: View, savedInstanceState: Bundle?) { - if (fragment !is SettingsFragment && topAppBar.navigationIcon == null) { - topAppBar.navigationIcon = ContextCompat.getDrawable(context, R.drawable.ic_back) - } else { + private val fragmentListener = object : FragmentManager.FragmentLifecycleCallbacks() { + override fun onFragmentViewCreated( + fm: FragmentManager, + fragment: Fragment, + v: View, + savedInstanceState: Bundle? + ) { + if (fragment is SettingsFragment) { topAppBar.navigationIcon = null + } else if (topAppBar.navigationIcon == null) { + topAppBar.navigationIcon = ContextCompat.getDrawable(context, R.drawable.ic_back) } topAppBar.title = (fragment as? TitledFragment)?.title } @@ -40,11 +48,15 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere .commit() } - override fun onPreferenceStartFragment(caller: PreferenceFragmentCompat, pref: Preference): Boolean { + override fun onPreferenceStartFragment( + caller: PreferenceFragmentCompat, + pref: Preference + ): Boolean { val args = pref.extras val fragment = supportFragmentManager.fragmentFactory.instantiate( classLoader, - pref.fragment) + pref.fragment + ) fragment.arguments = args fragment.setTargetFragment(caller, 0) supportFragmentManager.beginTransaction() diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/BasePreferenceFragment.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/fragments/BasePreferenceFragment.kt similarity index 67% rename from lawnchair/src/ch/deletescape/lawnchair/settings/BasePreferenceFragment.kt rename to lawnchair/src/ch/deletescape/lawnchair/settings/fragments/BasePreferenceFragment.kt index fcd8c1d154..0f2920cf76 100644 --- a/lawnchair/src/ch/deletescape/lawnchair/settings/BasePreferenceFragment.kt +++ b/lawnchair/src/ch/deletescape/lawnchair/settings/fragments/BasePreferenceFragment.kt @@ -1,24 +1,28 @@ -package ch.deletescape.lawnchair.settings +package ch.deletescape.lawnchair.settings.fragments import android.os.Bundle import androidx.preference.PreferenceFragmentCompat +import ch.deletescape.lawnchair.settings.interfaces.TitledFragment import com.android.launcher3.LauncherFiles import com.google.android.material.transition.MaterialSharedAxis -interface TitledFragment { - val title: String -} - -abstract class BasePreferenceFragment(var preferenceResource: Int, var isTopLevelFragment: Boolean = false) : PreferenceFragmentCompat(), TitledFragment { +abstract class BasePreferenceFragment( + var preferenceResource: Int, + var hasChild: Boolean, + var hasParent: Boolean +) : PreferenceFragmentCompat(), + TitledFragment { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(preferenceResource, rootKey) preferenceManager.sharedPreferencesName = LauncherFiles.SHARED_PREFERENCES_KEY - if (isTopLevelFragment) { + if (hasChild) { exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) - } else { + } + + if (hasParent) { enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) } diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/GeneralSettingsFragment.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/fragments/GeneralSettingsFragment.kt similarity index 65% rename from lawnchair/src/ch/deletescape/lawnchair/settings/GeneralSettingsFragment.kt rename to lawnchair/src/ch/deletescape/lawnchair/settings/fragments/GeneralSettingsFragment.kt index 8057b052b2..5805ff80db 100644 --- a/lawnchair/src/ch/deletescape/lawnchair/settings/GeneralSettingsFragment.kt +++ b/lawnchair/src/ch/deletescape/lawnchair/settings/fragments/GeneralSettingsFragment.kt @@ -1,8 +1,8 @@ -package ch.deletescape.lawnchair.settings +package ch.deletescape.lawnchair.settings.fragments import com.android.launcher3.R -class GeneralSettingsFragment : BasePreferenceFragment(R.xml.general_settings) { +class GeneralSettingsFragment : BasePreferenceFragment(R.xml.general_settings, true, true) { override val title: String get() = "General" } \ No newline at end of file diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/HomeScreenSettingsFragment.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/fragments/HomeScreenSettingsFragment.kt similarity index 63% rename from lawnchair/src/ch/deletescape/lawnchair/settings/HomeScreenSettingsFragment.kt rename to lawnchair/src/ch/deletescape/lawnchair/settings/fragments/HomeScreenSettingsFragment.kt index b1e7175066..b4bcde41c6 100644 --- a/lawnchair/src/ch/deletescape/lawnchair/settings/HomeScreenSettingsFragment.kt +++ b/lawnchair/src/ch/deletescape/lawnchair/settings/fragments/HomeScreenSettingsFragment.kt @@ -1,8 +1,8 @@ -package ch.deletescape.lawnchair.settings +package ch.deletescape.lawnchair.settings.fragments import com.android.launcher3.R -class HomeScreenSettingsFragment : BasePreferenceFragment(R.xml.home_screen_settings) { +class HomeScreenSettingsFragment : BasePreferenceFragment(R.xml.home_screen_settings, false, true) { override val title: String get() = "Home Screen" } \ No newline at end of file diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/fragments/IconPackSettingsFragment.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/fragments/IconPackSettingsFragment.kt new file mode 100644 index 0000000000..3ef7aafc48 --- /dev/null +++ b/lawnchair/src/ch/deletescape/lawnchair/settings/fragments/IconPackSettingsFragment.kt @@ -0,0 +1,18 @@ +package ch.deletescape.lawnchair.settings.fragments + +import android.os.Bundle +import androidx.fragment.app.Fragment +import ch.deletescape.lawnchair.settings.interfaces.TitledFragment +import com.android.launcher3.R +import com.google.android.material.transition.MaterialSharedAxis + +class IconPackSettingsFragment : Fragment(R.layout.icon_pack_settings_fragment), TitledFragment { + override val title: String + get() = "Icon Pack" + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) + returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) + } +} \ No newline at end of file diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/SettingsFragment.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/fragments/SettingsFragment.kt similarity index 77% rename from lawnchair/src/ch/deletescape/lawnchair/settings/SettingsFragment.kt rename to lawnchair/src/ch/deletescape/lawnchair/settings/fragments/SettingsFragment.kt index 878dc0e790..79e91d2d3b 100644 --- a/lawnchair/src/ch/deletescape/lawnchair/settings/SettingsFragment.kt +++ b/lawnchair/src/ch/deletescape/lawnchair/settings/fragments/SettingsFragment.kt @@ -1,10 +1,10 @@ -package ch.deletescape.lawnchair.settings +package ch.deletescape.lawnchair.settings.fragments import com.android.launcher3.R // TODO: Migrate missing code from ch.deletescape.settings.ui.SettingsActivity. -class SettingsFragment : BasePreferenceFragment(R.xml.settings, true) { +class SettingsFragment : BasePreferenceFragment(R.xml.settings, true, false) { override val title: String get() = "Settings" } \ No newline at end of file diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/interfaces/TitledFragment.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/interfaces/TitledFragment.kt new file mode 100644 index 0000000000..fbfa942334 --- /dev/null +++ b/lawnchair/src/ch/deletescape/lawnchair/settings/interfaces/TitledFragment.kt @@ -0,0 +1,5 @@ +package ch.deletescape.lawnchair.settings.interfaces + +interface TitledFragment { + val title: String +} \ No newline at end of file