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;
 }