Fix problem that user material database is not watched by resource manager when file is first time created.

This commit is contained in:
vsr 2013-04-17 09:26:00 +00:00
parent 4b66576d39
commit 8fab12198b
2 changed files with 25 additions and 1 deletions

View File

@ -22,6 +22,7 @@
#include "Material_ResourceMgr.h"
#include <QFileInfo>
#include <QFileSystemWatcher>
#include <QThread>
@ -175,7 +176,10 @@ void Material_ResourceMgr::watchUserFile( bool on )
if ( on ) {
if ( !myWatcher ) {
myWatcher = new QFileSystemWatcher( this );
myWatcher->addPath( userFileName( appName() ) );
QFileInfo ufile = userFileName( appName() );
if ( ufile.exists() ) {
myWatcher->addPath( ufile.filePath() );
}
connect( myWatcher, SIGNAL( fileChanged( QString ) ), this, SLOT( update() ) );
}
}
@ -187,6 +191,25 @@ void Material_ResourceMgr::watchUserFile( bool on )
}
}
/*!
\brief This function is called after user configuration file is saved.
\internal
*/
void Material_ResourceMgr::saved()
{
if ( resourceMgr() != this ) {
resourceMgr()->saved();
}
else if ( myWatcher ) {
QStringList files = myWatcher->files();
QFileInfo ufile = userFileName( appName() );
if ( ufile.exists() && !files.contains( ufile.filePath() ) ) {
myWatcher->addPath( ufile.filePath() );
update();
}
}
}
/*!
\brief Update user database slot
\internal

View File

@ -57,6 +57,7 @@ signals:
private:
void watchUserFile( bool );
void saved();
private slots:
void update();