view edtimeline.h @ 531:2ac364d0ace9

Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 22 Nov 2012 17:10:05 +0200
parents d34922e6a244
children a4666c9e1336
line wrap: on
line source

#ifndef EDTIMELINE_H
#define EDTIMELINE_H

#include <QWidget>
#include <QCheckBox>
#include <QVBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include "edtlobj.h"
#include "dmengine.h"


class QEDTimelineTrackDisplay : public QWidget
{
    Q_OBJECT

public:
    DMTimelineTrack *track;

    QEDTimelineTrackDisplay(QWidget *parent = 0);
    void setTrack(DMTimelineTrack *mtrack);

    float getTimeScale(float value);
    float getTimeFromCoord(float value);

    void setTime(const int mtime);
    void setOffset(const int moffs);
    void setScale(const float mscale);

    QSize minimumSizeHint() const;
    QSize sizeHint() const;

protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);

    void paintEvent(QPaintEvent *event);

private:
    bool dragging;
    QPoint dragPoint;
    int dragOffs; // milliseconds

    float scale;
    int time, offs;
};


class QEDTimelineTrackView : public QWidget
{
    Q_OBJECT

private:
    QLineEdit *infoName;
    QLabel *infoData;
    QCheckBox *enabledCheck;

public:
    QEDTimelineTrackDisplay *track;

    QEDTimelineTrackView(QWidget *parent = 0);
    void setTrack(DMTimelineTrack *mtrack);
    void update();

private slots:
    void slotTrackEnabledChanged(bool);
    void slotTrackNameChanged(const QString & text);

signals:
    void trackChanged();
};


class QEDTimelineView : public QWidget
{
    Q_OBJECT

private:
    QVBoxLayout *layout;

    EDTimelineObject *tl;
    QList<QEDTimelineTrackView *> tracks;

public:
    QEDTimelineView(QWidget *parent = 0);
    void setTimeline(EDTimelineObject *mtl);

    void setTime(const int mtime);
    void setOffset(const int moffs);
    void setScale(const float mscale);

private slots:
    void slotTimelineChanged();

signals:
    void timelineChanged();
};

#endif