package com.battlelancer.seriesguide.widgets;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.annotation.IntDef;
import android.support.v7.widget.CardView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import butterknife.ButterKnife;
import com.battlelancer.seriesguide.R;
import com.battlelancer.seriesguide.settings.DisplaySettings;
import com.battlelancer.seriesguide.util.TaskManager;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import org.greenrobot.eventbus.EventBus;
public class FirstRunView extends CardView {
private static final String PREF_KEY_FIRSTRUN = "accepted_eula";
@IntDef({ ButtonType.DISMISS,
ButtonType.ADD_SHOW,
ButtonType.SIGN_IN,
ButtonType.RESTORE_BACKUP })
@Retention(RetentionPolicy.SOURCE)
public @interface ButtonType {
int DISMISS = 0;
int ADD_SHOW = 1;
int SIGN_IN = 2;
int RESTORE_BACKUP = 3;
}
public static class ButtonEvent {
public final FirstRunView firstRunView;
@ButtonType public final int type;
public ButtonEvent(FirstRunView firstRunView, @ButtonType int type) {
this.firstRunView = firstRunView;
this.type = type;
}
}
public static boolean hasSeenFirstRunFragment(final Context context) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
return sp.getBoolean(PREF_KEY_FIRSTRUN, false);
}
public FirstRunView(Context context) {
this(context, null);
}
public FirstRunView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.view_first_run, this);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
RelativeLayout noSpoilerView = ButterKnife.findById(this, R.id.containerFirstRunNoSpoilers);
final CheckBox noSpoilerCheckBox = ButterKnife.findById(noSpoilerView,
R.id.checkboxFirstRunNoSpoilers);
Button buttonAddShow = ButterKnife.findById(this, R.id.buttonFirstRunAddShow);
Button buttonSignIn = ButterKnife.findById(this, R.id.buttonFirstRunSignIn);
Button buttonRestoreBackup = ButterKnife.findById(this, R.id.buttonFirstRunRestore);
ImageButton buttonDismiss = ButterKnife.findById(this, R.id.buttonFirstRunDismiss);
noSpoilerView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// new state is inversion of current state
boolean noSpoilers = !noSpoilerCheckBox.isChecked();
// save
PreferenceManager.getDefaultSharedPreferences(v.getContext()).edit()
.putBoolean(DisplaySettings.KEY_PREVENT_SPOILERS, noSpoilers)
.apply();
// update next episode strings right away
TaskManager.getInstance(v.getContext()).tryNextEpisodeUpdateTask();
// show
noSpoilerCheckBox.setChecked(noSpoilers);
}
});
noSpoilerCheckBox.setChecked(DisplaySettings.preventSpoilers(getContext()));
buttonAddShow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault().post(new ButtonEvent(FirstRunView.this, ButtonType.ADD_SHOW));
}
});
buttonSignIn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault()
.post(new ButtonEvent(FirstRunView.this, ButtonType.SIGN_IN));
}
});
buttonRestoreBackup.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault()
.post(new ButtonEvent(FirstRunView.this, ButtonType.RESTORE_BACKUP));
}
});
buttonDismiss.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setFirstRunDismissed();
EventBus.getDefault().post(new ButtonEvent(FirstRunView.this, ButtonType.DISMISS));
}
});
}
private void setFirstRunDismissed() {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getContext());
prefs.edit().putBoolean(FirstRunView.PREF_KEY_FIRSTRUN, true).apply();
}
}