/* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ #ifndef SMDIRMODEL_H #define SMDIRMODEL_H #include #include #include class SmDirWatcher; class QTimer; class SmTreeItem; class QMutex; class SmDataColletor; class SmDirModel : public SmTreeModel { Q_OBJECT public: enum CustomRoles { NameRole = Qt::UserRole + 1, SizeRole = Qt::UserRole + 2, TypeRole = Qt::UserRole + 3, CreatedRole = Qt::UserRole + 4, Md5sumRole = Qt::UserRole + 5, DurationRole = Qt::UserRole + 6, BitrateRole = Qt::UserRole + 7, FullPathRole = Qt::UserRole + 8 }; enum Fields { Name = 0, Size = 1, Type = 2, Created = 3, Md5sum = 4, Duration = 5, Bitrate = 6, FullPath = 7 }; enum { NumFields = 8 }; enum FileDate { Access, Modified, Status }; explicit SmDirModel(const QStringList &headers, QObject *parent = 0); ~SmDirModel(); virtual QVariant data(const QModelIndex &index, int role) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role); bool isDir(const QModelIndex &idx) const; QDir dir() const; QFileInfo fileInfo(const QModelIndex &idx) const; QTimer *refresTimer() { return mRefreshTimer; } public slots: void setDir(const QString &dir); void dirEvent(const QList &data, int e); void readSettings(); void refresh(); private slots: void populate(SmTreeItem *root); void addFile(const QList &data); signals: void needResize(); private: const QList fileData(const QFileInfo &fi) const; SmDirWatcher *mWatch; QStringList mHeaders; QString mCurrentDir; QString mCur; QTimer *mRunTimer; QTimer *mRefreshTimer; QMap mIcons; QMutex *mCollectorMx; SmDataColletor *mCollector; }; #endif // SMDIRMODEL_H