#include "TimingLine.hh"

#include <QPainter>
#include <QGraphicsScene>

#include "TimingUtils.hh"
#include "TimingSyl.hh"
#include "TimingSeparator.hh"

using namespace Vivy;

TimingLine::TimingLine(Ass::Line *lineptr, QGraphicsItem *parent)
    : QGraphicsObject(parent)
      , line(*lineptr)
{
    setPos(TimingUtils::posFromMs(int(line.getStart())*10), TimingUtils::axisHeight());
    int currentTime = 0;
    QVector<Ass::Syl> syls = line.getContent();
    for (int i = 0; i < syls.size(); ++i){
        int endSyl = currentTime + 10 * int(syls.at(i).getDuration());

        TimingSyl* timingSyl = new TimingSyl(syls.at(i), currentTime, this);

        // TODO: Here create the TimingSeparator and connect
        TimingSeparator* timingSeparatorStart = new TimingSeparator(currentTime, i != 0 ? TimingSeparator::SeparatorStyle::Middle : TimingSeparator::SeparatorStyle::Start, this);
        TimingSeparator* timingSeparatorEnd = new TimingSeparator(i != syls.size()-1 ? endSyl : int(10*line.getDuration()), i != syls.size()-1 ? TimingSeparator::SeparatorStyle::Middle : TimingSeparator::SeparatorStyle::End, this);

        currentTime = endSyl;
    }
}

QRectF
TimingLine::boundingRect() const
{
    return QRectF(0, 0, TimingUtils::posFromMs(int(10*(line.getEnd()-line.getStart()))), TimingUtils::audioHeight());
}

void
TimingLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    painter->fillRect(QRectF(0, 0, TimingUtils::posFromMs(int(10*(line.getEnd()-line.getStart()))), TimingUtils::audioHeight()), QColor(0, 255, 255, 50));
}