/* * 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