/
ThumbnailsPanel.cpp
126 lines (96 loc) · 3.11 KB
/
ThumbnailsPanel.cpp
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
#include "ThumbnailsPanel.h"
#include <qstring.h>
void ThumbnailsPanel::basicInit()
{
m_thumbnailsList.clear();
m_scrollArea = this;
m_widget = new QWidget(m_scrollArea);
m_scrollArea->setWidget(m_widget);
setWidgetResizable(true);
}
ThumbnailsPanel::ThumbnailsPanel(QWidget* parent) : CBScrollArea(parent)
{
basicInit();
m_attachedCB = 0;
}
ThumbnailsPanel::ThumbnailsPanel(ComicBook* attachedCB, NavigationManager *attachedNM, QWidget* parent) : CBScrollArea(parent)
{
basicInit();
setAttachedCB(attachedCB);
setAttachedNM(attachedNM);
//Construction de l'affichage des mignatures
refreshPanel(false);
}
void ThumbnailsPanel::resizeEvent(QResizeEvent *)
{
refreshPanel(false);
}
void ThumbnailsPanel::refreshPanel(bool rebuildLayout)
{
//Redimensionnement des thumbnails
m_attachedCB->computeThumbnail(std::min(m_scrollArea->width() - m_scrollArea->verticalScrollBar()->width() - 4, MAX_THUMBNAILS_WIDTH));
if(!rebuildLayout) return;
//Reconstruction du layout
//Déconnection des signaux
for(int i = 0 ; i < m_thumbnailsList.size() ; i++)
disconnect(m_thumbnailsList[i], SIGNAL(thumbnailClicked(int)), 0, 0);
m_thumbnailsList.clear();
//nouvelle liste de cellules
for(uint i = 1 ; i <= m_attachedCB->getNumberOfPages() ; i++){
m_thumbnailsList.append(new thumbnailCell(i, m_attachedCB->getPage(i-1)->getThumbnail(), this));
connect(m_thumbnailsList.last(), SIGNAL(thumbnailClicked(int)), m_attachedNM, SLOT(goToPage(int)));
}
//Vidage du layout
QLayoutItem* child;
while ((child = m_layout.takeAt(0)) != 0) {
delete child;
}
//remplissage du layout
for(int i = 0 ; i < m_thumbnailsList.size() ; i++)
m_layout.addWidget(m_thumbnailsList[i]);
m_layout.setMargin(0);
m_widget->setLayout(&m_layout);
}
//ThumbnailCell------------------------------------------------------------------
thumbnailCell::thumbnailCell(QWidget* parent) : QWidget(parent)
{
m_pageNb = 0;
m_pageThumbnail = 0;
m_pageNbText.clear();
m_pageNbText.setText("no page set");
m_pageNbText.setParent(this);
layoutThumbnail();
}
thumbnailCell::thumbnailCell(int pageNb, QLabel* pageThumbnail, QWidget* parent) : QWidget(parent)
{
setThumbnail(pageNb, pageThumbnail);
layoutThumbnail();
}
void thumbnailCell::setThumbnail(int pageNb, QLabel* pageThumbnail)
{
m_pageNb = pageNb;
m_pageThumbnail = pageThumbnail;
QString title;
title = "page " + QString::number(m_pageNb);
m_pageNbText.setText(title);
m_pageNbText.setParent(this);
}
void thumbnailCell::layoutThumbnail()
{
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(m_pageThumbnail);
layout->addWidget(&m_pageNbText);
layout->setAlignment(&m_pageNbText, Qt::AlignHCenter);
layout->setAlignment(m_pageThumbnail, Qt::AlignHCenter);
layout->setMargin(0);
setLayout(layout);
}
void thumbnailCell::emitPageNb()
{
emit thumbnailClicked(m_pageNb - 1);
}
void thumbnailCell::mousePressEvent(QMouseEvent* event)
{
if(event->button() == Qt::LeftButton)
emitPageNb();
}