Salome HOME
Install tests.set
[modules/geom.git] / src / Material / Material_ResourceMgr.cxx
index 59ca3b65fa3532e0d3d5155a5c81ca3d9d9c51dc..02e3fabe78745b92b9bea8fc88dbf5190dc05e84 100644 (file)
@@ -1,9 +1,9 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -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