From 43bde653ce03f4c5202860f4e23c7612144a38f0 Mon Sep 17 00:00:00 2001 From: leseb Date: Thu, 06 Jun 2002 20:51:27 +0000 Subject: New page class, thumbnail view draft --- (limited to 'noncore/graphics/drawpad/thumbnailview.cpp') 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 * + * * + * 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 + +#include +#include +#include +#include +#include + +ThumbnailView::ThumbnailView(QList 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 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()); +} -- cgit v0.9.0.2