123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /*
- * AutoSaver.h
- * -----------
- * Purpose: Class for automatically saving open modules at a specified interval.
- * Notes : (currently none)
- * Authors: OpenMPT Devs
- * The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
- */
- #pragma once
- #include "openmpt/all/BuildSettings.hpp"
- OPENMPT_NAMESPACE_BEGIN
- class CModDoc;
- class CAutoSaver
- {
- public:
- CAutoSaver();
-
- bool DoSave(DWORD curTime);
- bool IsEnabled() const;
- bool GetUseOriginalPath() const;
- mpt::PathString GetPath() const;
- uint32 GetHistoryDepth() const;
- uint32 GetSaveInterval() const;
- uint32 GetSaveIntervalMilliseconds() const
- {
- return Clamp(GetSaveInterval(), 0u, (1u << 30) / 60u / 1000u) * 60 * 1000;
- }
- private:
- bool SaveSingleFile(CModDoc &modDoc);
- mpt::PathString GetBasePath(const CModDoc &modDoc, bool createPath) const;
- mpt::PathString GetBaseName(const CModDoc &modDoc) const;
- mpt::PathString BuildFileName(const CModDoc &modDoc) const;
- void CleanUpBackups(const CModDoc &modDoc) const;
- bool CheckTimer(DWORD curTime) const;
-
- DWORD m_lastSave = 0;
- //Flag to prevent autosave from starting new saving if previous is still in progress.
- bool m_saveInProgress = false;
- };
- OPENMPT_NAMESPACE_END
|