diff options
Diffstat (limited to 'core/subsurface-qt/divelistnotifier.h')
-rw-r--r-- | core/subsurface-qt/divelistnotifier.h | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/core/subsurface-qt/divelistnotifier.h b/core/subsurface-qt/divelistnotifier.h index 63355fbcc..b5f8106d5 100644 --- a/core/subsurface-qt/divelistnotifier.h +++ b/core/subsurface-qt/divelistnotifier.h @@ -121,68 +121,12 @@ signals: // This is necessary, so that the user can't click on the "undo" button and undo // an unrelated command. void commandExecuted(); -public: - // Desktop uses the QTreeView class to present the list of dives. The layout - // of this class gives us a very fundamental problem, as we can not easily - // distinguish between user-initiated changes of the selection and changes - // that are due to actions of the Command-classes. To solve this problem, - // the frontend can use this function to query whether a dive list-modifying - // command is currently executed. If this function returns true, the - // frontend is supposed to not modify the selection. - bool inCommand() const; - - // The following class and function are used by divelist-modifying commands - // to signal that they are in-flight. If the returned object goes out of scope, - // the command-in-flight status is reset to its previous value. Thus, the - // function can be called recursively. - class InCommandMarker { - DiveListNotifier ¬ifier; - bool oldValue; - InCommandMarker(DiveListNotifier &); - friend DiveListNotifier; - public: - ~InCommandMarker(); - }; - - // Usage: - // void doWork() - // { - // auto marker = diveListNotifier.enterCommand(); - // ... do work ... - // } - InCommandMarker enterCommand(); -private: - friend InCommandMarker; - bool commandExecuting; }; // The DiveListNotifier class has only trivial state. // We can simply define it as a global object. extern DiveListNotifier diveListNotifier; -// InCommandMarker is so trivial that the functions can be inlined. -// TODO: perhaps move this into own header-file. -inline DiveListNotifier::InCommandMarker::InCommandMarker(DiveListNotifier ¬ifierIn) : notifier(notifierIn), - oldValue(notifier.commandExecuting) -{ - notifier.commandExecuting = true; -} - -inline DiveListNotifier::InCommandMarker::~InCommandMarker() -{ - notifier.commandExecuting = oldValue; -} - -inline bool DiveListNotifier::inCommand() const -{ - return commandExecuting; -} - -inline DiveListNotifier::InCommandMarker DiveListNotifier::enterCommand() -{ - return InCommandMarker(*this); -} - inline DiveField::DiveField(int flags) : nr((flags & NR) != 0), datetime((flags & DATETIME) != 0), |