OSDN Git Service

[denncoCreator] fixed a crash bug.
[dennco/denncoCreator.git] / Source / dccontent.cpp
index 73e09ea..898ed7d 100644 (file)
 #include "DNXML.h"
 #include "DNXMLElement.h"
 #include "DNUtils.h"
+#include "dccontainersaver.h"
+#include "uieditor/dcuieditor.h"
+#include "propertyeditor/dcpropertyeditor.h"
 
 #include <stdlib.h>
 #include <sstream>
 #include <iostream>
 
 DCContent::DCContent(DCCreator *creator, std::string contentPath) :
-    mCreator(creator), mValid(false), mContainer(0)
+    d_creator(creator), d_valid(false), d_container(0)
 {
-    mContainer = (DCContainer*) TKContainer::createContainer();
-    mContainer->setContent(this);
+    d_contentRootPath = QString::fromStdString(contentPath);
+    d_container = (DCContainer*) TKContainer::createContainer();
+    d_container->setContent(this);
 
     dnGlobal()->updateRunningStatus(DNGlobal::STOPPED);
     dnGlobal()->resetErrorStatus();
@@ -52,7 +56,7 @@ DCContent::DCContent(DCCreator *creator, std::string contentPath) :
     std::string dataStorePath = containerRoot;
     dataStorePath.append("/data.db");
 
-    succeeded = mContainer->setDataStore(dataStorePath.c_str());
+    succeeded = d_container->setDataStore(dataStorePath.c_str());
     if (!succeeded)
     {
         dnNotifyError("Initialization failed","Failed to the setup data store");
@@ -66,19 +70,35 @@ DCContent::DCContent(DCCreator *creator, std::string contentPath) :
         return;
     }
 
-    mValid = true;
+    d_valid = true;
 }
 
 DCContent::~DCContent()
 {
-    mValid = false;
-    if (mContainer)
+    d_valid = false;
+    if (d_container)
     {
-        delete mContainer;
-        mContainer = 0;
+        delete d_container;
+        d_container = 0;
     }
 }
 
+bool DCContent::getIsModified() const
+{
+    if (d_valid && d_container && d_container->getIsModified())
+    {
+        return true;
+    }
+
+    if (DCPropertyEditor::getEditor()->isVisible())
+        DCPropertyEditor::getEditor()->close();
+
+    if (DCUIEditor::getEditor()->isVisible())
+        DCUIEditor::getEditor()->close();
+
+    return false;
+}
+
 bool DCContent::parseSettingFile(const char *contentRoot)
 {
     bool valid = false;
@@ -159,10 +179,26 @@ bool DCContent::parseSettingFile(const char *contentRoot)
 
 bool DCContent::parseContainerFile(const char *containerRoot)
 {
-    DNContainerBuilder builder(mContainer);
-    mContainer->beganBuildContainer();
+    DNContainerBuilder builder(d_container);
+    d_container->beganBuildContainer();
     bool r = builder.buildContainerFromXHTML(containerRoot);
-    mContainer->endedBuildContainer();
+    d_container->endedBuildContainer();
 
     return r;
 }
+
+bool DCContent::saveAll(const QString& contentRoot)
+{
+    DCContainerSaver containerSaver(d_container);
+
+    QString containerRoot = contentRoot + "/Container";
+    return containerSaver.saveAll(containerRoot);
+}
+
+bool DCContent::saveForPage(const QString &contentRoot, DCVCPage *page)
+{
+    DCContainerSaver containerSaver(d_container);
+
+    QString containerRoot = contentRoot + "/Container";
+    return containerSaver.saveForPage(containerRoot, page);
+}