2 * This file is a part of QComicBook.
4 * Copyright (C) 2005-2006 Pawel Stolowski <yogin@linux.bydg.org>
6 * QComicBook is free software; you can redestribute it and/or modify it
7 * under terms of GNU General Public License by Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY. See GPL for more details.
13 #include "thumbnailsview.h"
14 #include "iconviewthumbnail.h"
15 #include "thumbnail.h"
16 #include <qiconview.h>
20 #include <qptrvector.h>
21 #include <qpopupmenu.h>
23 using namespace QComicBook;
25 ThumbnailsView::ThumbnailsView(QWidget *parent): QIconView(parent), selected(NULL), numpages(0)
27 setFocusPolicy(QWidget::NoFocus);
28 setItemsMovable(false);
29 arrangeItemsInGrid(true);
31 setResizeMode(QIconView::Adjust);
32 setMaxItemWidth(Thumbnail::maxWidth());
36 menu = new QPopupMenu(this);
37 menu->insertItem(tr("Go to"), this, SLOT(goToPageAction()));
40 // create "empty page" image
41 emptypage = new QPixmap(Thumbnail::maxWidth(), Thumbnail::maxHeight());
42 emptypage->fill(Qt::white);
43 QPainter paint(emptypage);
44 QPen pen(Qt::black, 3);
46 paint.drawRect(0, 0, Thumbnail::maxWidth(), Thumbnail::maxHeight());
48 connect(this, SIGNAL(doubleClicked(QIconViewItem *)), this, SLOT(onDoubleClick(QIconViewItem *)));
49 connect(this, SIGNAL(contextMenuRequested(QIconViewItem *, const QPoint&)), this, SLOT(showContextMenu(QIconViewItem *, const QPoint&)));
52 ThumbnailsView::~ThumbnailsView()
57 void ThumbnailsView::onDoubleClick(QIconViewItem *item)
59 emit requestedPage(dynamic_cast<ThumbnailItem *>(item)->page(), false);
62 void ThumbnailsView::setPages(int pages)
66 icons.resize(numpages = pages);
67 for (int i=0; i<numpages; i++)
68 icons.insert(i, new IconViewThumbnail(this, i, *emptypage));
70 //setArrangement(visibleWidth() > visibleHeight() ? QIconView::LeftToRight : QIconView::TopToBottom);
73 void ThumbnailsView::setPage(int n, const QImage &img)
75 if (n < icons.count())
77 IconViewThumbnail *th = icons[n];
83 void ThumbnailsView::setPage(const Thumbnail &t)
85 setPage(t.page(), t.image());
88 void ThumbnailsView::clear()
96 void ThumbnailsView::scrollToPage(int n)
98 if (n < icons.count())
100 IconViewThumbnail *th = icons[n];
101 setSelected(th, true);
103 ensureVisible(th->x(), th->y());
107 void ThumbnailsView::showContextMenu(QIconViewItem *item, const QPoint &p)
116 void ThumbnailsView::goToPageAction()
119 onDoubleClick(selected);
122 bool ThumbnailsView::isLoaded(int n) const
124 return (n < icons.count()) ? icons[n]->isLoaded() : false;