/*******************************************************************************
*                                                                              *
* Société de Transports de Montréal.                                    	   *
* 2012 - 2013                                                                        *
*                                                                              *
* Projet Zones Tests                                                           *
*                                                                              *
*                                                                              *
*                                                                              *
*******************************************************************************/
/*
    Description:
    Cette classe est responsable de la création d'une liste de tous lesfichiers
    ZTLog présents dans la base de données.  À ne pas confondre avec les fichiers
    de passage.

*/

/* ************************************************************************** */
/* Revision:
### 20150227 JFM


### YYYYMMDD Description du besoin ou du bug
    Description du changement.
 */

/* ************************************************************************** */

#ifndef ZTLOGFILESMGR_H
#define ZTLOGFILESMGR_H

#include "ZTData.h"
#include "GlobalDefine.h"
#include <QList>
#include <QDir>
#include "DirParserThread.h"
#include <QThread>
#include <QTimer>

class COutilZT;

class CZTLogFilesMgr: public QObject
{
    Q_OBJECT
public:
    CZTLogFilesMgr();
    ~CZTLogFilesMgr();

    COutilZT *mProgramHandle;

    void DestroyZTLogFilesList();
    void ParseZTLogFiles(bool RebuildDatabase);
    bool ExtractLogInfo(QString LogFilePath);
    void SetLogDataDir(QString Dir){mLogDatabaseDir = Dir;}
    QList<CZTLogFileInfo> *GetZTLogsList(){return &mZTLogFilesList;}
    int GetZTLogFilesCount();
    int SaveDatabaseFile();

private:

    QList<CZTLogFileInfo> mZTLogFilesList;
    QString mLogDatabaseDir;
    QThread *mDirParserThread;
    CDirParserThread *mDirParserWorkerThread;
    QTimer *mDatabaseParsingTimer;
    bool mSaveDBFile;


    int ParseDir(QDir dir);

public slots:
    void NewZTLogParsed(QString,bool);
    void DirParsingFinished(int);
    void ParsingTimerExpired();
    void EmptyDirParsed();


    void ThreadQuit();
    void ThreadTerminated();
};

#endif // ZTLOGFILESMGR_H
