Hide lock file.
--HG-- branch : develop
This commit is contained in:
parent
c6e18b8565
commit
1e99d00a54
|
@ -204,7 +204,7 @@ bool TMainWindow::LoadFile(const QString &path)
|
|||
}
|
||||
}
|
||||
|
||||
VlpCreateLock(lock, QFileInfo(path).fileName()+".lock");
|
||||
VlpCreateLock(lock, QFileInfo(path).fileName());
|
||||
|
||||
if (not lock->IsLocked())
|
||||
{
|
||||
|
@ -591,7 +591,7 @@ void TMainWindow::FileSaveAs()
|
|||
if (QFileInfo(fileName).exists())
|
||||
{
|
||||
// Temporary try to lock the file before saving
|
||||
VLockGuard<char> tmp(fileName + ".lock");
|
||||
VLockGuard<char> tmp(fileName);
|
||||
if (not tmp.IsLocked())
|
||||
{
|
||||
qCCritical(tMainWindow, "%s",
|
||||
|
@ -615,7 +615,7 @@ void TMainWindow::FileSaveAs()
|
|||
return;
|
||||
}
|
||||
|
||||
VlpCreateLock(lock, fileName + ".lock");
|
||||
VlpCreateLock(lock, fileName);
|
||||
if (not lock->IsLocked())
|
||||
{
|
||||
qCCritical(tMainWindow, "%s", qUtf8Printable(tr("Failed to lock. This file already opened in another window. "
|
||||
|
@ -1068,7 +1068,7 @@ void TMainWindow::ImportFromPattern()
|
|||
return;
|
||||
}
|
||||
|
||||
VLockGuard<char> tmp(QFileInfo(mPath).fileName()+".lock");
|
||||
VLockGuard<char> tmp(QFileInfo(mPath).fileName());
|
||||
if (not tmp.IsLocked())
|
||||
{
|
||||
qCCritical(tMainWindow, "%s", qUtf8Printable(tr("This file already opened in another window.")));
|
||||
|
@ -2479,7 +2479,7 @@ bool TMainWindow::LoadFromExistingFile(const QString &path)
|
|||
}
|
||||
}
|
||||
|
||||
VlpCreateLock(lock, QFileInfo(path).fileName()+".lock");
|
||||
VlpCreateLock(lock, QFileInfo(path).fileName());
|
||||
|
||||
if (not lock->IsLocked())
|
||||
{
|
||||
|
|
|
@ -478,7 +478,7 @@ void VApplication::CreateLogDir() const
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VApplication::BeginLogging()
|
||||
{
|
||||
VlpCreateLock(lockLog, LogPath()+".lock", [this](){return new QFile(LogPath());});
|
||||
VlpCreateLock(lockLog, LogPath(), [this](){return new QFile(LogPath());});
|
||||
|
||||
if (lockLog->IsLocked())
|
||||
{
|
||||
|
@ -517,7 +517,7 @@ void VApplication::ClearOldLogs() const
|
|||
QFileInfo info(fn);
|
||||
if (info.created().daysTo(QDateTime::currentDateTime()) >= DAYS_TO_KEEP_LOGS)
|
||||
{
|
||||
VLockGuard<QFile> tmp(info.absoluteFilePath() + ".lock", [&fn](){return new QFile(fn);});
|
||||
VLockGuard<QFile> tmp(info.absoluteFilePath(), [&fn](){return new QFile(fn);});
|
||||
if (tmp.GetProtected() != nullptr)
|
||||
{
|
||||
if (tmp.GetProtected()->remove())
|
||||
|
@ -709,7 +709,7 @@ void VApplication::GatherLogs() const
|
|||
continue;
|
||||
}
|
||||
|
||||
VLockGuard<QFile> tmp(info.absoluteFilePath() + ".lock", [&fn](){return new QFile(fn);});
|
||||
VLockGuard<QFile> tmp(info.absoluteFilePath(), [&fn](){return new QFile(fn);});
|
||||
|
||||
if (tmp.IsLocked())
|
||||
{
|
||||
|
|
|
@ -1954,7 +1954,7 @@ bool MainWindow::SaveAs()
|
|||
if (QFileInfo(fileName).exists())
|
||||
{
|
||||
// Temporary try to lock the file before saving
|
||||
VLockGuard<char> tmp(fileName + ".lock");
|
||||
VLockGuard<char> tmp(fileName);
|
||||
if (not tmp.IsLocked())
|
||||
{
|
||||
qCCritical(vMainWindow, "%s",
|
||||
|
@ -1979,7 +1979,7 @@ bool MainWindow::SaveAs()
|
|||
}
|
||||
|
||||
qCDebug(vMainWindow, "Locking file");
|
||||
VlpCreateLock(lock, fileName+".lock");
|
||||
VlpCreateLock(lock, fileName);
|
||||
|
||||
if (lock->IsLocked())
|
||||
{
|
||||
|
@ -3265,7 +3265,7 @@ bool MainWindow::LoadPattern(const QString &fileName, const QString& customMeasu
|
|||
}
|
||||
|
||||
qCDebug(vMainWindow, "Loking file");
|
||||
VlpCreateLock(lock, fileName+".lock");
|
||||
VlpCreateLock(lock, fileName);
|
||||
|
||||
if (lock->IsLocked())
|
||||
{
|
||||
|
@ -3395,7 +3395,7 @@ QStringList MainWindow::GetUnlokedRestoreFileList() const
|
|||
for (int i = 0; i < files.size(); ++i)
|
||||
{
|
||||
// Seeking file that realy need reopen
|
||||
VLockGuard<char> tmp(files.at(i)+".lock");
|
||||
VLockGuard<char> tmp(files.at(i));
|
||||
if (tmp.IsLocked())
|
||||
{
|
||||
restoreFiles.append(files.at(i));
|
||||
|
|
|
@ -35,7 +35,11 @@
|
|||
#include <memory>
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
|
||||
#include <QFileInfo>
|
||||
#include <QLockFile>
|
||||
#if defined(Q_OS_WIN)
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#define PEDANT_COMPILER ,lock(nullptr)
|
||||
#else
|
||||
#define PEDANT_COMPILER
|
||||
|
@ -64,12 +68,14 @@ public:
|
|||
const std::shared_ptr<Guarded> &GetProtected() const;
|
||||
int GetLockError() const;
|
||||
bool IsLocked() const;
|
||||
QString GetLockFile() const;
|
||||
|
||||
private:
|
||||
Q_DISABLE_COPY(VLockGuard<Guarded>)
|
||||
|
||||
std::shared_ptr<Guarded> holder;
|
||||
int lockError;
|
||||
QString lockFile;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
|
||||
std::shared_ptr<QLockFile> lock;
|
||||
|
@ -82,7 +88,7 @@ private:
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
template <typename Guarded>
|
||||
VLockGuard<Guarded>::VLockGuard(const QString &lockName, int stale, int timeout)
|
||||
: holder(nullptr), lockError(0) PEDANT_COMPILER
|
||||
: holder(nullptr), lockError(0), lockFile() PEDANT_COMPILER
|
||||
{
|
||||
if (TryLock(lockName, stale, timeout))
|
||||
{
|
||||
|
@ -95,7 +101,7 @@ VLockGuard<Guarded>::VLockGuard(const QString &lockName, int stale, int timeout)
|
|||
//object
|
||||
template <typename Guarded> template <typename Alloc>
|
||||
VLockGuard<Guarded>::VLockGuard(const QString& lockName, Alloc a, int stale, int timeout)
|
||||
: holder(nullptr), lockError(0) PEDANT_COMPILER
|
||||
: holder(nullptr), lockError(0), lockFile() PEDANT_COMPILER
|
||||
{
|
||||
if (TryLock(lockName, stale, timeout))
|
||||
{
|
||||
|
@ -106,7 +112,7 @@ VLockGuard<Guarded>::VLockGuard(const QString& lockName, Alloc a, int stale, int
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
template <typename Guarded> template <typename Alloc, typename Delete>
|
||||
VLockGuard<Guarded>::VLockGuard(const QString& lockName, Alloc a, Delete d, int stale, int timeout)
|
||||
: holder(nullptr), lockError(0) PEDANT_COMPILER
|
||||
: holder(nullptr), lockError(0), lockFile() PEDANT_COMPILER
|
||||
{
|
||||
if (TryLock(lockName, stale, timeout))
|
||||
{
|
||||
|
@ -135,6 +141,13 @@ bool VLockGuard<Guarded>::IsLocked() const
|
|||
return holder != nullptr;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
template <typename Guarded>
|
||||
QString VLockGuard<Guarded>::GetLockFile() const
|
||||
{
|
||||
return lockFile;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
template <typename Guarded>
|
||||
bool VLockGuard<Guarded>::TryLock(const QString &lockName, int stale, int timeout)
|
||||
|
@ -143,8 +156,15 @@ bool VLockGuard<Guarded>::TryLock(const QString &lockName, int stale, int timeou
|
|||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
|
||||
|
||||
lock.reset(new QLockFile(lockName));
|
||||
lockFile = lockName + QLatin1Literal(".lock");
|
||||
#if defined(Q_OS_UNIX)
|
||||
QFileInfo info(lockFile);
|
||||
lockFile = info.absolutePath() + QLatin1Literal("/.") + info.fileName();
|
||||
#endif
|
||||
lock.reset(new QLockFile(lockFile));
|
||||
|
||||
lock->setStaleLockTime(stale);
|
||||
lock->tryLock(timeout);
|
||||
|
||||
if (QLockFile::LockFailedError == lock->error())
|
||||
{
|
||||
|
@ -160,6 +180,12 @@ bool VLockGuard<Guarded>::TryLock(const QString &lockName, int stale, int timeou
|
|||
{
|
||||
lock.reset();
|
||||
}
|
||||
else
|
||||
{
|
||||
#if defined(Q_OS_WIN)
|
||||
SetFileAttributesW(lockFile.toStdWString().c_str(), FILE_ATTRIBUTE_HIDDEN);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
return res;
|
||||
}
|
||||
|
@ -181,13 +207,15 @@ void VlpCreateLock(std::shared_ptr<VLockGuard<Guarded>>& r, const QString& lockN
|
|||
}
|
||||
|
||||
template <typename Guarded, typename Alloc>
|
||||
void VlpCreateLock(std::shared_ptr<VLockGuard<Guarded>>& r, const QString& lockName, Alloc a, int stale = 0, int timeout = 0)
|
||||
void VlpCreateLock(std::shared_ptr<VLockGuard<Guarded>>& r, const QString& lockName, Alloc a, int stale = 0,
|
||||
int timeout = 0)
|
||||
{
|
||||
r.reset(new VLockGuard<Guarded>(lockName, a, stale, timeout));
|
||||
}
|
||||
|
||||
template <typename Guarded, typename Alloc, typename Del>
|
||||
void VlpCreateLock(std::shared_ptr<VLockGuard<Guarded>>& r, const QString& lockName, Alloc a, Del d, int stale = 0, int timeout = 0)
|
||||
void VlpCreateLock(std::shared_ptr<VLockGuard<Guarded>>& r, const QString& lockName, Alloc a, Del d, int stale = 0,
|
||||
int timeout = 0)
|
||||
{
|
||||
r.reset(new VLockGuard<Guarded>(lockName, a, d, stale, timeout));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user