3 #include <QRegularExpression>
14 VymLock::VymLock( const QString &fn )
22 if ( state == lockedByMyself && !releaseLock())
23 qWarning() << "Destructor VymLock: Removing LockFile failed";
31 bool VymLock::tryLock()
33 QFile lockFile( mapPath + ".lock");
34 if ( lockFile.exists() )
36 // File is already locked
37 if (debug) qDebug() << "VymLock::tryLock failed: LockFile exists";
40 if (!loadStringFromDisk( mapPath, s) )
41 qWarning( "Failed to read from existing lockFile");
44 QRegularExpression re("^author:\\s\\\"(.*)\\\"$");
45 re.setPatternOptions( QRegularExpression::MultilineOption );
46 QRegularExpressionMatch match = re.match( s );
47 if ( match.hasMatch() ) author = match.captured(1);
49 re.setPattern("^host:\\s\\\"(.*)\\\"$");
50 match = re.match( s );
51 if ( match.hasMatch() ) host = match.captured(1);
53 state = lockedByOther;
57 if (!lockFile.open(QFile::WriteOnly | QFile::Text))
59 if (debug) qWarning() << QString("VymLock::tryLock failed: Cannot open lockFile %1\n%2")
60 .arg( mapPath + ".lock")
61 .arg( lockFile.errorString() );
67 if (!author.isEmpty() ) s = QString( "author: \"%1\"\n").arg( author );
68 if (!host.isEmpty() ) s += QString( "host: \"%1\"\n").arg( host );
72 QTextStream out( &lockFile );
73 out.setCodec( "UTF-8" );
78 state = lockedByMyself;
83 VymLock::LockState VymLock::getState()
88 bool VymLock::removeLock()
90 QFile LockFile( mapPath + ".lock" );
91 if (LockFile.remove() )
97 bool VymLock::releaseLock()
99 if (state == lockedByMyself)
101 QFile LockFile( mapPath + ".lock" );
102 if (LockFile.remove() )
108 bool VymLock::rename( const QString &newMapPath)
110 QFile lockFile( mapPath + ".lock" );
112 if ( lockFile.rename( newMapPath + ".lock") )
114 mapPath = newMapPath;
120 void VymLock::setAuthor(const QString &s)
125 QString VymLock::getAuthor()
130 void VymLock::setHost(const QString &s)
135 QString VymLock::getHost()
139 void VymLock::setMapPath(const QString &s)
144 QString VymLock::getMapPath()