From f302660dd0791d932ce0f49ef4eabc037567f911 Mon Sep 17 00:00:00 2001 From: Elliu <elliu@hashi.re> Date: Sun, 24 Jul 2022 18:49:00 +0200 Subject: [PATCH] UI: Properly propagate line and syl changes to assDocument --- src/Lib/Ass/Line.cc | 4 ++-- src/Lib/Ass/Line.hh | 2 +- src/Lib/Ass/Syl.cc | 6 ++++++ src/Lib/Ass/Syl.hh | 2 ++ src/Lib/Document/CRTPSubDocument.hh | 3 +-- src/UI/DocumentViews/AudioVisualizer/TimingLine.cc | 4 ++-- src/UI/DocumentViews/AudioVisualizer/TimingLine.hh | 4 ++-- src/UI/DocumentViews/AudioVisualizer/TimingScene.cc | 4 ++-- 8 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/Lib/Ass/Line.cc b/src/Lib/Ass/Line.cc index af9448cb..9e215edf 100644 --- a/src/Lib/Ass/Line.cc +++ b/src/Lib/Ass/Line.cc @@ -74,7 +74,7 @@ Line::updateContent() noexcept { ___contentAsText = ""; for (const auto &syl : content) - ___contentAsText.append(syl.getContent()); + ___contentAsText.append(syl.getAssText()); } void @@ -191,7 +191,7 @@ Line::getLineAsText() const noexcept } void -Line::setContent(const QVector<Syl> &syls) noexcept +Line::setContent(const QVector<Syl> syls) noexcept { content = syls; updateContent(); diff --git a/src/Lib/Ass/Line.hh b/src/Lib/Ass/Line.hh index 48dfd1d8..9d84bc2a 100644 --- a/src/Lib/Ass/Line.hh +++ b/src/Lib/Ass/Line.hh @@ -46,7 +46,7 @@ public: StyleProperties getStyleProperties() const noexcept; StyleWeakPtr getStyle() const noexcept; const QVector<Syl> &getContent() const noexcept; - void setContent(const QVector<Syl> &) noexcept; + void setContent(const QVector<Syl>) noexcept; QVector<Syl> *getContentPtr() noexcept; // FIXME: remove me diff --git a/src/Lib/Ass/Syl.cc b/src/Lib/Ass/Syl.cc index f98b8289..dd8ba473 100644 --- a/src/Lib/Ass/Syl.cc +++ b/src/Lib/Ass/Syl.cc @@ -37,6 +37,12 @@ Syl::getContent() const noexcept return content; } +QString +Syl::getAssText() const noexcept +{ + return QString("{\\k%1}").arg(duration) + content; +} + quint64 Syl::getDuration() const noexcept { diff --git a/src/Lib/Ass/Syl.hh b/src/Lib/Ass/Syl.hh index 1b00a40e..91600b12 100644 --- a/src/Lib/Ass/Syl.hh +++ b/src/Lib/Ass/Syl.hh @@ -32,6 +32,8 @@ public: QString getContent() const noexcept; quint64 getDuration() const noexcept; + QString getAssText() const noexcept; + void setDuration(quint64) noexcept; private: diff --git a/src/Lib/Document/CRTPSubDocument.hh b/src/Lib/Document/CRTPSubDocument.hh index 169c1096..92954fab 100644 --- a/src/Lib/Document/CRTPSubDocument.hh +++ b/src/Lib/Document/CRTPSubDocument.hh @@ -142,8 +142,7 @@ public: } catch (const std::runtime_error &e) { ret->logDebug() << "Failed to init ASS subdocument from internal: " << e.what(); ret.reset(); - // FIXME: currently terminate, but should be changed to stop the loading of the document - throw e; + // FIXME: currently not re-throwing, but the loading of the document should be halted here } return ret; diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc b/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc index ad2c0e57..2b41a8dc 100644 --- a/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc +++ b/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc @@ -9,9 +9,9 @@ using namespace Vivy; connect(sep, &TimingSeparator::enterPress, this, &TimingLine::sepEnterPress); \ connect(sep, &TimingSeparator::exitPress, this, &TimingLine::sepExitPress); -TimingLine::TimingLine(Ass::Line *lineptr, int index, QGraphicsItem *parent) +TimingLine::TimingLine(Ass::Line& _line, int index, QGraphicsItem *parent) : QGraphicsObject(parent) - , line(*lineptr) + , line(_line) , lineIndex(index) { setPos(TimingUtils::posFromMs(int(line.getStart()) * 10), TimingUtils::axisHeight()); diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh b/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh index fbaf7f0e..3d438f3c 100644 --- a/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh +++ b/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh @@ -11,13 +11,13 @@ namespace Vivy class TimingLine final : public QGraphicsObject { Q_OBJECT public: - explicit TimingLine(Ass::Line *, int, QGraphicsItem * = nullptr); + explicit TimingLine(Ass::Line&, int, QGraphicsItem * = nullptr); QRectF boundingRect() const override; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; private: - Ass::Line line; + Ass::Line& line; QVector<TimingSeparator *> seps; QVector<TimingSyl *> timingSyls; int lineIndex; diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingScene.cc b/src/UI/DocumentViews/AudioVisualizer/TimingScene.cc index ea47784c..39760c37 100644 --- a/src/UI/DocumentViews/AudioVisualizer/TimingScene.cc +++ b/src/UI/DocumentViews/AudioVisualizer/TimingScene.cc @@ -63,8 +63,8 @@ TimingScene::rebuildScene() if (auto assDocument = rootVivyDocument.getAssSubDocument()) { QVector<Ass::LinePtr> lines = assDocument->getLines(); for (int i = 0; i < lines.size(); ++i) { - if (auto line = lines.at(i).get()) { - TimingLine *l = new TimingLine(line, i); + if (auto line = lines.at(i)) { + TimingLine *l = new TimingLine(*line, i); l->setVisible(false); addItem(l); timingLines.append(l); -- GitLab