winamp/Src/external_dependencies/openmpt-trunk/mptrack/AutoSaver.h
2024-09-24 14:54:57 +02:00

52 lines
1.2 KiB
C++

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