1616 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1717 */
1818
19-
19+ # include < QFile >
2020#include < QString>
2121#include < QMutexLocker>
2222#include < QList>
2323#include < QStringList>
2424#include < QDebug>
25+ #include " common.h"
2526#include " erroritem.h"
2627#include " errorlogger.h"
2728#include " threadresult.h"
2829
29- ThreadResult::ThreadResult () : mMaxProgress(0 ), mProgress(0 )
30+ ThreadResult::ThreadResult () : mMaxProgress(0 ), mProgress(0 ), mFilesChecked( 0 ), mTotalFiles( 0 )
3031{
3132 // ctor
3233}
@@ -44,9 +45,17 @@ void ThreadResult::reportOut(const std::string &outmsg)
4445void ThreadResult::FileChecked (const QString &file)
4546{
4647 QMutexLocker locker (&mutex);
47- Q_UNUSED (file); // For later use maybe?
48- mProgress ++;
49- emit Progress (mProgress );
48+
49+ mProgress += QFile (file).size ();
50+ mFilesChecked ++;
51+
52+ if (mMaxProgress > 0 )
53+ {
54+ const int value = static_cast <int >(PROGRESS_MAX * mProgress / mMaxProgress );
55+ const QString description = tr (" %1 of %2 files checked" ).arg (mFilesChecked ).arg (mTotalFiles );
56+
57+ emit Progress (value, description);
58+ }
5059}
5160
5261void ThreadResult::reportErr (const ErrorLogger::ErrorMessage &msg)
@@ -96,13 +105,25 @@ void ThreadResult::SetFiles(const QStringList &files)
96105 QMutexLocker locker (&mutex);
97106 mFiles = files;
98107 mProgress = 0 ;
99- mMaxProgress = files.size ();
108+ mFilesChecked = 0 ;
109+ mTotalFiles = files.size ();
110+
111+ // Determine the total size of all of the files to check, so that we can
112+ // show an accurate progress estimate
113+ quint64 sizeOfFiles = 0 ;
114+ foreach (const QString& file, files)
115+ {
116+ sizeOfFiles += QFile (file).size ();
117+ }
118+ mMaxProgress = sizeOfFiles;
100119}
101120
102121void ThreadResult::ClearFiles ()
103122{
104123 QMutexLocker locker (&mutex);
105124 mFiles .clear ();
125+ mFilesChecked = 0 ;
126+ mTotalFiles = 0 ;
106127}
107128
108129int ThreadResult::GetFileCount ()
0 commit comments