Hide lock file.

--HG--
branch : develop
This commit is contained in:
Roman Telezhynskyi 2015-10-26 09:57:20 +02:00
parent c6e18b8565
commit 1e99d00a54
4 changed files with 46 additions and 18 deletions

View file

@ -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())
{

View file

@ -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())
{

View file

@ -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));

View file

@ -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));
}