summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (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
@@ -26,4 +26,5 @@
#include "rectangletool.h"
#include "texttool.h"
+#include "thumbnailview.h"
#include <opie/colordialog.h>
@@ -79,4 +80,10 @@ DrawPad::DrawPad(QWidget* parent, const char* name)
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);
@@ -520,2 +527,10 @@ void DrawPad::exportPage()
}
}
+
+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
@@ -60,4 +60,5 @@ private slots:
void importPage();
void exportPage();
+ void thumbnailView();
private:
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
@@ -12,8 +12,10 @@ HEADERS = drawpad.h \
linetool.h \
newpagedialog.h \
+ page.h \
pointtool.h \
rectangletool.h \
shapetool.h \
texttool.h \
+ thumbnailview.h \
tool.h
SOURCES = drawpad.cpp \
@@ -29,8 +31,10 @@ SOURCES = drawpad.cpp \
main.cpp \
newpagedialog.cpp \
+ page.cpp \
pointtool.cpp \
rectangletool.cpp \
shapetool.cpp \
texttool.cpp \
+ thumbnailview.cpp \
tool.cpp
INCLUDEPATH += $(OPIEDIR)/include \
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
@@ -16,4 +16,5 @@
#include "drawpad.h"
#include "newpagedialog.h"
+#include "page.h"
#include "tool.h"
@@ -26,5 +27,4 @@
#include <qmessagebox.h>
#include <qpainter.h>
-#include <qpixmap.h>
#include <qtextcodec.h>
#include <qtextstream.h>
@@ -39,5 +39,5 @@ public:
~DrawPadCanvasXmlHandler();
- QList<QPixmap> pixmaps();
+ QList<Page> pages();
bool startElement(const QString& namespaceURI, const QString& localName,
@@ -56,5 +56,5 @@ private:
ulong m_dataLenght;
QString m_dataFormat;
- QList<QPixmap> m_pixmaps;
+ QList<Page> m_pages;
};
@@ -68,7 +68,7 @@ DrawPadCanvasXmlHandler::~DrawPadCanvasXmlHandler()
}
-QList<QPixmap> DrawPadCanvasXmlHandler::pixmaps()
+QList<Page> DrawPadCanvasXmlHandler::pages()
{
- return m_pixmaps;
+ return m_pages;
}
@@ -148,7 +148,7 @@ bool DrawPadCanvasXmlHandler::characters(const QString& ch)
}
- 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);
}
@@ -182,13 +182,13 @@ void DrawPadCanvas::load(QIODevice* ioDevice)
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());
@@ -201,9 +201,9 @@ 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());
@@ -222,5 +222,5 @@ void DrawPadCanvas::save(QIODevice* ioDevice)
textStream << " <images>" << endl;
- QListIterator<QPixmap> bufferIterator(m_pages);
+ QListIterator<Page> bufferIterator(m_pages);
for (bufferIterator.toFirst(); bufferIterator.current() != 0; ++bufferIterator) {
@@ -257,11 +257,11 @@ 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());
@@ -309,10 +309,10 @@ 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;
@@ -340,5 +340,5 @@ void DrawPadCanvas::backupPage()
}
- m_pageBackups.append(new QPixmap(*(m_pages.current())));
+ m_pageBackups.append(new Page(*(m_pages.current())));
emit pageBackupsChanged();
@@ -358,9 +358,9 @@ void DrawPadCanvas::deleteAll()
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());
@@ -380,10 +380,10 @@ void DrawPadCanvas::newPage()
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());
@@ -426,10 +426,10 @@ void DrawPadCanvas::deletePage()
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());
@@ -483,5 +483,5 @@ 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());
@@ -496,5 +496,5 @@ 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());
@@ -509,5 +509,5 @@ 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());
@@ -522,5 +522,5 @@ 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());
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
@@ -21,6 +21,5 @@
class DrawPad;
-
-class QPixmap;
+class Page;
class DrawPadCanvas : public QScrollView
@@ -44,6 +43,6 @@ public:
bool goNextPageEnabled();
- QPixmap* currentPage();
- QList<QPixmap> pages();
+ Page* currentPage();
+ QList<Page> pages();
uint pagePosition();
uint pageCount();
@@ -77,6 +76,6 @@ protected:
private:
DrawPad* m_pDrawPad;
- QList<QPixmap> m_pages;
- QList<QPixmap> m_pageBackups;
+ QList<Page> m_pages;
+ QList<Page> m_pageBackups;
};
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
@@ -16,7 +16,7 @@
#include "drawpad.h"
#include "drawpadcanvas.h"
+#include "page.h"
#include <qpainter.h>
-#include <qpixmap.h>
EraseTool::EraseTool(DrawPad* drawPad, DrawPadCanvas* 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
@@ -16,7 +16,7 @@
#include "drawpad.h"
#include "drawpadcanvas.h"
+#include "page.h"
#include <qimage.h>
-#include <qpixmap.h>
FillTool::FillTool(DrawPad* drawPad, DrawPadCanvas* 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
@@ -16,7 +16,7 @@
#include "drawpad.h"
#include "drawpadcanvas.h"
+#include "page.h"
#include <qpainter.h>
-#include <qpixmap.h>
PointTool::PointTool(DrawPad* drawPad, DrawPadCanvas* 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
@@ -16,7 +16,7 @@
#include "drawpad.h"
#include "drawpadcanvas.h"
+#include "page.h"
#include <qpainter.h>
-#include <qpixmap.h>
ShapeTool::ShapeTool(DrawPad* drawPad, DrawPadCanvas* 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
@@ -16,9 +16,9 @@
#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)
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