Refactor for better legibility.

This commit is contained in:
cc9cii 2014-09-10 14:40:41 +10:00
parent 77171b788b
commit 89f7608022
2 changed files with 19 additions and 27 deletions

View file

@ -364,17 +364,17 @@ void CSVDoc::ViewManager::onExitWarningHandler (int state, CSMDoc::Document *doc
} }
} }
void CSVDoc::ViewManager::exitApplication (CSVDoc::View *view) bool CSVDoc::ViewManager::removeDocument (CSVDoc::View *view)
{ {
// close the current document first
if(!notifySaveOnClose(view)) if(!notifySaveOnClose(view))
return; return false;
else else
{ {
// don't bother closing views or updating indicies, but remove from mViews // don't bother closing views or updating indicies, but remove from mViews
CSMDoc::Document * document = view->getDocument(); CSMDoc::Document * document = view->getDocument();
std::vector<View *> remainingViews; std::vector<View *> remainingViews;
for (std::vector<View *>::const_iterator iter (mViews.begin()); iter!=mViews.end(); ++iter) std::vector<View *>::const_iterator iter = mViews.begin();
for (; iter!=mViews.end(); ++iter)
{ {
if(document == (*iter)->getDocument()) if(document == (*iter)->getDocument())
(*iter)->setVisible(false); (*iter)->setVisible(false);
@ -383,30 +383,21 @@ void CSVDoc::ViewManager::exitApplication (CSVDoc::View *view)
} }
mDocumentManager.removeDocument(document); mDocumentManager.removeDocument(document);
mViews = remainingViews; mViews = remainingViews;
}
return true;
}
// attempt to close all other documents void CSVDoc::ViewManager::exitApplication (CSVDoc::View *view)
while(!mViews.empty()) {
{ if(!removeDocument(view)) // close the current document first
// raise the window to alert the user
mViews.back()->activateWindow();
mViews.back()->raise();
if (!notifySaveOnClose(mViews.back()))
return; return;
else
while(!mViews.empty()) // attempt to close all other documents
{ {
document = mViews.back()->getDocument(); mViews.back()->activateWindow();
remainingViews.clear(); mViews.back()->raise(); // raise the window to alert the user
for (std::vector<View *>::const_iterator iter (mViews.begin()); iter!=mViews.end(); ++iter) if(!removeDocument(mViews.back()))
{ return;
if(document == (*iter)->getDocument())
(*iter)->setVisible(false);
else
remainingViews.push_back(*iter);
}
mDocumentManager.removeDocument(document);
mViews = remainingViews;
}
}
} }
// Editor exits (via a signal) when the last document is deleted // Editor exits (via a signal) when the last document is deleted
} }

View file

@ -41,6 +41,7 @@ namespace CSVDoc
bool notifySaveOnClose (View *view = 0); bool notifySaveOnClose (View *view = 0);
bool showModifiedDocumentMessageBox (View *view); bool showModifiedDocumentMessageBox (View *view);
bool showSaveInProgressMessageBox (View *view); bool showSaveInProgressMessageBox (View *view);
bool removeDocument(View *view);
public: public: