1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
/*
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"
#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<int> 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<int> 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<int> mappingIds(const QList<QVariant> &fileIds);
//some data
Qt::ItemFlags flags(const QModelIndex &) const { return Qt::ItemIsEnabled | Qt::ItemIsSelectable; }
QVariant data(const QModelIndex &index, int role) const;
QList<QVariant> dataList(const QModelIndex &idx) const;
QList<QList<QVariant> > allFiles() const;
void removeFiles(const QList<QPersistentModelIndex> &files);
bool changeMappings(const QList<int> &fileIds, const QList<int> &mappingIds);
public slots:
void populate();
private:
QSqlDatabase mDb;
MappingTreeModel *mMappingTreeModel;
QString mPopulateQS;
QSqlQuery *mDeleteFileQ;
QSqlQuery *mDeleteMappingsQ;
QSqlQuery *mAddMappingsQ;
QString mCurMappingIdsQS;
QList<int> mMappingIds;
};
#endif // PICTURESWIDGET_H
|