package com.github.paolorotolo.appintro;
import android.os.Bundle;
import android.support.annotation.ColorInt;
import android.support.annotation.LayoutRes;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.github.paolorotolo.appintro.util.CustomFontCache;
import com.github.paolorotolo.appintro.util.LogHelper;
public abstract class AppIntroBaseFragment extends Fragment implements ISlideSelectionListener,
ISlideBackgroundColorHolder {
protected static final String ARG_TITLE = "title";
protected static final String ARG_TITLE_TYPEFACE = "title_typeface";
protected static final String ARG_DESC = "desc";
protected static final String ARG_DESC_TYPEFACE = "desc_typeface";
protected static final String ARG_DRAWABLE = "drawable";
protected static final String ARG_BG_COLOR = "bg_color";
protected static final String ARG_TITLE_COLOR = "title_color";
protected static final String ARG_DESC_COLOR = "desc_color";
private static final String TAG = LogHelper.makeLogTag(AppIntroBaseFragment.class);
private int drawable, bgColor, titleColor, descColor, layoutId;
private String title, titleTypeface, description, descTypeface;
private LinearLayout mainLayout;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
if (getArguments() != null && getArguments().size() != 0) {
drawable = getArguments().getInt(ARG_DRAWABLE);
title = getArguments().getString(ARG_TITLE);
titleTypeface = getArguments().containsKey(ARG_TITLE_TYPEFACE) ?
getArguments().getString(ARG_TITLE_TYPEFACE) : "";
description = getArguments().getString(ARG_DESC);
descTypeface = getArguments().containsKey(ARG_DESC_TYPEFACE) ?
getArguments().getString(ARG_DESC_TYPEFACE) : "";
bgColor = getArguments().getInt(ARG_BG_COLOR);
titleColor = getArguments().containsKey(ARG_TITLE_COLOR) ?
getArguments().getInt(ARG_TITLE_COLOR) : 0;
descColor = getArguments().containsKey(ARG_DESC_COLOR) ?
getArguments().getInt(ARG_DESC_COLOR) : 0;
}
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
drawable = savedInstanceState.getInt(ARG_DRAWABLE);
title = savedInstanceState.getString(ARG_TITLE);
titleTypeface = savedInstanceState.getString(ARG_TITLE_TYPEFACE);
description = savedInstanceState.getString(ARG_DESC);
descTypeface = savedInstanceState.getString(ARG_DESC_TYPEFACE);
bgColor = savedInstanceState.getInt(ARG_BG_COLOR);
titleColor = savedInstanceState.getInt(ARG_TITLE_COLOR);
descColor = savedInstanceState.getInt(ARG_DESC_COLOR);
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View v = inflater.inflate(getLayoutId(), container, false);
TextView t = (TextView) v.findViewById(R.id.title);
TextView d = (TextView) v.findViewById(R.id.description);
ImageView i = (ImageView) v.findViewById(R.id.image);
mainLayout = (LinearLayout) v.findViewById(R.id.main);
t.setText(title);
if (titleColor != 0) {
t.setTextColor(titleColor);
}
if (titleTypeface != null) {
if (CustomFontCache.get(titleTypeface, getContext()) != null) {
t.setTypeface(CustomFontCache.get(titleTypeface, getContext()));
}
}
d.setText(description);
if (descColor != 0) {
d.setTextColor(descColor);
}
if (descTypeface != null) {
if (CustomFontCache.get(descTypeface, getContext()) != null) {
d.setTypeface(CustomFontCache.get(descTypeface, getContext()));
}
}
i.setImageResource(drawable);
mainLayout.setBackgroundColor(bgColor);
return v;
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putInt(ARG_DRAWABLE, drawable);
outState.putString(ARG_TITLE, title);
outState.putString(ARG_DESC, description);
outState.putInt(ARG_BG_COLOR, bgColor);
outState.putInt(ARG_TITLE_COLOR, titleColor);
outState.putInt(ARG_DESC_COLOR, descColor);
super.onSaveInstanceState(outState);
}
@Override
public void onSlideDeselected() {
LogHelper.d(TAG, String.format("Slide %s has been deselected.", title));
}
@Override
public void onSlideSelected() {
LogHelper.d(TAG, String.format("Slide %s has been selected.", title));
}
@Override
public int getDefaultBackgroundColor() {
return bgColor;
}
@Override
public void setBackgroundColor(@ColorInt int backgroundColor) {
mainLayout.setBackgroundColor(backgroundColor);
}
@LayoutRes
protected abstract int getLayoutId();
}