summaryrefslogtreecommitdiff
path: root/noncore/graphics
authorleseb <leseb>2002-06-06 20:51:27 (UTC)
committer leseb <leseb>2002-06-06 20:51:27 (UTC)
commit43bde653ce03f4c5202860f4e23c7612144a38f0 (patch) (side-by-side diff)
treeaa89f01ade2667699e2d9ba69daabb9810e48c35 /noncore/graphics
parent38946b6ef966a154d979d7dd254cf463f6dadbe5 (diff)
downloadopie-43bde653ce03f4c5202860f4e23c7612144a38f0.zip
opie-43bde653ce03f4c5202860f4e23c7612144a38f0.tar.gz
opie-43bde653ce03f4c5202860f4e23c7612144a38f0.tar.bz2
New page class, thumbnail view draft
Diffstat (limited to 'noncore/graphics') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/drawpad/drawpad.cpp15
-rw-r--r--noncore/graphics/drawpad/drawpad.h1
-rw-r--r--noncore/graphics/drawpad/drawpad.pro4
-rw-r--r--noncore/graphics/drawpad/drawpadcanvas.cpp64
-rw-r--r--noncore/graphics/drawpad/drawpadcanvas.h11
-rw-r--r--noncore/graphics/drawpad/erasetool.cpp2
-rw-r--r--noncore/graphics/drawpad/filltool.cpp2
-rw-r--r--noncore/graphics/drawpad/page.cpp33
-rw-r--r--noncore/graphics/drawpad/page.h29
-rw-r--r--noncore/graphics/drawpad/pointtool.cpp2
-rw-r--r--noncore/graphics/drawpad/shapetool.cpp2
-rw-r--r--noncore/graphics/drawpad/texttool.cpp2
-rw-r--r--noncore/graphics/drawpad/thumbnailview.cpp121
-rw-r--r--noncore/graphics/drawpad/thumbnailview.h40
14 files changed, 285 insertions, 43 deletions
diff --git a/noncore/graphics/drawpad/drawpad.cpp b/noncore/graphics/drawpad/drawpad.cpp
index 74787e5..b325323 100644
--- a/noncore/graphics/drawpad/drawpad.cpp
+++ b/noncore/graphics/drawpad/drawpad.cpp
@@ -25,6 +25,7 @@
#include "pointtool.h"
#include "rectangletool.h"
#include "texttool.h"
+#include "thumbnailview.h"
#include <opie/colordialog.h>
#include <opie/colorpopupmenu.h>
@@ -78,6 +79,12 @@ DrawPad::DrawPad(QWidget* parent, const char* name)
connect(exportPageAction, SIGNAL(activated()), this, SLOT(exportPage()));
exportPageAction->addTo(toolsPopupMenu);
+ toolsPopupMenu->insertSeparator();
+
+ QAction* thumbnailViewAction = new QAction(tr("Thumbnail View"), tr("Thumbnail View..."), 0, this);
+ connect(thumbnailViewAction, SIGNAL(activated()), this, SLOT(thumbnailView()));
+ thumbnailViewAction->addTo(toolsPopupMenu);
+
menuBar->insertItem(tr("Tools"), toolsPopupMenu);
// init page toolbar
@@ -519,3 +526,11 @@ void DrawPad::exportPage()
exportDialog.selectedName(), exportDialog.selectedFormat());
}
}
+
+void DrawPad::thumbnailView()
+{
+ ThumbnailView thumbnailView(m_pDrawPadCanvas->pages(), this);
+
+ thumbnailView.showMaximized();
+ thumbnailView.exec();
+}
diff --git a/noncore/graphics/drawpad/drawpad.h b/noncore/graphics/drawpad/drawpad.h
index 0dcd5c9..b0b3666 100644
--- a/noncore/graphics/drawpad/drawpad.h
+++ b/noncore/graphics/drawpad/drawpad.h
@@ -59,6 +59,7 @@ private slots:
void importPage();
void exportPage();
+ void thumbnailView();
private:
DrawPadCanvas* m_pDrawPadCanvas;
diff --git a/noncore/graphics/drawpad/drawpad.pro b/noncore/graphics/drawpad/drawpad.pro
index 9360256..9a640d2 100644
--- a/noncore/graphics/drawpad/drawpad.pro
+++ b/noncore/graphics/drawpad/drawpad.pro
@@ -11,10 +11,12 @@ HEADERS = drawpad.h \
importdialog.h \
linetool.h \
newpagedialog.h \
+ page.h \
pointtool.h \
rectangletool.h \
shapetool.h \
texttool.h \
+ thumbnailview.h \
tool.h
SOURCES = drawpad.cpp \
drawpadcanvas.cpp \
@@ -28,10 +30,12 @@ SOURCES = drawpad.cpp \
linetool.cpp \
main.cpp \
newpagedialog.cpp \
+ page.cpp \
pointtool.cpp \
rectangletool.cpp \
shapetool.cpp \
texttool.cpp \
+ thumbnailview.cpp \
tool.cpp
INCLUDEPATH += $(OPIEDIR)/include \
$(QTDIR)/src/3rdparty/zlib
diff --git a/noncore/graphics/drawpad/drawpadcanvas.cpp b/noncore/graphics/drawpad/drawpadcanvas.cpp
index 9f1e50b..79bef35 100644
--- a/noncore/graphics/drawpad/drawpadcanvas.cpp
+++ b/noncore/graphics/drawpad/drawpadcanvas.cpp
@@ -15,6 +15,7 @@
#include "drawpad.h"
#include "newpagedialog.h"
+#include "page.h"
#include "tool.h"
#include <qpe/applnk.h>
@@ -25,7 +26,6 @@
#include <qimage.h>
#include <qmessagebox.h>
#include <qpainter.h>
-#include <qpixmap.h>
#include <qtextcodec.h>
#include <qtextstream.h>
#include <qxml.h>
@@ -38,7 +38,7 @@ public:
DrawPadCanvasXmlHandler();
~DrawPadCanvasXmlHandler();
- QList<QPixmap> pixmaps();
+ QList<Page> pages();
bool startElement(const QString& namespaceURI, const QString& localName,
const QString& qName, const QXmlAttributes& atts);
@@ -55,7 +55,7 @@ private:
State m_state;
ulong m_dataLenght;
QString m_dataFormat;
- QList<QPixmap> m_pixmaps;
+ QList<Page> m_pages;
};
DrawPadCanvasXmlHandler::DrawPadCanvasXmlHandler()
@@ -67,9 +67,9 @@ DrawPadCanvasXmlHandler::~DrawPadCanvasXmlHandler()
{
}
-QList<QPixmap> DrawPadCanvasXmlHandler::pixmaps()
+QList<Page> DrawPadCanvasXmlHandler::pages()
{
- return m_pixmaps;
+ return m_pages;
}
bool DrawPadCanvasXmlHandler::startElement(const QString& namespaceURI, const QString& localName,
@@ -147,9 +147,9 @@ bool DrawPadCanvasXmlHandler::characters(const QString& ch)
image.loadFromData((const uchar*)byteArray.data(), m_dataLenght, m_dataFormat);
}
- QPixmap* pixmap = new QPixmap(image.width(), image.height());
- pixmap->convertFromImage(image);
- m_pixmaps.append(pixmap);
+ Page* page = new Page(image.width(), image.height());
+ page->convertFromImage(image);
+ m_pages.append(page);
}
return true;
@@ -181,15 +181,15 @@ void DrawPadCanvas::load(QIODevice* ioDevice)
xmlSimpleReader.setContentHandler(&drawPadCanvasXmlHandler);
xmlSimpleReader.parse(xmlInputSource);
- m_pages = drawPadCanvasXmlHandler.pixmaps();
+ m_pages = drawPadCanvasXmlHandler.pages();
if (m_pages.isEmpty()) {
- m_pages.append(new QPixmap(contentsRect().size()));
+ m_pages.append(new Page(contentsRect().size()));
m_pages.current()->fill(Qt::white);
}
m_pageBackups.clear();
- m_pageBackups.append(new QPixmap(*(m_pages.current())));
+ m_pageBackups.append(new Page(*(m_pages.current())));
resizeContents(m_pages.current()->width(), m_pages.current()->height());
viewport()->update();
@@ -200,11 +200,11 @@ void DrawPadCanvas::load(QIODevice* ioDevice)
void DrawPadCanvas::initialPage()
{
- m_pages.append(new QPixmap(236, 232));
+ m_pages.append(new Page(236, 232));
m_pages.current()->fill(Qt::white);
m_pageBackups.clear();
- m_pageBackups.append(new QPixmap(*(m_pages.current())));
+ m_pageBackups.append(new Page(*(m_pages.current())));
resizeContents(m_pages.current()->width(), m_pages.current()->height());
viewport()->update();
@@ -221,7 +221,7 @@ void DrawPadCanvas::save(QIODevice* ioDevice)
textStream << "<drawpad>" << endl;
textStream << " <images>" << endl;
- QListIterator<QPixmap> bufferIterator(m_pages);
+ QListIterator<Page> bufferIterator(m_pages);
for (bufferIterator.toFirst(); bufferIterator.current() != 0; ++bufferIterator) {
textStream << " <image>" << endl;
@@ -256,13 +256,13 @@ void DrawPadCanvas::save(QIODevice* ioDevice)
void DrawPadCanvas::importPage(const QString& fileName)
{
- QPixmap* importedPixmap = new QPixmap();
+ Page* importedPage = new Page();
- importedPixmap->load(fileName);
- m_pages.insert(m_pages.at() + 1, importedPixmap);
+ importedPage->load(fileName);
+ m_pages.insert(m_pages.at() + 1, importedPage);
m_pageBackups.clear();
- m_pageBackups.append(new QPixmap(*(m_pages.current())));
+ m_pageBackups.append(new Page(*(m_pages.current())));
resizeContents(m_pages.current()->width(), m_pages.current()->height());
viewport()->update();
@@ -308,12 +308,12 @@ void DrawPadCanvas::exportPage(uint fromPage, uint toPage, const QString& name,c
}
}
-QPixmap* DrawPadCanvas::currentPage()
+Page* DrawPadCanvas::currentPage()
{
return m_pages.current();
}
-QList<QPixmap> DrawPadCanvas::pages()
+QList<Page> DrawPadCanvas::pages()
{
return m_pages;
}
@@ -339,7 +339,7 @@ void DrawPadCanvas::backupPage()
m_pageBackups.removeFirst();
}
- m_pageBackups.append(new QPixmap(*(m_pages.current())));
+ m_pageBackups.append(new Page(*(m_pages.current())));
emit pageBackupsChanged();
}
@@ -357,11 +357,11 @@ void DrawPadCanvas::deleteAll()
if (messageBox.exec() == QMessageBox::Yes) {
m_pages.clear();
- m_pages.append(new QPixmap(contentsRect().size()));
+ m_pages.append(new Page(contentsRect().size()));
m_pages.current()->fill(Qt::white);
m_pageBackups.clear();
- m_pageBackups.append(new QPixmap(*(m_pages.current())));
+ m_pageBackups.append(new Page(*(m_pages.current())));
resizeContents(m_pages.current()->width(), m_pages.current()->height());
viewport()->update();
@@ -379,12 +379,12 @@ void DrawPadCanvas::newPage()
m_pDrawPad->brush().color(), this);
if (newPageDialog.exec() == QDialog::Accepted) {
- m_pages.insert(m_pages.at() + 1, new QPixmap(newPageDialog.selectedWidth(),
- newPageDialog.selectedHeight()));
+ m_pages.insert(m_pages.at() + 1, new Page(newPageDialog.selectedWidth(),
+ newPageDialog.selectedHeight()));
m_pages.current()->fill(newPageDialog.selectedColor());
m_pageBackups.clear();
- m_pageBackups.append(new QPixmap(*(m_pages.current())));
+ m_pageBackups.append(new Page(*(m_pages.current())));
resizeContents(m_pages.current()->width(), m_pages.current()->height());
viewport()->update();
@@ -425,12 +425,12 @@ void DrawPadCanvas::deletePage()
m_pages.remove(m_pages.current());
if (m_pages.isEmpty()) {
- m_pages.append(new QPixmap(contentsRect().size()));
+ m_pages.append(new Page(contentsRect().size()));
m_pages.current()->fill(Qt::white);
}
m_pageBackups.clear();
- m_pageBackups.append(new QPixmap(*(m_pages.current())));
+ m_pageBackups.append(new Page(*(m_pages.current())));
resizeContents(m_pages.current()->width(), m_pages.current()->height());
viewport()->update();
@@ -482,7 +482,7 @@ void DrawPadCanvas::goFirstPage()
{
m_pages.first();
m_pageBackups.clear();
- m_pageBackups.append(new QPixmap(*(m_pages.current())));
+ m_pageBackups.append(new Page(*(m_pages.current())));
resizeContents(m_pages.current()->width(), m_pages.current()->height());
viewport()->update();
@@ -495,7 +495,7 @@ void DrawPadCanvas::goPreviousPage()
{
m_pages.prev();
m_pageBackups.clear();
- m_pageBackups.append(new QPixmap(*(m_pages.current())));
+ m_pageBackups.append(new Page(*(m_pages.current())));
resizeContents(m_pages.current()->width(), m_pages.current()->height());
viewport()->update();
@@ -508,7 +508,7 @@ void DrawPadCanvas::goNextPage()
{
m_pages.next();
m_pageBackups.clear();
- m_pageBackups.append(new QPixmap(*(m_pages.current())));
+ m_pageBackups.append(new Page(*(m_pages.current())));
resizeContents(m_pages.current()->width(), m_pages.current()->height());
viewport()->update();
@@ -521,7 +521,7 @@ void DrawPadCanvas::goLastPage()
{
m_pages.last();
m_pageBackups.clear();
- m_pageBackups.append(new QPixmap(*(m_pages.current())));
+ m_pageBackups.append(new Page(*(m_pages.current())));
resizeContents(m_pages.current()->width(), m_pages.current()->height());
viewport()->update();
diff --git a/noncore/graphics/drawpad/drawpadcanvas.h b/noncore/graphics/drawpad/drawpadcanvas.h
index e05ce8a..47763f9 100644
--- a/noncore/graphics/drawpad/drawpadcanvas.h
+++ b/noncore/graphics/drawpad/drawpadcanvas.h
@@ -20,8 +20,7 @@
#include <qpointarray.h>
class DrawPad;
-
-class QPixmap;
+class Page;
class DrawPadCanvas : public QScrollView
{
@@ -43,8 +42,8 @@ public:
bool goPreviousPageEnabled();
bool goNextPageEnabled();
- QPixmap* currentPage();
- QList<QPixmap> pages();
+ Page* currentPage();
+ QList<Page> pages();
uint pagePosition();
uint pageCount();
@@ -76,8 +75,8 @@ protected:
private:
DrawPad* m_pDrawPad;
- QList<QPixmap> m_pages;
- QList<QPixmap> m_pageBackups;
+ QList<Page> m_pages;
+ QList<Page> m_pageBackups;
};
#endif // DRAWPADCANVAS_H
diff --git a/noncore/graphics/drawpad/erasetool.cpp b/noncore/graphics/drawpad/erasetool.cpp
index 828994b..f77e038 100644
--- a/noncore/graphics/drawpad/erasetool.cpp
+++ b/noncore/graphics/drawpad/erasetool.cpp
@@ -15,9 +15,9 @@
#include "drawpad.h"
#include "drawpadcanvas.h"
+#include "page.h"
#include <qpainter.h>
-#include <qpixmap.h>
EraseTool::EraseTool(DrawPad* drawPad, DrawPadCanvas* drawPadCanvas)
: Tool(drawPad, drawPadCanvas)
diff --git a/noncore/graphics/drawpad/filltool.cpp b/noncore/graphics/drawpad/filltool.cpp
index 004da02..d323cc2 100644
--- a/noncore/graphics/drawpad/filltool.cpp
+++ b/noncore/graphics/drawpad/filltool.cpp
@@ -15,9 +15,9 @@
#include "drawpad.h"
#include "drawpadcanvas.h"
+#include "page.h"
#include <qimage.h>
-#include <qpixmap.h>
FillTool::FillTool(DrawPad* drawPad, DrawPadCanvas* drawPadCanvas)
: Tool(drawPad, drawPadCanvas)
diff --git a/noncore/graphics/drawpad/page.cpp b/noncore/graphics/drawpad/page.cpp
new file mode 100644
index 0000000..35ec0e0
--- a/dev/null
+++ b/noncore/graphics/drawpad/page.cpp
@@ -0,0 +1,33 @@
+/***************************************************************************
+ * *
+ * DrawPad - a drawing program for Opie Environment *
+ * *
+ * (C) 2002 by S. Prud'homme <prudhomme@laposte.net> *
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "page.h"
+
+Page::Page()
+ : QPixmap()
+{
+}
+
+Page::Page(int w, int h)
+ : QPixmap(w, h)
+{
+}
+
+Page::Page(const QSize& size)
+ : QPixmap(size)
+{
+}
+
+Page::~Page()
+{
+}
diff --git a/noncore/graphics/drawpad/page.h b/noncore/graphics/drawpad/page.h
new file mode 100644
index 0000000..888f552
--- a/dev/null
+++ b/noncore/graphics/drawpad/page.h
@@ -0,0 +1,29 @@
+/***************************************************************************
+ * *
+ * DrawPad - a drawing program for Opie Environment *
+ * *
+ * (C) 2002 by S. Prud'homme <prudhomme@laposte.net> *
+ * *
+ * 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 PAGE_H
+#define PAGE_H
+
+#include <qpixmap.h>
+
+class Page : public QPixmap
+{
+public:
+ Page();
+ Page(int w, int h);
+ Page(const QSize& size);
+
+ ~Page();
+};
+
+#endif // PAGE_H
diff --git a/noncore/graphics/drawpad/pointtool.cpp b/noncore/graphics/drawpad/pointtool.cpp
index e281284..656044b 100644
--- a/noncore/graphics/drawpad/pointtool.cpp
+++ b/noncore/graphics/drawpad/pointtool.cpp
@@ -15,9 +15,9 @@
#include "drawpad.h"
#include "drawpadcanvas.h"
+#include "page.h"
#include <qpainter.h>
-#include <qpixmap.h>
PointTool::PointTool(DrawPad* drawPad, DrawPadCanvas* drawPadCanvas)
: Tool(drawPad, drawPadCanvas)
diff --git a/noncore/graphics/drawpad/shapetool.cpp b/noncore/graphics/drawpad/shapetool.cpp
index bc5d9c0..8870a78 100644
--- a/noncore/graphics/drawpad/shapetool.cpp
+++ b/noncore/graphics/drawpad/shapetool.cpp
@@ -15,9 +15,9 @@
#include "drawpad.h"
#include "drawpadcanvas.h"
+#include "page.h"
#include <qpainter.h>
-#include <qpixmap.h>
ShapeTool::ShapeTool(DrawPad* drawPad, DrawPadCanvas* drawPadCanvas)
: Tool(drawPad, drawPadCanvas)
diff --git a/noncore/graphics/drawpad/texttool.cpp b/noncore/graphics/drawpad/texttool.cpp
index 37b4801..34c8a76 100644
--- a/noncore/graphics/drawpad/texttool.cpp
+++ b/noncore/graphics/drawpad/texttool.cpp
@@ -15,11 +15,11 @@
#include "drawpad.h"
#include "drawpadcanvas.h"
+#include "page.h"
#include <qlayout.h>
#include <qlineedit.h>
#include <qpainter.h>
-#include <qpixmap.h>
TextToolDialog::TextToolDialog(QWidget* parent, const char* name)
: QDialog(parent, name, true)
diff --git a/noncore/graphics/drawpad/thumbnailview.cpp b/noncore/graphics/drawpad/thumbnailview.cpp
new file mode 100644
index 0000000..10ade90
--- a/dev/null
+++ b/noncore/graphics/drawpad/thumbnailview.cpp
@@ -0,0 +1,121 @@
+/***************************************************************************
+ * *
+ * DrawPad - a drawing program for Opie Environment *
+ * *
+ * (C) 2002 by S. Prud'homme <prudhomme@laposte.net> *
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "thumbnailview.h"
+
+#include "page.h"
+
+#include <qpe/resource.h>
+
+#include <qheader.h>
+#include <qimage.h>
+#include <qlayout.h>
+#include <qlistview.h>
+#include <qtoolbutton.h>
+
+ThumbnailView::ThumbnailView(QList<Page> pages, QWidget* parent, const char* name)
+ : QDialog(parent, name, true)
+{
+ setCaption(tr("Thumbnail"));
+
+ QToolButton* newPageButton = new QToolButton(this);
+ newPageButton->setIconSet(Resource::loadIconSet("new"));
+ newPageButton->setAutoRaise(true);
+
+ QToolButton* clearPageButton = new QToolButton(this);
+ clearPageButton->setIconSet(Resource::loadIconSet("drawpad/clear"));
+ clearPageButton->setAutoRaise(true);
+
+ QToolButton* deletePageButton = new QToolButton(this);
+ deletePageButton->setIconSet(Resource::loadIconSet("trash"));
+ deletePageButton->setAutoRaise(true);
+
+ QToolButton* movePageUpButton = new QToolButton(this);
+ movePageUpButton->setIconSet(Resource::loadIconSet("up"));
+ movePageUpButton->setAutoRaise(true);
+
+ QToolButton* movePageDownButton = new QToolButton(this);
+ movePageDownButton->setIconSet(Resource::loadIconSet("down"));
+ movePageDownButton->setAutoRaise(true);
+
+ m_pListView = new QListView(this);
+
+ m_pListView->header()->hide();
+ m_pListView->setAllColumnsShowFocus(true);
+
+ m_pListView->addColumn(tr("Thumbnail"));
+ m_pListView->addColumn(tr("Information"));
+
+ m_pListView->setColumnAlignment(0, Qt::AlignHCenter | Qt::AlignVCenter);
+ m_pListView->setColumnAlignment(1, Qt::AlignTop);
+
+ QListIterator<Page> iterator(pages);
+
+ for (; iterator.current(); ++iterator) {
+ QImage image = iterator.current()->convertToImage();
+
+ int previewWidth = 64;
+ int previewHeight = 64;
+
+ float widthScale = 1.0;
+ float heightScale = 1.0;
+
+ if (previewWidth < image.width()) {
+ widthScale = (float)previewWidth / float(image.width());
+ }
+
+ if (previewHeight < image.height()) {
+ heightScale = (float)previewHeight / float(image.height());
+ }
+
+ float scale = (widthScale < heightScale ? widthScale : heightScale);
+ QImage previewImage = image.smoothScale((int)(image.width() * scale) , (int)(image.height() * scale));
+
+ QPixmap previewPixmap;
+ previewPixmap.convertFromImage(previewImage);
+
+ QPixmap pixmap(64, 64);
+
+ pixmap.fill(colorGroup().mid());
+ bitBlt(&pixmap, (pixmap.width() - previewPixmap.width()) / 2,
+ (pixmap.height() - previewPixmap.height()) / 2, &previewPixmap);
+
+ QListViewItem* item = new QListViewItem(m_pListView);
+ item->setPixmap(0, pixmap);
+ }
+
+ QVBoxLayout* mainLayout = new QVBoxLayout(this, 4, 4);
+ QHBoxLayout* buttonLayout = new QHBoxLayout(0);
+
+ buttonLayout->addWidget(newPageButton);
+ buttonLayout->addWidget(clearPageButton);
+ buttonLayout->addWidget(deletePageButton);
+ buttonLayout->addStretch();
+ buttonLayout->addWidget(movePageUpButton);
+ buttonLayout->addWidget(movePageDownButton);
+
+ mainLayout->addLayout(buttonLayout);
+ mainLayout->addWidget(m_pListView);
+}
+
+ThumbnailView::~ThumbnailView()
+{
+}
+
+void ThumbnailView::resizeEvent(QResizeEvent* e)
+{
+ QDialog::resizeEvent(e);
+
+ m_pListView->setColumnWidth(1, m_pListView->contentsRect().width() - m_pListView->columnWidth(0)
+ - m_pListView->verticalScrollBar()->width());
+}
diff --git a/noncore/graphics/drawpad/thumbnailview.h b/noncore/graphics/drawpad/thumbnailview.h
new file mode 100644
index 0000000..c74730d
--- a/dev/null
+++ b/noncore/graphics/drawpad/thumbnailview.h
@@ -0,0 +1,40 @@
+/***************************************************************************
+ * *
+ * DrawPad - a drawing program for Opie Environment *
+ * *
+ * (C) 2002 by S. Prud'homme <prudhomme@laposte.net> *
+ * *
+ * 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 THUMBNAILVIEW_H
+#define THUMBNAILVIEW_H
+
+#include <qdialog.h>
+
+#include <qlist.h>
+
+class QListView;
+
+class Page;
+
+class ThumbnailView : public QDialog
+{
+ Q_OBJECT
+
+public:
+ ThumbnailView(QList<Page> pages, QWidget* parent = 0, const char* name = 0);
+ ~ThumbnailView();
+
+protected:
+ void resizeEvent(QResizeEvent* e);
+
+private:
+ QListView* m_pListView;
+};
+
+#endif // THUMBNAILVIEW_H