package com.linroid.sky31radio.view;

import android.content.Context;
import android.support.v7.widget.Toolbar;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.TextView;

import com.linroid.sky31radio.R;

import timber.log.Timber;

/**
 * Created by linroid on 1/21/15.
 */
public class TitleSwitcher extends FrameLayout
        implements Animation.AnimationListener {

    TextView currentText;
    TextView switcherText;

    Animation forwardInAnim;
    Animation forwardOutAnim;
    Animation backInAnim;
    Animation backOutAnim;

    public TitleSwitcher(Context context) {
        super(context, null, R.style.RtlOverlay_Widget_AppCompat_ActionBar_TitleItem);
        this.setLayoutParams(new Toolbar.LayoutParams(-2, -2));
        this.setBackgroundColor(0);
        inflate(context, R.layout.merge_title_switcher, this);
        currentText = (TextView) getChildAt(0);
        switcherText = (TextView) getChildAt(1);

        forwardInAnim   = AnimationUtils.loadAnimation(context, R.anim.title_switcher_forward_in);
        forwardOutAnim  = AnimationUtils.loadAnimation(context, R.anim.title_switcher_forward_out);
        backInAnim      = AnimationUtils.loadAnimation(context, R.anim.title_switcher_back_in);
        backOutAnim     = AnimationUtils.loadAnimation(context, R.anim.title_switcher_back_out);
        forwardInAnim.setAnimationListener(this);
        backInAnim.setAnimationListener(this);
    }

    public void setToolbar(Toolbar toolbar) {
        ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(300, ViewGroup.LayoutParams.WRAP_CONTENT);
        toolbar.addView(this, layoutParams);
        currentText.setText(toolbar.getTitle());
    }

    public void setCurrentTitle(CharSequence currentTitle) {
        currentText.setText(currentTitle);

    }

    public void switchForward(CharSequence title){
        Timber.e(title.toString());
        switcherText.setText(title);
        switcherText.startAnimation(forwardInAnim);
        currentText.startAnimation(forwardOutAnim);
    }
    public void switchBack(CharSequence title){
        switcherText.setText(title);
        switcherText.startAnimation(backInAnim);
        currentText.startAnimation(backOutAnim);
    }
    private void swap(){
        TextView tmpView    = currentText;
        currentText         = switcherText;
        switcherText        = tmpView;
    }

    @Override
    public void onAnimationStart(Animation animation) {
        switcherText.setVisibility(VISIBLE);
    }

    @Override
    public void onAnimationEnd(Animation animation) {
        currentText.setVisibility(GONE);
        this.swap();
    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }
}
