package com.thomasdh.roosterpgplus; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceActivity; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.support.v7.widget.AppCompatCheckBox; import android.support.v7.widget.AppCompatCheckedTextView; import android.support.v7.widget.AppCompatEditText; import android.support.v7.widget.AppCompatRadioButton; import android.support.v7.widget.AppCompatSpinner; import android.support.v7.widget.Toolbar; import android.util.AttributeSet; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import com.google.android.gms.analytics.HitBuilders; import com.google.android.gms.analytics.Tracker; import com.thomasdh.roosterpgplus.Data.Account; import com.thomasdh.roosterpgplus.Settings.AchtergrondFragment; import com.thomasdh.roosterpgplus.Settings.Constants; import com.thomasdh.roosterpgplus.Settings.InfoFragment; import com.thomasdh.roosterpgplus.Settings.OverigFragment; import com.thomasdh.roosterpgplus.Settings.UserFragment; import java.util.List; public class PreferencesActivity extends PreferenceActivity { private Toolbar toolbar; @Override protected boolean isValidFragment(String fragmentName) { return UserFragment.class.getName().equals(fragmentName) || InfoFragment.class.getName().equals(fragmentName) || OverigFragment.class.getName().equals(fragmentName) || AchtergrondFragment.class.getName().equals(fragmentName); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Account.initialize(this); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { LinearLayout root = (LinearLayout) findViewById(android.R.id.list).getParent().getParent().getParent(); toolbar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.activity_preferences_toolbar, root, false); ((TextView) toolbar.findViewById(R.id.toolbar_title)).setText(getTitle()); root.addView(toolbar, 0); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.colorPrimaryDark)); } } else { ViewGroup root = (ViewGroup) findViewById(android.R.id.content); ListView content = (ListView) root.getChildAt(0); root.removeAllViews(); toolbar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.activity_preferences_toolbar, root, false); int height; TypedValue typedValue = new TypedValue(); if(getTheme().resolveAttribute(R.attr.actionBarSize, typedValue, true)) { height = TypedValue.complexToDimensionPixelSize(typedValue.data, getResources().getDisplayMetrics()); } else { height = toolbar.getHeight(); } content.setPadding(0, height, 0, 0); ((TextView) toolbar.findViewById(R.id.toolbar_title)).setText(getTitle()); root.addView(content); root.addView(toolbar); } toolbar.setNavigationOnClickListener(v -> finish()); } @Override public boolean onOptionsItemSelected(MenuItem item) { onBackPressed(); return true; } @Nullable @Override public View onCreateView(String name, Context context, AttributeSet attrs) { View result = super.onCreateView(name, context, attrs); if(result != null) return result; if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { switch(name) { case "EditText": return new AppCompatEditText(this, attrs); case "Spinner": return new AppCompatSpinner(this, attrs); case "CheckBox": return new AppCompatCheckBox(this, attrs); case "RadioButton": return new AppCompatRadioButton(this, attrs); case "CheckedTextView": return new AppCompatCheckedTextView(this, attrs); } } return null; } @Override public boolean hasHeaders() { return true; } @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public void onBuildHeaders(List<Header> target) { loadHeadersFromResource(R.xml.preference_headers, target); Tracker tracker = MainApplication.getTracker(MainApplication.TrackerName.APP_TRACKER, getApplicationContext()); tracker.setScreenName(Constants.ANALYTICS_FRAGMENT_SETTINGS_MAIN); tracker.send(new HitBuilders.ScreenViewBuilder().build()); } }