From 8dc6ad505937ad3f9aa80ddc405db703d439976e Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Tue, 29 Apr 2014 14:27:44 +0200 Subject: [PATCH] moved new flag from setupData function to Document constructor --- apps/opencs/model/doc/document.cpp | 19 ++++++++++++------- apps/opencs/model/doc/document.hpp | 8 ++++++-- apps/opencs/model/doc/documentmanager.cpp | 8 ++++---- apps/opencs/model/doc/documentmanager.hpp | 2 +- apps/opencs/model/doc/loader.cpp | 7 +++---- apps/opencs/model/doc/loader.hpp | 4 +--- apps/opencs/view/doc/loader.cpp | 2 +- apps/opencs/view/doc/loader.hpp | 2 +- apps/opencs/view/doc/viewmanager.cpp | 4 ++-- 9 files changed, 31 insertions(+), 25 deletions(-) diff --git a/apps/opencs/model/doc/document.cpp b/apps/opencs/model/doc/document.cpp index 20a355d48..25b48a3c9 100644 --- a/apps/opencs/model/doc/document.cpp +++ b/apps/opencs/model/doc/document.cpp @@ -2220,9 +2220,9 @@ void CSMDoc::Document::createBase() } CSMDoc::Document::Document (const Files::ConfigurationManager& configuration, - const std::vector< boost::filesystem::path >& files, + const std::vector< boost::filesystem::path >& files, bool new_, const boost::filesystem::path& savePath, const boost::filesystem::path& resDir) -: mSavePath (savePath), mContentFiles (files), mTools (mData), mResDir(resDir), +: mSavePath (savePath), mContentFiles (files), mNew (new_), mTools (mData), mResDir(resDir), mProjectPath ((configuration.getUserDataPath() / "projects") / (savePath.filename().string() + ".project")), mSaving (*this, mProjectPath) @@ -2260,21 +2260,21 @@ CSMDoc::Document::~Document() { } -void CSMDoc::Document::setupData (bool new_) +void CSMDoc::Document::setupData() { - if (new_ && mContentFiles.size()==1) + if (mNew && mContentFiles.size()==1) createBase(); else { std::vector::const_iterator end = mContentFiles.end(); - if (new_) + if (mNew) --end; - load (mContentFiles.begin(), end, !new_); + load (mContentFiles.begin(), end, !mNew); } - if (new_) + if (mNew) { mData.setDescription (""); mData.setAuthor (""); @@ -2317,6 +2317,11 @@ const std::vector& CSMDoc::Document::getContentFiles() return mContentFiles; } +bool CSMDoc::Document::isNew() const +{ + return mNew; +} + void CSMDoc::Document::save() { if (mSaving.isRunning()) diff --git a/apps/opencs/model/doc/document.hpp b/apps/opencs/model/doc/document.hpp index c7d87e16a..e19efd04e 100644 --- a/apps/opencs/model/doc/document.hpp +++ b/apps/opencs/model/doc/document.hpp @@ -39,6 +39,7 @@ namespace CSMDoc boost::filesystem::path mSavePath; std::vector mContentFiles; + bool mNew; CSMWorld::Data mData; CSMTools::Tools mTools; boost::filesystem::path mProjectPath; @@ -72,12 +73,12 @@ namespace CSMDoc public: Document (const Files::ConfigurationManager& configuration, - const std::vector< boost::filesystem::path >& files, + const std::vector< boost::filesystem::path >& files, bool new_, const boost::filesystem::path& savePath, const boost::filesystem::path& resDir); ~Document(); - void setupData (bool new_); + void setupData(); QUndoStack& getUndoStack(); @@ -89,6 +90,9 @@ namespace CSMDoc ///< \attention The last element in this collection is the file that is being edited, /// but with its original path instead of the save path. + bool isNew() const; + ///< Is this a newly created content file? + void save(); CSMWorld::UniversalId verify(); diff --git a/apps/opencs/model/doc/documentmanager.cpp b/apps/opencs/model/doc/documentmanager.cpp index 4658667c3..ae6f1103f 100644 --- a/apps/opencs/model/doc/documentmanager.cpp +++ b/apps/opencs/model/doc/documentmanager.cpp @@ -27,8 +27,8 @@ CSMDoc::DocumentManager::DocumentManager (const Files::ConfigurationManager& con this, SLOT (documentLoaded (Document *))); connect (&mLoader, SIGNAL (documentNotLoaded (Document *, const std::string&)), this, SLOT (documentNotLoaded (Document *, const std::string&))); - connect (this, SIGNAL (loadRequest (CSMDoc::Document *, bool)), - &mLoader, SLOT (loadDocument (CSMDoc::Document *, bool))); + connect (this, SIGNAL (loadRequest (CSMDoc::Document *)), + &mLoader, SLOT (loadDocument (CSMDoc::Document *))); } CSMDoc::DocumentManager::~DocumentManager() @@ -44,11 +44,11 @@ CSMDoc::DocumentManager::~DocumentManager() void CSMDoc::DocumentManager::addDocument (const std::vector& files, const boost::filesystem::path& savePath, bool new_) { - Document *document = new Document (mConfiguration, files, savePath, mResDir); + Document *document = new Document (mConfiguration, files, new_, savePath, mResDir); mDocuments.push_back (document); - emit loadRequest (document, new_); + emit loadRequest (document); mLoader.hasThingsToDo().wakeAll(); } diff --git a/apps/opencs/model/doc/documentmanager.hpp b/apps/opencs/model/doc/documentmanager.hpp index 63ee5eb68..4adc9726c 100644 --- a/apps/opencs/model/doc/documentmanager.hpp +++ b/apps/opencs/model/doc/documentmanager.hpp @@ -65,7 +65,7 @@ namespace CSMDoc void documentAdded (CSMDoc::Document *document); - void loadRequest (CSMDoc::Document *document, bool _new); + void loadRequest (CSMDoc::Document *document); void lastDocumentDeleted(); diff --git a/apps/opencs/model/doc/loader.cpp b/apps/opencs/model/doc/loader.cpp index 53827deb0..dbaa2b4d5 100644 --- a/apps/opencs/model/doc/loader.cpp +++ b/apps/opencs/model/doc/loader.cpp @@ -31,13 +31,12 @@ void CSMDoc::Loader::load() std::vector >::iterator iter = mDocuments.begin(); Document *document = iter->first; - bool new_ = iter->second; mDocuments.erase (iter); try { - document->setupData (new_); + document->setupData(); emit documentLoaded (document); } catch (const std::exception& e) @@ -46,9 +45,9 @@ void CSMDoc::Loader::load() } } -void CSMDoc::Loader::loadDocument (CSMDoc::Document *document, bool new_) +void CSMDoc::Loader::loadDocument (CSMDoc::Document *document) { - mDocuments.push_back (std::make_pair (document, new_)); + mDocuments.push_back (std::make_pair (document, false)); } void CSMDoc::Loader::abortLoading (Document *document) diff --git a/apps/opencs/model/doc/loader.hpp b/apps/opencs/model/doc/loader.hpp index af266d52b..4e3db1815 100644 --- a/apps/opencs/model/doc/loader.hpp +++ b/apps/opencs/model/doc/loader.hpp @@ -31,10 +31,8 @@ namespace CSMDoc public slots: - void loadDocument (CSMDoc::Document *document, bool new_); + void loadDocument (CSMDoc::Document *document); ///< The ownership of \a document is not transferred. - /// \param new_ Do not load the last content file in the files list specified in - /// \a document and instead create it in an appropriate way. void abortLoading (Document *document); ///< Abort loading \a docuemnt (ignored if \a document has already finished being diff --git a/apps/opencs/view/doc/loader.cpp b/apps/opencs/view/doc/loader.cpp index f840ab717..15296d616 100644 --- a/apps/opencs/view/doc/loader.cpp +++ b/apps/opencs/view/doc/loader.cpp @@ -22,7 +22,7 @@ CSVDoc::Loader::~Loader() delete iter->second; } -void CSVDoc::Loader::add (CSMDoc::Document *document, bool new_) +void CSVDoc::Loader::add (CSMDoc::Document *document) { mDocuments.insert (std::make_pair (document, new LoadingDocument (document))); } diff --git a/apps/opencs/view/doc/loader.hpp b/apps/opencs/view/doc/loader.hpp index 4aa497482..cb154b13e 100644 --- a/apps/opencs/view/doc/loader.hpp +++ b/apps/opencs/view/doc/loader.hpp @@ -36,7 +36,7 @@ namespace CSVDoc public slots: - void add (CSMDoc::Document *document, bool new_); + void add (CSMDoc::Document *document); void loadingStopped (CSMDoc::Document *document, bool completed, const std::string& error); diff --git a/apps/opencs/view/doc/viewmanager.cpp b/apps/opencs/view/doc/viewmanager.cpp index 3ca52c452..c18cca809 100644 --- a/apps/opencs/view/doc/viewmanager.cpp +++ b/apps/opencs/view/doc/viewmanager.cpp @@ -87,8 +87,8 @@ CSVDoc::ViewManager::ViewManager (CSMDoc::DocumentManager& documentManager) connect (&CSMSettings::UserSettings::instance(), SIGNAL (signalUpdateEditorSetting (const QString &, const QString &)), this, SLOT (slotUpdateEditorSetting (const QString &, const QString &))); - connect (&mDocumentManager, SIGNAL (loadRequest (CSMDoc::Document *, bool)), - &mLoader, SLOT (add (CSMDoc::Document *, bool))); + connect (&mDocumentManager, SIGNAL (loadRequest (CSMDoc::Document *)), + &mLoader, SLOT (add (CSMDoc::Document *))); connect ( &mDocumentManager, SIGNAL (loadingStopped (CSMDoc::Document *, bool, const std::string&)),