/* 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 PICTURESWIDGET_H #define PICTURESWIDGET_H #include #include #include #include "smtreemodel.h" class PictureView; class MappingTreeWidget; class QSqlQuery; class PicFilesModel; class QSortFilterProxyModel; class QHideEvent; class QEvent; class HoverWindow; class PicturesWidget : public QWidget { Q_OBJECT public: explicit PicturesWidget(QWidget *parent = 0); PictureView *picView() { return mPictureView; } private slots: void setMappingColors(); private: MappingTreeWidget *mMappingTree; PictureView *mPictureView; }; class PictureView : public QTreeView { Q_OBJECT public: explicit PictureView(QWidget *parent = 0); QList fileMappings() { return mFilesMappings; } public slots: void mappingChanged(int mapping); void deletePics(); protected: virtual void hideEvent(QHideEvent *); virtual bool event(QEvent *e); virtual void contextMenuEvent(QContextMenuEvent *e); private slots: void setFileMappings(); signals: void newFileMappigs(); private: HoverWindow *mHoverWin; QModelIndex mCurHover; QSortFilterProxyModel *mProxy; PicFilesModel *mModel; int mCursorOffset; QList mFilesMappings; }; class PicFilesModel : public SmTreeModel { Q_OBJECT public: enum Roles { FileNameRole = Qt::UserRole + 1, SizeRole = Qt::UserRole + 2, MimeTypeRole = Qt::UserRole + 3, FullPathRole = Qt::UserRole + 4, IdRole = Qt::UserRole + 5, AddedRole = Qt::UserRole + 6, Md5SumRole = Qt::UserRole + 7, SizeDisplayRole = Qt::UserRole + 8 }; enum Fields { FileName = 0, Size = 1, MimeType = 2, FullPath = 3, Id = 4, Added = 5, Md5Sum = 6, SizeDisplay = 7 }; enum { NumFields = 8 }; explicit PicFilesModel(const QStringList &headers, QObject *parent = 0); void setMapping(int mappingId) { mMappingId = mappingId; } QList mappingIds(const QList &fileIds); //some data Qt::ItemFlags flags(const QModelIndex &) const { return Qt::ItemIsEnabled | Qt::ItemIsSelectable; } QVariant data(const QModelIndex &index, int role) const; void removeFiles(const QList &files); public slots: void populate(); private: QSqlDatabase mDb; QSqlQuery *mPopulateQ; QSqlQuery *mDeleteFileQ; QSqlQuery *mCurMappingIdsQ; QString mCurMappingIdsQS; int mMappingId; QList mCurMappingsIds; }; #endif // PICTURESWIDGET_H