
#include "TpnlLstAnim.h"

// -----------------------
// --- le constructeur ---
// -----------------------

TpnlLstAnim::TpnlLstAnim()
{
    //
}

// ----------------------
// --- le destructeur ---
// ----------------------

TpnlLstAnim::~TpnlLstAnim()
{
    //
}

// --------------------
// --- Les méthodes ---
// --------------------

void TpnlLstAnim::addAnim(std::string str)
{
    listbox.add(str);
    //listbox.refresh();
}

void TpnlLstAnim::clear()
{
    listbox.clear();
}

void TpnlLstAnim::create(OTextureList& textureList)
{
    ORect_i src,dst;
    s_texParam texParam;
    int refX = 0, refY = 0;

    m_visible = true; //false;

    OTextureList::P_setPath("donnees/interface/");
    textureList.add("interface.png");

    // ---

    dynpanel.create(170,300, -1,400,20,-1);
    refX = dynpanel.getLeft();
    refY = dynpanel.getTop();

    // ---

    refX += 10;
    refY -= 10;

    texParam = textureList.getParam("interface.png");

    s_OListbox param;

	param.dst.set(refX,refY,152,250);
    param.src.set(220,0,152,250);
    param.texParam = texParam;
    param.labelDst.set(5, 5, 126, 18);
    param.nbLigne = 12;
    param.ecart_h_label = 2;
    param.selectorSrc.set(220, 260, 126, 18);

	listbox.create(param);

    // ---

    refY -= 260;

    src.set(100,0,100,20);
    dst.set(refX,refY, 100,20);
    btAnim.create(dst, "animation", texParam, src);

    src.set(20,0,20,20);
    dst.set(refX + 110, refY, 20,20);
    ckdLoop.create(dst, "", texParam, src);

    //position le menu > c'est le dynpanel qui donne les décalages
    _shift();
}

void TpnlLstAnim::draw()
{
    if (!m_visible) return;

    dynpanel.draw();
    listbox.draw();
    btAnim.draw();
    ckdLoop.draw();

}




int TpnlLstAnim::getAnim()
{
    return listbox.getSelected();
}

int TpnlLstAnim::getLoop()
{
    // une fois ou 100 fois
    return 1 + (ckdLoop.getChecked() * 99); // 99 par defaut
}



int TpnlLstAnim::mouseDown(int x, int y)
{
    if (!m_visible) return CLICK_NULL;

    dynpanel.mouseDown(x,y);
    listbox.mouseDown(x,y);

    if (btAnim.mouseDown())
    {
        if (ckdLoop.getChecked()) btAnim.setState(OBUTTON_ENABLED);
        return PNLLIST_ANIM;
    }
    if (ckdLoop.mouseDown())
    {
        if (!ckdLoop.getChecked()) btAnim.setState(OBUTTON_UP);
        return PNLLIST_LOOP;
    }

    return CLICK_ON;
}

void TpnlLstAnim::mouseMove(int x, int y)
{
    if (!m_visible) return;

    dynpanel.mouseMove(x,y);
    listbox.mouseMove(x,y);
    btAnim.mouseMove(x,y);
    ckdLoop.mouseMove(x,y);
}
/*
void TpnlLstAnim::mouseUp()
{
    //
}
*/
bool TpnlLstAnim::mouseWheel(int delta)
{
    return listbox.mouseWheel(delta);
}


void TpnlLstAnim::refresh_liste()
{
    listbox.setScrollPosition(0);
    listbox.setIndex(0);
    listbox.refresh();
}


void TpnlLstAnim::_shift()
{
    // le dynpanel se cale sur ses ancres, les objets suivent
    int dx, dy;

    dynpanel.shift(&dx,&dy);

    listbox.shift(dx,dy);
    btAnim.shift(dx,dy);
    ckdLoop.shift(dx,dy);
}

void TpnlLstAnim::show()
{
    m_visible = true;
}






