/* 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" #include "pictureviewer2.h" class PictureView; class MappingTreeWidget; class MappingEditWidget; class MappingEditDialog; class MappingTreeModel; class QSqlQuery; class PicFilesModel; class QSortFilterProxyModel; class QHideEvent; class QEvent; class HoverWindow; class PictureViewer2; class QAction; class PicturesWidget : public QWidget { Q_OBJECT public: explicit PicturesWidget(QWidget *parent = 0); PictureView *picView() { return mPictureView; } void setPicViewerAction(QAction *action) { mPicViewerA = action; } PictureViewer2 *picViewer2() { return mPicViewer; } public slots: void showPicViewer(bool toggled); void writeSettings(); void readSettings(); private slots: void editMappings(); void constructWindowTitle(); void showInPicViewer(const QModelIndex &idx); signals: void needWindowTitleChange(QString); private: MappingTreeWidget *mMappingTree; PictureView *mPictureView; PictureViewer2 *mPicViewer; MappingEditDialog *mEditDialog; const QString mWindowTitleBase; QAction *mPicViewerA; }; class PictureView : public QTreeView { Q_OBJECT public: explicit PictureView(QWidget *parent = 0); QList fileMappings() { return mFilesMappings; } PicFilesModel *filesModel() { return mModel; } QSortFilterProxyModel *proxy() { return mProxy; } void setPV(PictureViewer2 *pv) { mPV = pv; } PictureViewer2 *PV() { return mPV; } public slots: void mappingChanged(int mapping); void deletePics(); void refresh(); void setPVData(int replace = false); void setPVAll(); void setHoverWinVisible(bool visible) const; protected: virtual void hideEvent(QHideEvent *); virtual bool event(QEvent *e); virtual void contextMenuEvent(QContextMenuEvent *e); private slots: void selectedFilesChanged(); signals: void newMappings(QString); void numSelected(int); void selectedSize(qint64); void editPicsMappings(); private: HoverWindow *mHoverWin; QModelIndex mCurHover; QSortFilterProxyModel *mProxy; PicFilesModel *mModel; int mCursorOffset; QList mFilesMappings; PictureViewer2 *mPV; MappingTreeModel *mMappingTreeModel; }; 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); ~PicFilesModel(); void setMapping(int 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; QList dataList(const QModelIndex &idx) const; QList > allFiles() const; void removeFiles(const QList &files); bool changeMappings(const QList &fileIds, const QList &mappingIds); public slots: void populate(); private: QSqlDatabase mDb; MappingTreeModel *mMappingTreeModel; QString mPopulateQS; QSqlQuery *mDeleteFileQ; QSqlQuery *mDeleteMappingsQ; QSqlQuery *mAddMappingsQ; QString mCurMappingIdsQS; QList mMappingIds; }; #endif // PICTURESWIDGET_H