package com.sls.superlight.slates.viewtwo;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.LayoutRes;
import android.support.design.widget.Snackbar;
import android.util.AttributeSet;
import android.widget.Button;
import android.widget.EditText;
import com.sls.superlight.MainActivity;
import com.sls.superlight.R;
import com.jakewharton.rxbinding.view.RxView;
import com.sls.superlight.superlightstack.AnimationHandler;
import com.sls.superlight.superlightstack.BaseView;
import butterknife.BindView;
import butterknife.ButterKnife;
import rx.Observable;
import rx.Subscription;
import rx.subscriptions.CompositeSubscription;
public class ViewTwo extends BaseView {
private final CompositeSubscription compositeSubscription = new CompositeSubscription();
private Context context;
@BindView(R.id.go_to_button)
Button goToButton;
@BindView(R.id.show_message_button)
Button showMessageButton;
@BindView(R.id.arg_text)
EditText arg;
public ViewTwo(Context context) {
super(context);
this.context = context;
}
public ViewTwo(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
}
public ViewTwo(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context = context;
}
@TargetApi(21)
public ViewTwo(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
this.context = context;
}
private Observable<Void> goToButton() {
return RxView.clicks(goToButton);
}
private Observable<Void> showMessageButton() {
return RxView.clicks(showMessageButton);
}
private Subscription subscribeGoToButton() {
return goToButton()
.subscribe(a -> switchView(R.layout.view_three, R.id.ViewThree));
}
private Subscription subscribeShowMessageButton() {
return showMessageButton()
.subscribe(a -> showMessage(super.getBundle().getString("VIEW_ONE")));
}
private void switchView(@LayoutRes int layoutResID, int id) {
((MainActivity)context).transitioner.goTo(layoutResID, id, getData(), AnimationHandler.TransitionTypes.CROSSFADE);
}
private void showMessage(String message) {
Snackbar.make(findViewById(R.id.ViewTwo), message, Snackbar.LENGTH_SHORT).show();
}
@Override
protected void onFinishInflate() {
ButterKnife.bind(this);
compositeSubscription.add(subscribeGoToButton());
compositeSubscription.add(subscribeShowMessageButton());
this.setId(R.id.ViewTwo);
super.onFinishInflate();
}
private Bundle getData() {
Bundle bundle = new Bundle();
bundle.putString("VIEW_TWO", arg.getText().toString());
return bundle;
}
@Override
protected void onAttachedToWindow() {
if(super.getBundle() != null) {
arg.setText(super.getBundle().getString("VIEW_TWO"));
}
super.onAttachedToWindow();
}
@Override
protected void onDetachedFromWindow() {
compositeSubscription.clear();
super.onDetachedFromWindow();
}
}