templateviewergrid.cpp
2.14 KB
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
#include "templateviewergrid.h"
using namespace br;
/**** TEMPLATE_VIEWER_GRID ****/
/*** PUBLIC ***/
TemplateViewerGrid::TemplateViewerGrid(QWidget *parent)
: QWidget(parent)
{
setLayout(&gridLayout);
setFiles(FileList(16));
setFiles(FileList(1));
}
/*** PUBLIC SLOTS ***/
void TemplateViewerGrid::setFiles(const FileList &files)
{
const int size = std::max(1, (int)ceil(sqrt((float)files.size())));
while (templateViewers.size() < size*size) {
templateViewers.append(QSharedPointer<TemplateViewer>(new TemplateViewer()));
connect(templateViewers.last().data(), SIGNAL(newInput(br::File)), this, SIGNAL(newInput(br::File)));
connect(templateViewers.last().data(), SIGNAL(newInput(QImage)), this, SIGNAL(newInput(QImage)));
connect(templateViewers.last().data(), SIGNAL(newMousePoint(QPointF)), this, SIGNAL(newMousePoint(QPointF)));
connect(templateViewers.last().data(), SIGNAL(selectedInput(br::File)), this, SIGNAL(selectedInput(br::File)));
}
{ // Clear layout
QLayoutItem *child;
while ((child = gridLayout.takeAt(0)) != 0)
child->widget()->setVisible(false);
}
for (int i=0; i<templateViewers.size(); i++) {
if (i < size*size) {
gridLayout.addWidget(templateViewers[i].data(), i/size, i%size, 1, 1);
templateViewers[i]->setVisible(true);
}
if (i < files.size()) {
templateViewers[i]->setFile(files[i]);
} else {
templateViewers[i]->setDefaultText("<b>"+ (size > 1 ? QString() : QString("Drag Photo or Folder Here")) +"</b>");
templateViewers[i]->setFile(QString());
}
templateViewers[i]->setEditable(files.size() == 1);
}
}
void TemplateViewerGrid::setFormat(const QString &format)
{
foreach (const QSharedPointer<TemplateViewer> &templateViewer, templateViewers)
templateViewer->setFormat(format);
}
void TemplateViewerGrid::setMousePoint(const QPointF &mousePoint)
{
foreach (const QSharedPointer<TemplateViewer> &templateViewer, templateViewers)
templateViewer->setMousePoint(mousePoint);
}
#include "moc_templateviewergrid.cpp"