Prepare to add icon pack support, reorganise code
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<application
|
||||
android:name="ch.deletescape.lawnchair.LawnchairApp">
|
||||
<activity android:name="ch.deletescape.lawnchair.settings.SettingsActivity"
|
||||
<activity android:name="ch.deletescape.lawnchair.settings.activities.SettingsActivity"
|
||||
android:autoRemoveFromRecents="true" android:label="@string/settings_button_text"
|
||||
android:theme="@style/Theme.Lawnchair">
|
||||
<intent-filter android:priority="1">
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp">
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/radio_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon"
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="36dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/radio_button"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:srcCompat="@drawable/all_apps_edu_circle" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:textAppearance="?attr/textAppearanceBody1"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/icon"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="Icon Pack" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
@@ -15,4 +15,6 @@
|
||||
</intent>
|
||||
</com.android.launcher3.settings.NotificationDotsPreference>
|
||||
|
||||
<Preference android:title="Icon Pack" android:fragment="ch.deletescape.lawnchair.settings.fragments.IconPackSettingsFragment" />
|
||||
|
||||
</androidx.preference.PreferenceScreen>
|
||||
@@ -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" />
|
||||
|
||||
<Preference
|
||||
android:title="Home Screen"
|
||||
android:summary="Rotation, Grid Options"
|
||||
android:icon="@drawable/ic_home_screen"
|
||||
android:fragment="ch.deletescape.lawnchair.settings.HomeScreenSettingsFragment" />
|
||||
android:fragment="ch.deletescape.lawnchair.settings.fragments.HomeScreenSettingsFragment" />
|
||||
|
||||
</androidx.preference.PreferenceScreen>
|
||||
+21
-9
@@ -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()
|
||||
+12
-8
@@ -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)
|
||||
}
|
||||
+2
-2
@@ -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"
|
||||
}
|
||||
+2
-2
@@ -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"
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -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"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package ch.deletescape.lawnchair.settings.interfaces
|
||||
|
||||
interface TitledFragment {
|
||||
val title: String
|
||||
}
|
||||
Reference in New Issue
Block a user