Mercurial > hg > dmlib
diff edtlobj.cpp @ 403:d34922e6a244
Even more work towards the editor.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 19 Oct 2012 21:52:16 +0300 |
parents | 2fdf440ea66a |
children |
line wrap: on
line diff
--- a/edtlobj.cpp Fri Oct 19 17:49:22 2012 +0300 +++ b/edtlobj.cpp Fri Oct 19 21:52:16 2012 +0300 @@ -1,4 +1,5 @@ // +// Demo Editor -- Timeline state object // Wrapper class for DMTimeline data // (C) Copyright 2012 Matti 'ccr' Hämäläinen <ccr@tnsp.org> // @@ -6,14 +7,14 @@ #include "dmres.h" -TimelineObject::TimelineObject() +EDTimelineObject::EDTimelineObject() { dmTimelineNew(&tl, "Demo"); scrub(); } -TimelineObject::TimelineObject(TimelineObject *obj) +EDTimelineObject::EDTimelineObject(EDTimelineObject *obj) { scrub(); filename = obj->filename; @@ -21,31 +22,42 @@ } -TimelineObject::~TimelineObject() +EDTimelineObject::~EDTimelineObject() { dmFreeTimeline(tl); } -int TimelineObject::load(QString mfilename) +int EDTimelineObject::load(QString mfilename) { QByteArray fnba = mfilename.toUtf8(); DMResource *res; + DMTimeline *tmp; if ((res = dmf_create_stdio(fnba.data(), "rb")) == NULL) return DMERR_FOPEN; - dmFreeTimeline(tl); - int err = dmLoadTimeline(res, &tl); + int err = dmLoadTimeline(res, &tmp); + dmf_close(res); - scrub(); - - dmf_close(res); - filename = mfilename; + if (err == DMERR_OK) + { + dmFreeTimeline(tl); + tl = tmp; + scrub(); + if (tl->name != NULL) + filename = QString(tl->name); + else + filename = mfilename; + } + else + { + dmFreeTimeline(tmp); + } return err; } -int TimelineObject::save(QString mfilename) +int EDTimelineObject::save(QString mfilename) { QByteArray fnba = mfilename.toUtf8(); DMResource *res; @@ -60,31 +72,31 @@ } -void TimelineObject::touch() +void EDTimelineObject::touch() { ntouches++; } -void TimelineObject::scrub() +void EDTimelineObject::scrub() { ntouches = 0; } -bool TimelineObject::touched() +bool EDTimelineObject::touched() { return ntouches; } -void TimelineObject::setState(const QString &mstate) +void EDTimelineObject::setState(const QString &mstate) { cstate = mstate; } -QString TimelineObject::state() const +QString EDTimelineObject::state() const { return cstate; }