preparations for multiple parallel progress-type operations

pull/16/head
Marc Zinnschlag 12 years ago
parent 04158d03b0
commit eaa58e0530

@ -23,7 +23,7 @@ int CSMDoc::Document::getState() const
state |= State_Modified; state |= State_Modified;
if (mSaveCount) if (mSaveCount)
state |= State_Locked | State_Saving | State_Progress; state |= State_Locked | State_Saving;
return state; return state;
} }
@ -33,7 +33,7 @@ void CSMDoc::Document::save()
mSaveCount = 1; mSaveCount = 1;
mSaveTimer.start (500); mSaveTimer.start (500);
emit stateChanged (getState(), this); emit stateChanged (getState(), this);
emit progress (1, 16, this); emit progress (1, 16, State_Saving, this);
} }
void CSMDoc::Document::abortSave() void CSMDoc::Document::abortSave()
@ -51,7 +51,7 @@ void CSMDoc::Document::saving()
{ {
++mSaveCount; ++mSaveCount;
emit progress (mSaveCount, 16, this); emit progress (mSaveCount, 16, State_Saving, this);
if (mSaveCount>15) if (mSaveCount>15)
{ {

@ -17,8 +17,7 @@ namespace CSMDoc
{ {
State_Modified = 1, State_Modified = 1,
State_Locked = 2, State_Locked = 2,
State_Saving = 4, State_Saving = 4
State_Progress = 8
}; };
QUndoStack mUndoStack; QUndoStack mUndoStack;
@ -46,7 +45,7 @@ namespace CSMDoc
void stateChanged (int state, CSMDoc::Document *document); void stateChanged (int state, CSMDoc::Document *document);
void progress (int current, int max, CSMDoc::Document *document); void progress (int current, int max, int type, CSMDoc::Document *document);
private slots: private slots:

@ -20,10 +20,9 @@ void CSVDoc::View::setupFileMenu()
{ {
QMenu *file = menuBar()->addMenu (tr ("&File")); QMenu *file = menuBar()->addMenu (tr ("&File"));
QAction *save = new QAction (tr ("&Save"), this); mSave = new QAction (tr ("&Save"), this);
connect (save, SIGNAL (triggered()), this, SLOT (save())); connect (mSave, SIGNAL (triggered()), this, SLOT (save()));
file->addAction (save); file->addAction (mSave);
mEditingActions.push_back (save);
} }
void CSVDoc::View::setupEditMenu() void CSVDoc::View::setupEditMenu()
@ -85,6 +84,8 @@ void CSVDoc::View::updateActions()
mUndo->setEnabled (editing & mDocument->getUndoStack().canUndo()); mUndo->setEnabled (editing & mDocument->getUndoStack().canUndo());
mRedo->setEnabled (editing & mDocument->getUndoStack().canRedo()); mRedo->setEnabled (editing & mDocument->getUndoStack().canRedo());
mSave->setEnabled (!(mDocument->getState() & CSMDoc::Document::State_Saving));
} }
CSVDoc::View::View (ViewManager& viewManager, CSMDoc::Document *document, int totalViews) CSVDoc::View::View (ViewManager& viewManager, CSMDoc::Document *document, int totalViews)
@ -121,7 +122,7 @@ void CSVDoc::View::updateDocumentState()
updateActions(); updateActions();
} }
void CSVDoc::View::updateProgress (int current, int max) void CSVDoc::View::updateProgress (int current, int max, int type)
{ {
} }

@ -26,6 +26,7 @@ namespace CSVDoc
int mViewTotal; int mViewTotal;
QAction *mUndo; QAction *mUndo;
QAction *mRedo; QAction *mRedo;
QAction *mSave;
std::vector<QAction *> mEditingActions; std::vector<QAction *> mEditingActions;
// not implemented // not implemented
@ -61,7 +62,7 @@ namespace CSVDoc
void updateDocumentState(); void updateDocumentState();
void updateProgress (int current, int max); void updateProgress (int current, int max, int type);
private slots: private slots:

@ -46,8 +46,8 @@ CSVDoc::View *CSVDoc::ViewManager::addView (CSMDoc::Document *document)
connect (document, SIGNAL (stateChanged (int, CSMDoc::Document *)), connect (document, SIGNAL (stateChanged (int, CSMDoc::Document *)),
this, SLOT (documentStateChanged (int, CSMDoc::Document *))); this, SLOT (documentStateChanged (int, CSMDoc::Document *)));
connect (document, SIGNAL (progress (int, int, CSMDoc::Document *)), connect (document, SIGNAL (progress (int, int, int, CSMDoc::Document *)),
this, SLOT (progress (int, int, CSMDoc::Document *))); this, SLOT (progress (int, int, int, CSMDoc::Document *)));
} }
View *view = new View (*this, document, countViews (document)+1); View *view = new View (*this, document, countViews (document)+1);
@ -102,9 +102,9 @@ void CSVDoc::ViewManager::documentStateChanged (int state, CSMDoc::Document *doc
(*iter)->updateDocumentState(); (*iter)->updateDocumentState();
} }
void CSVDoc::ViewManager::progress (int current, int max, CSMDoc::Document *document) void CSVDoc::ViewManager::progress (int current, int max, int type, CSMDoc::Document *document)
{ {
for (std::vector<View *>::const_iterator iter (mViews.begin()); iter!=mViews.end(); ++iter) for (std::vector<View *>::const_iterator iter (mViews.begin()); iter!=mViews.end(); ++iter)
if ((*iter)->getDocument()==document) if ((*iter)->getDocument()==document)
(*iter)->updateProgress (current, max); (*iter)->updateProgress (current, max, type);
} }

@ -46,7 +46,7 @@ namespace CSVDoc
void documentStateChanged (int state, CSMDoc::Document *document); void documentStateChanged (int state, CSMDoc::Document *document);
void progress (int current, int max, CSMDoc::Document *document); void progress (int current, int max, int type, CSMDoc::Document *document);
}; };
} }

Loading…
Cancel
Save