diff options
Diffstat (limited to 'pictureswidget.h')
-rw-r--r-- | pictureswidget.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/pictureswidget.h b/pictureswidget.h new file mode 100644 index 0000000..b0bd277 --- /dev/null +++ b/pictureswidget.h @@ -0,0 +1,83 @@ +/* + 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 <QWidget> +#include <QTreeView> +#include <QSqlDatabase> + +#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: + MappingTreeWidget *mMappingTree; + PictureView *mPictureView; +}; + +class PictureView : public QTreeView { + Q_OBJECT + public: + explicit PictureView(QWidget *parent = 0); + + public slots: + void mappingChanged(int mapping); + void deletePics(); + + protected: + virtual void hideEvent(QHideEvent *); + virtual bool event(QEvent *e); + virtual void contextMenuEvent(QContextMenuEvent *e); + + private: + HoverWindow *mHoverWin; + QModelIndex mCurHover; + QSortFilterProxyModel *mProxy; + PicFilesModel *mModel; + int mCursorOffset; +}; + +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; } + + //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<QPersistentModelIndex> &files); + + public slots: + void populate(); + + private: + QSqlDatabase mDb; + QSqlQuery *mPopulateQ; + QSqlQuery *mDeleteFileQ; + int mMappingId; +}; + +#endif // PICTURESWIDGET_H |