Browse Source

Emit progress signal during file import

Marco Nolden 13 years ago
parent
commit
a6e5e768ec
2 changed files with 13 additions and 1 deletions
  1. 12 1
      Libs/DICOM/Core/ctkDICOMIndexer.cpp
  2. 1 0
      Libs/DICOM/Core/ctkDICOMIndexer.h

+ 12 - 1
Libs/DICOM/Core/ctkDICOMIndexer.cpp

@@ -122,6 +122,9 @@ void ctkDICOMIndexer::addDirectory(ctkDICOMDatabase& ctkDICOMDatabase,
   OFList<OFString> dcmtkFileNames;
   OFStandard::searchDirectoryRecursively( QDir::toNativeSeparators(src_directory.c_str()).toAscii().data(), originalDcmtkFileNames, "", "");
 
+  int totalNumberOfFiles = originalDcmtkFileNames.size();
+  int numberOfFilesProcessed = 0;
+
   // hack to reverse list of filenames (not neccessary when image loading works correctly)
   for ( OFListIterator(OFString) iter = originalDcmtkFileNames.begin(); iter != originalDcmtkFileNames.end(); ++iter )
   {
@@ -134,13 +137,21 @@ void ctkDICOMIndexer::addDirectory(ctkDICOMDatabase& ctkDICOMDatabase,
 
   if(iter == last) return;
 
-  emit foundFilesToIndex(dcmtkFileNames.size());
+  emit foundFilesToIndex(totalNumberOfFiles);
 
   /* iterate over all input filenames */
   int fileNumber = 0;
+  int currentProgress = -1;
+
   while (iter != last)
   {
     emit indexingFileNumber(++fileNumber);
+    int newProgress = ( fileNumber * 100 ) / totalNumberOfFiles;
+    if (newProgress != currentProgress)
+    {
+      currentProgress = newProgress;
+      emit progress( currentProgress );
+    }
     QString filePath((*iter).c_str());
     this->addFile(ctkDICOMDatabase, filePath, destinationDirectoryName);
     ++iter;

+ 1 - 0
Libs/DICOM/Core/ctkDICOMIndexer.h

@@ -66,6 +66,7 @@ Q_SIGNALS:
   void foundFilesToIndex(int);
   void indexingFileNumber(int);
   void indexingFilePath(QString);
+  void progress(int);
 
 protected:
   QScopedPointer<ctkDICOMIndexerPrivate> d_ptr;