refactor: use SettingsCategory to move between pages

This commit is contained in:
FineFindus 2023-04-23 12:24:06 +02:00
parent 78a0c60600
commit 6343da1410
No known key found for this signature in database
GPG Key ID: 64873EE210FF8E6B
2 changed files with 19 additions and 36 deletions

View File

@ -2,6 +2,7 @@ package org.joinmastodon.android.fragments.settings;
import android.animation.ObjectAnimator; import android.animation.ObjectAnimator;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Fragment;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Rect; import android.graphics.Rect;
@ -50,6 +51,7 @@ import org.joinmastodon.android.updater.GithubSelfUpdater;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.function.Consumer; import java.util.function.Consumer;
import me.grishka.appkit.Nav;
import me.grishka.appkit.utils.BindableViewHolder; import me.grishka.appkit.utils.BindableViewHolder;
import me.grishka.appkit.utils.V; import me.grishka.appkit.utils.V;
import me.grishka.appkit.views.UsableRecyclerView; import me.grishka.appkit.views.UsableRecyclerView;
@ -274,42 +276,21 @@ public abstract class SettingsBaseFragment extends MastodonToolbarFragment imple
protected class SettingsCategoryItem extends Item{ protected class SettingsCategoryItem extends Item{
private String text; private String text;
private String secondaryText;
private Runnable onClick;
private boolean loading;
private int icon; private int icon;
public SettingsCategoryItem(@StringRes int text, Runnable onClick) { private Class<? extends Fragment> fragmentClass;
this(text, null, onClick, false, 0);
}
public SettingsCategoryItem(@StringRes int text, Runnable onClick, @DrawableRes int icon) { public SettingsCategoryItem(@StringRes int text, Class<? extends Fragment> fragmentClass, @DrawableRes int icon) {
this(text, null, onClick, false, icon); this.text = getString(text);
} this.fragmentClass=fragmentClass;
public SettingsCategoryItem(@StringRes int text, String secondaryText, Runnable onClick, @DrawableRes int icon) {
this(text, secondaryText, onClick, false, icon);
}
public SettingsCategoryItem(@StringRes int text, String secondaryText, Runnable onClick, boolean loading, @DrawableRes int icon){
this.text=getString(text);
this.onClick=onClick;
this.loading=loading;
this.icon=icon;
this.secondaryText = secondaryText;
}
public SettingsCategoryItem(String text, Runnable onClick){
this.text=text;
this.onClick=onClick;
}
public SettingsCategoryItem(String text, Runnable onClick, @DrawableRes int icon){
this.text=text;
this.onClick=onClick;
this.icon=icon; this.icon=icon;
} }
public SettingsCategoryItem(@StringRes int text, Class<? extends Fragment> fragmentClass) {
this(text, fragmentClass, 0);
}
@Override @Override
public int getViewType(){ public int getViewType(){
return Type.SETTINGS_CATEGORY.ordinal(); return Type.SETTINGS_CATEGORY.ordinal();
@ -650,7 +631,7 @@ public abstract class SettingsBaseFragment extends MastodonToolbarFragment imple
} }
} }
private class SettingsCategoryViewHolder extends BindableViewHolder<SettingsCategoryItem>{ private class SettingsCategoryViewHolder extends BindableViewHolder<SettingsCategoryItem> implements UsableRecyclerView.Clickable{
private final ImageView icon; private final ImageView icon;
private final TextView text; private final TextView text;
@ -665,7 +646,11 @@ public abstract class SettingsBaseFragment extends MastodonToolbarFragment imple
public void onBind(SettingsCategoryItem item){ public void onBind(SettingsCategoryItem item){
text.setText(item.text); text.setText(item.text);
icon.setImageResource(item.icon); icon.setImageResource(item.icon);
item.onClick.run(); }
@Override
public void onClick() {
Nav.go(getActivity(), item.fragmentClass, getArguments());
} }
} }

View File

@ -7,8 +7,6 @@ import java.util.ArrayList;
public class SettingsMainFragment extends SettingsBaseFragment{ public class SettingsMainFragment extends SettingsBaseFragment{
@Override @Override
public void addItems(ArrayList<SettingsBaseFragment.Item> items) { public void addItems(ArrayList<SettingsBaseFragment.Item> items) {
items.add(new SettingsBaseFragment.SettingsCategoryItem(R.string.settings_theme, () -> { items.add(new SettingsCategoryItem(R.string.settings_theme, SettingsAppearanceFragment.class, R.drawable.ic_fluent_color_24_regular));
System.out.println("YAY");
}, R.drawable.ic_fluent_color_24_regular));
} }
} }