#ifndef SEGMENT_H #define SEGMENT_H #include #include #include class Segment { public: enum Source { Manual, Automatic, Both }; Segment(Segment *parent = 0); Segment(qint64 position = 0, Segment *parent = 0, Source source = Manual); virtual ~Segment(); virtual void read(const QJsonObject &json); virtual void write(QJsonObject &json) const; Segment *child(int row); void appendChild(Segment *childSegment); void insertChild(int row, Segment *segment); void removeChild(int row); int childCount() const; virtual QString display() const = 0; int row() const; Segment *parent(); Segment *getNextSegment(); qint64 getPosition() const; QString getFormattedPosition() const; QList getChildren() const; int getHeight() const; Source getSource() const; void containsSpeech(bool &flag) const; void setPosition(qint64 position); void setSource(Source source); void setChildren(const QList &children); void setParent(Segment *parent); int childIndexFromPosition(qint64 position); void clearChildren(); void splitChildren(QList &subList1, QList &subList2, int pos, Segment *newParent); virtual void setEnd(qint64 end); virtual int getNumber() const; virtual qint64 getEnd() const; virtual QString getLabel() const; virtual void setLabel(const QString &label); virtual int getCamera(Segment::Source source) const; protected: qint64 m_position; Source m_source; QList m_childSegments; private: Segment *m_parentSegment; }; #endif