author | leseb <leseb> | 2002-06-10 20:24:06 (UTC) |
---|---|---|
committer | leseb <leseb> | 2002-06-10 20:24:06 (UTC) |
commit | 743296b2abaa9278ce7b83ebde55fbf2c198e218 (patch) (side-by-side diff) | |
tree | 22776ec0e2921fc36a61c9522e8a105e7a3eba13 | |
parent | 4e125ad47285d36a4be02e8b20b6fa36e387c1bc (diff) | |
download | opie-743296b2abaa9278ce7b83ebde55fbf2c198e218.zip opie-743296b2abaa9278ce7b83ebde55fbf2c198e218.tar.gz opie-743296b2abaa9278ce7b83ebde55fbf2c198e218.tar.bz2 |
Thumbnail view ready for page attributes
-rw-r--r-- | noncore/graphics/drawpad/thumbnailview.cpp | 150 | ||||
-rw-r--r-- | noncore/graphics/drawpad/thumbnailview.h | 31 |
2 files changed, 118 insertions, 63 deletions
diff --git a/noncore/graphics/drawpad/thumbnailview.cpp b/noncore/graphics/drawpad/thumbnailview.cpp index 428e008..1eadc13 100644 --- a/noncore/graphics/drawpad/thumbnailview.cpp +++ b/noncore/graphics/drawpad/thumbnailview.cpp @@ -23,3 +23,2 @@ #include <qapplication.h> -#include <qheader.h> #include <qimage.h> @@ -29,4 +28,6 @@ -PageListViewItem::PageListViewItem(Page* page, QListView* parent) - : QListViewItem(parent) +#define THUMBNAIL_SIZE 48 + +PageListBoxItem::PageListBoxItem(Page* page, QListBox* parent) + : QListBoxItem(parent) { @@ -36,4 +37,4 @@ PageListViewItem::PageListViewItem(Page* page, QListView* parent) - int previewWidth = 64; - int previewHeight = 64; + int previewWidth = THUMBNAIL_SIZE; + int previewHeight = THUMBNAIL_SIZE; @@ -51,21 +52,77 @@ PageListViewItem::PageListViewItem(Page* page, QListView* parent) float scale = (widthScale < heightScale ? widthScale : heightScale); - QImage previewImage = image.smoothScale((int)(image.width() * scale) , (int)(image.height() * scale)); + QImage thumbnailImage = image.smoothScale((int)(image.width() * scale) , (int)(image.height() * scale)); + + m_thumbnail.convertFromImage(thumbnailImage); - QPixmap previewPixmap; - previewPixmap.convertFromImage(previewImage); + m_titleText = QObject::tr("Title:") + " -"; + m_dimensionText = QObject::tr("Dimension:") + " " + QString::number(m_pPage->width()) + + "x" + QString::number(m_pPage->height()); + m_dateTimeText = QObject::tr("Date:") + " -"; - QPixmap pixmap(64, 64); + QColor baseColor = parent->colorGroup().base(); + int h, s, v; + baseColor.hsv(&h, &s, &v); - pixmap.fill(listView()->colorGroup().mid()); - bitBlt(&pixmap, (pixmap.width() - previewPixmap.width()) / 2, - (pixmap.height() - previewPixmap.height()) / 2, &previewPixmap); + if (v > 128) { + m_alternateColor = baseColor.dark(106); + } else if (baseColor != Qt::black) { + m_alternateColor = baseColor.light(110); + } else { + m_alternateColor = QColor(32, 32, 32); + } +} + +PageListBoxItem::~PageListBoxItem() +{ +} + +int PageListBoxItem::height(const QListBox*) const +{ + return QMAX(THUMBNAIL_SIZE + 4, QApplication::globalStrut().height()); +} + +int PageListBoxItem::width(const QListBox* lb) const +{ + QFontMetrics fontMetrics = lb->fontMetrics(); + int maxtextLength = QMAX(fontMetrics.width(m_titleText), + QMAX(fontMetrics.width(m_dimensionText), + fontMetrics.width(m_dateTimeText))); - setPixmap(0, pixmap); + return QMAX(THUMBNAIL_SIZE + maxtextLength + 8, QApplication::globalStrut().width()); } -PageListViewItem::~PageListViewItem() +void PageListBoxItem::paint(QPainter *painter) { + QRect itemRect = listBox()->itemRect(this); + + if (!selected() && (listBox()->index(this) % 2)) { + painter->fillRect(0, 0, itemRect.width(), itemRect.height(), m_alternateColor); + } + + painter->drawPixmap(2 + (THUMBNAIL_SIZE - m_thumbnail.width()) / 2, + 2 + (THUMBNAIL_SIZE - m_thumbnail.height()) / 2, + m_thumbnail); + + QFont standardFont = painter->font(); + QFont boldFont = painter->font(); + boldFont.setBold(TRUE); + + QFontMetrics fontMetrics = painter->fontMetrics(); + QRect textRect(THUMBNAIL_SIZE + 6, 2, + itemRect.width() - THUMBNAIL_SIZE - 8, + itemRect.height() - 4); + + painter->setFont(boldFont); + painter->drawText(textRect, Qt::AlignLeft | Qt::AlignTop, m_titleText); + + painter->setFont(standardFont); + painter->drawText(textRect, Qt::AlignLeft | Qt::AlignVCenter, m_dimensionText); + painter->drawText(textRect, Qt::AlignLeft | Qt::AlignBottom, m_dateTimeText); + + if (!selected() && !(listBox()->hasFocus() && listBox()->item(listBox()->currentItem()) == this)) { + painter->drawLine(0, itemRect.height() - 1, itemRect.width() - 1, itemRect.height() - 1); + } } -Page* PageListViewItem::page() const +Page* PageListBoxItem::page() const { @@ -74,4 +131,4 @@ Page* PageListViewItem::page() const -PageListView::PageListView(DrawPadCanvas* drawPadCanvas, QWidget* parent, const char* name) - : QListView(parent, name) +PageListBox::PageListBox(DrawPadCanvas* drawPadCanvas, QWidget* parent, const char* name) + : QListBox(parent, name) { @@ -79,8 +136,3 @@ PageListView::PageListView(DrawPadCanvas* drawPadCanvas, QWidget* parent, const - header()->hide(); setVScrollBarMode(QScrollView::AlwaysOn); - setAllColumnsShowFocus(true); - - addColumn(tr("Thumbnail")); - addColumn(tr("Information")); @@ -89,3 +141,3 @@ PageListView::PageListView(DrawPadCanvas* drawPadCanvas, QWidget* parent, const -PageListView::~PageListView() +PageListBox::~PageListBox() { @@ -93,3 +145,3 @@ PageListView::~PageListView() -void PageListView::updateView() +void PageListBox::updateView() { @@ -102,6 +154,5 @@ void PageListView::updateView() for (; it.current(); ++it) { - new PageListViewItem(it.current(), this); + new PageListBoxItem(it.current(), this); } - setSorting(0, false); select(m_pDrawPadCanvas->currentPage()); @@ -110,17 +161,12 @@ void PageListView::updateView() -void PageListView::resizeEvent(QResizeEvent* e) +void PageListBox::select(Page* page) { - Q_UNUSED(e); + uint i = 0; + uint itemCount = count(); - setColumnWidth(1, contentsRect().width() - columnWidth(0) - verticalScrollBar()->width()); -} - -void PageListView::select(Page* page) -{ - PageListViewItem* item = (PageListViewItem*)firstChild(); + while (i < itemCount) { + PageListBoxItem* currentItem = (PageListBoxItem*)item(i); - while (item) { - if (item->page() == page) { - setSelected(item, true); - ensureItemVisible(item); + if (currentItem->page() == page) { + setCurrentItem(currentItem); break; @@ -128,3 +174,3 @@ void PageListView::select(Page* page) - item = (PageListViewItem*)(item->nextSibling()); + i++; } @@ -132,3 +178,3 @@ void PageListView::select(Page* page) -Page* PageListView::selected() const +Page* PageListBox::selected() const { @@ -136,6 +182,6 @@ Page* PageListView::selected() const - PageListViewItem* item = (PageListViewItem*)selectedItem(); + PageListBoxItem* selectedItem = (PageListBoxItem*)item(currentItem()); - if (item) { - page = item->page(); + if (selectedItem) { + page = selectedItem->page(); } else { @@ -182,4 +228,4 @@ ThumbnailView::ThumbnailView(DrawPad* drawPad, DrawPadCanvas* drawPadCanvas, QWi - m_pPageListView = new PageListView(m_pDrawPadCanvas, this); - connect(m_pPageListView, SIGNAL(selectionChanged()), this, SLOT(changePage())); + m_pPageListBox = new PageListBox(m_pDrawPadCanvas, this); + connect(m_pPageListBox, SIGNAL(selectionChanged()), this, SLOT(changePage())); @@ -196,3 +242,3 @@ ThumbnailView::ThumbnailView(DrawPad* drawPad, DrawPadCanvas* drawPadCanvas, QWi mainLayout->addLayout(buttonLayout); - mainLayout->addWidget(m_pPageListView); + mainLayout->addWidget(m_pPageListBox); @@ -242,3 +288,3 @@ void ThumbnailView::newPage() newPageDialog.selectedColor()); - m_pPageListView->updateView(); + m_pPageListBox->updateView(); updateView(); @@ -259,3 +305,3 @@ void ThumbnailView::clearPage() m_pDrawPadCanvas->clearPage(); - m_pPageListView->updateView(); + m_pPageListBox->updateView(); } @@ -275,3 +321,3 @@ void ThumbnailView::deletePage() m_pDrawPadCanvas->deletePage(); - m_pPageListView->updateView(); + m_pPageListBox->updateView(); updateView(); @@ -283,3 +329,3 @@ void ThumbnailView::movePageUp() m_pDrawPadCanvas->movePageUp(); - m_pPageListView->updateView(); + m_pPageListBox->updateView(); updateView(); @@ -290,3 +336,3 @@ void ThumbnailView::movePageDown() m_pDrawPadCanvas->movePageDown(); - m_pPageListView->updateView(); + m_pPageListBox->updateView(); updateView(); @@ -296,3 +342,3 @@ void ThumbnailView::changePage() { - m_pDrawPadCanvas->selectPage(m_pPageListView->selected()); + m_pDrawPadCanvas->selectPage(m_pPageListBox->selected()); updateView(); diff --git a/noncore/graphics/drawpad/thumbnailview.h b/noncore/graphics/drawpad/thumbnailview.h index eb748fa..88c3b27 100644 --- a/noncore/graphics/drawpad/thumbnailview.h +++ b/noncore/graphics/drawpad/thumbnailview.h @@ -16,4 +16,4 @@ +#include <qlistbox.h> #include <qwidget.h> -#include <qlistview.h> @@ -25,7 +25,11 @@ class QToolButton; -class PageListViewItem : public QListViewItem +class PageListBoxItem : public QListBoxItem { public: - PageListViewItem(Page* page, QListView* parent); - ~PageListViewItem(); + PageListBoxItem(Page* page, QListBox* parent); + ~PageListBoxItem(); + + int height(const QListBox* lb) const; + int width(const QListBox* lb) const; + void paint(QPainter *painter); @@ -35,9 +39,17 @@ private: Page* m_pPage; + + QPixmap m_thumbnail; + + QString m_titleText; + QString m_dimensionText; + QString m_dateTimeText; + + QColor m_alternateColor; }; -class PageListView : public QListView +class PageListBox : public QListBox { public: - PageListView(DrawPadCanvas* drawPadCanvas, QWidget* parent = 0, const char* name = 0); - ~PageListView(); + PageListBox(DrawPadCanvas* drawPadCanvas, QWidget* parent = 0, const char* name = 0); + ~PageListBox(); @@ -48,5 +60,2 @@ public: -protected: - void resizeEvent(QResizeEvent* e); - private: @@ -85,3 +94,3 @@ private: - PageListView* m_pPageListView; + PageListBox* m_pPageListBox; }; |