package com.alorma.github.ui.fragment.base; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.graphics.drawable.ColorDrawable; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.support.annotation.StyleRes; import android.support.v4.app.Fragment; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import com.afollestad.materialdialogs.MaterialDialog; import com.alorma.github.GitskariosApplication; import com.alorma.github.R; import com.alorma.github.account.AccountNameProvider; import com.alorma.github.injector.component.ApplicationComponent; import com.alorma.github.log.LogWrapper; import com.alorma.github.track.Tracker; import com.alorma.github.utils.AttributesUtils; import com.alorma.github.utils.KeyboardUtils; import com.crashlytics.android.Crashlytics; import io.fabric.sdk.android.Fabric; import javax.inject.Inject; public class BaseFragment extends Fragment { protected MaterialDialog dialog; @Inject protected Tracker tracker; @Inject protected LogWrapper logWrapper; @Inject protected AccountNameProvider nameProvider; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); injectComponents(); tracker.trackFragment(this); logWrapper.i("LogWrapper", this.getClass().getName()); } private void injectComponents() { GitskariosApplication application = (GitskariosApplication) getContext().getApplicationContext(); ApplicationComponent applicationComponent = application.getApplicationComponent(); applicationComponent.inject(this); injectComponents(applicationComponent); } protected void injectComponents(ApplicationComponent applicationComponent) { } @Override public void onResume() { super.onResume(); if (showTitle()) { getActivity().setTitle(getTitle()); } colorize(); } protected boolean showTitle() { return true; } public int getTitle() { return 0; } private void colorize() { if (getActivity() != null) { AppCompatActivity activity = (AppCompatActivity) getActivity(); ActionBar actionBar = activity.getSupportActionBar(); if (actionBar != null) { int color = AttributesUtils.getPrimaryColor(getContext()); ColorDrawable colorDrawable = new ColorDrawable(color); actionBar.setBackgroundDrawable(colorDrawable); View toolbarBg = getActivity().findViewById(R.id.toolbarBg); if (toolbarBg != null) { toolbarBg.setBackgroundColor(color); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { int colorDark = AttributesUtils.getPrimaryDarkColor(getContext()); activity.getWindow().setStatusBarColor(colorDark); } } } } @Override public Context getContext() { return new ContextThemeWrapper(getActivity(), getTheme()); } @Override public void onPause() { super.onPause(); Activity activity = getActivity(); if (dialog != null && dialog.isShowing() && getActivity() != null && activity.getWindow() != null) { KeyboardUtils.lowerKeyboard(activity); } } public LayoutInflater getThemedLayoutInflater(LayoutInflater inflater) { return inflater.cloneInContext(getContext()); } @StyleRes private int getTheme() { return isDarkTheme() ? getDarkTheme() : getLightTheme(); } @StyleRes protected int getDarkTheme() { return R.style.AppTheme_Dark; } @StyleRes protected int getLightTheme() { return R.style.AppTheme; } protected boolean isDarkTheme() { try { SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); if (defaultSharedPreferences != null) { String pref_theme = defaultSharedPreferences.getString("pref_theme", getString(R.string.theme_light)); return "theme_dark".equalsIgnoreCase(pref_theme); } return false; } catch (Exception e) { if (Fabric.isInitialized()) { Crashlytics.logException(e); } return false; } } }