package com.algobase.widgets;

import android.os.Parcelable;
import android.os.Bundle;
import android.content.Context;
import android.widget.Toast;
import android.util.AttributeSet;
import android.view.MotionEvent;

import androidx.viewpager.widget.ViewPager;


public class MyViewPager extends ViewPager {

  public static class OnSizeChangeListener {
    public void onSizeChanged(int w, int h, int w_old, int h_old) {}
  }

  OnSizeChangeListener sc_listener;


  Context context;
  boolean always_enabled = false;
  boolean enabled = true;

  public int scroll_offset; // pixels
  public int scroll_page; 

  @Override
  public Parcelable onSaveInstanceState()
  { super.onSaveInstanceState();
    Bundle b = new Bundle();
    return b;
   }

  @Override
  protected void onSizeChanged(int w, int h, int w_old, int h_old)
  {
   if (sc_listener != null) sc_listener.onSizeChanged(w,h,w_old,h_old);
/*
   String s = String.format("h = %d  h_old = %d",h,h_old);
   Toast.makeText(context,s,Toast.LENGTH_SHORT).show();
*/
  }

  @Override
  protected void onPageScrolled(int pos, float offset, int pixels)
  {
/*
   String s = String.format("pos = %d  off = %.2f  pix = %d",pos,offset,pixels);
   Toast.makeText(context,s,Toast.LENGTH_SHORT).show();
*/
    scroll_page = pos;
    scroll_offset = pixels;

    super.onPageScrolled(pos,offset,pixels);
   }

  public void setOnSizeChangeListener(OnSizeChangeListener listener) { 
    sc_listener = listener; 
  }


  public boolean isEnabled() { return enabled; }

  public void setEnabled(boolean b) { if (!always_enabled) enabled = b; }

  public void setAlwaysEnabled(boolean b) 
  { always_enabled = b; 
    if (b) enabled = true;
   }

  public MyViewPager(Context c) { super(c); context = c; }
  public MyViewPager(Context c, AttributeSet a) { super(c,a); context = c; }

  @Override
  public boolean onTouchEvent(MotionEvent event) 
  { if (enabled)
      return super.onTouchEvent(event);
    else
      return false;
   }

  @Override
  public boolean onInterceptTouchEvent(MotionEvent event) 
  { if (enabled)
      return super.onInterceptTouchEvent(event);
    else
      return false;
   }
}

