package com.jdroid.android.debug; import android.os.Bundle; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.TextView; import com.jdroid.android.R; import com.jdroid.android.application.AbstractApplication; import com.jdroid.android.application.AppModule; import com.jdroid.android.recycler.AbstractRecyclerFragment; import com.jdroid.android.recycler.RecyclerViewAdapter; import com.jdroid.android.recycler.RecyclerViewType; import com.jdroid.java.collections.Lists; import java.util.List; public class DebugSettingsFragment extends AbstractRecyclerFragment { @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); DebugContext debugContext = AbstractApplication.get().getDebugContext(); List<PreferencesAppender> appenders = Lists.newArrayList(); addAppender(appenders, debugContext.createServersDebugPrefsAppender()); addAppender(appenders, debugContext.createHttpMocksDebugPrefsAppender()); addAppender(appenders, debugContext.createNavDrawerDebugPrefsAppender()); addAppender(appenders, debugContext.createDatabaseDebugPrefsAppender()); addAppender(appenders, debugContext.createLogsDebugPrefsAppender()); addAppender(appenders, debugContext.createImageLoaderDebugPrefsAppender()); addAppender(appenders, debugContext.createHttpCacheDebugPrefsAppender()); addAppender(appenders, debugContext.createExceptionHandlingDebugPrefsAppender()); addAppender(appenders, debugContext.createInfoDebugPrefsAppender()); addAppender(appenders, debugContext.createRateAppDebugPrefsAppender()); addAppender(appenders, debugContext.createUsageStatsDebugPrefsAppender()); addAppender(appenders, debugContext.createUriMapperPrefsAppender()); addAppender(appenders, debugContext.createNotificationsDebugPrefsAppender()); for (AppModule each : AbstractApplication.get().getAppModules()) { for (PreferencesAppender preferencesAppender : each.getPreferencesAppenders()) { addAppender(appenders, preferencesAppender); } } appenders.addAll(debugContext.getCustomPreferencesAppenders()); setAdapter(new RecyclerViewAdapter(new PreferencesAppenderRecyclerViewType(), Lists.newArrayList(appenders))); } private void addAppender(List<PreferencesAppender> appenders, PreferencesAppender preferencesAppender) { if (preferencesAppender != null && preferencesAppender.isEnabled()) { appenders.add(preferencesAppender); } } public class PreferencesAppenderRecyclerViewType extends RecyclerViewType<PreferencesAppender, PreferenceAppenderHolder> { @Override protected Class getItemClass() { return PreferencesAppender.class; } @Override protected Integer getLayoutResourceId() { return R.layout.jdroid_default_item; } @Override public RecyclerView.ViewHolder createViewHolderFromView(View view) { PreferenceAppenderHolder holder = new PreferenceAppenderHolder(view); holder.name = findView(view, R.id.name); return holder; } @Override public void fillHolderFromItem(PreferencesAppender item, PreferenceAppenderHolder holder) { holder.name.setText(item.getNameResId()); } @Override public void onItemSelected(PreferencesAppender item, View view) { PreferenceAppenderActivity.startActivity(getActivity(), item); } @Override public AbstractRecyclerFragment getAbstractRecyclerFragment() { return DebugSettingsFragment.this; } } public static class PreferenceAppenderHolder extends RecyclerView.ViewHolder { protected TextView name; public PreferenceAppenderHolder(View itemView) { super(itemView); } } }