summaryrefslogtreecommitdiff
authorleseb <leseb>2002-06-10 20:24:06 (UTC)
committer leseb <leseb>2002-06-10 20:24:06 (UTC)
commit743296b2abaa9278ce7b83ebde55fbf2c198e218 (patch) (unidiff)
tree22776ec0e2921fc36a61c9522e8a105e7a3eba13
parent4e125ad47285d36a4be02e8b20b6fa36e387c1bc (diff)
downloadopie-743296b2abaa9278ce7b83ebde55fbf2c198e218.zip
opie-743296b2abaa9278ce7b83ebde55fbf2c198e218.tar.gz
opie-743296b2abaa9278ce7b83ebde55fbf2c198e218.tar.bz2
Thumbnail view ready for page attributes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/drawpad/thumbnailview.cpp150
-rw-r--r--noncore/graphics/drawpad/thumbnailview.h31
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 @@
23#include <qapplication.h> 23#include <qapplication.h>
24#include <qheader.h>
25#include <qimage.h> 24#include <qimage.h>
@@ -29,4 +28,6 @@
29 28
30PageListViewItem::PageListViewItem(Page* page, QListView* parent) 29#define THUMBNAIL_SIZE 48
31 : QListViewItem(parent) 30
31PageListBoxItem::PageListBoxItem(Page* page, QListBox* parent)
32 : QListBoxItem(parent)
32{ 33{
@@ -36,4 +37,4 @@ PageListViewItem::PageListViewItem(Page* page, QListView* parent)
36 37
37 int previewWidth = 64; 38 int previewWidth = THUMBNAIL_SIZE;
38 int previewHeight = 64; 39 int previewHeight = THUMBNAIL_SIZE;
39 40
@@ -51,21 +52,77 @@ PageListViewItem::PageListViewItem(Page* page, QListView* parent)
51 float scale = (widthScale < heightScale ? widthScale : heightScale); 52 float scale = (widthScale < heightScale ? widthScale : heightScale);
52 QImage previewImage = image.smoothScale((int)(image.width() * scale) , (int)(image.height() * scale)); 53 QImage thumbnailImage = image.smoothScale((int)(image.width() * scale) , (int)(image.height() * scale));
54
55 m_thumbnail.convertFromImage(thumbnailImage);
53 56
54 QPixmap previewPixmap; 57 m_titleText = QObject::tr("Title:") + " -";
55 previewPixmap.convertFromImage(previewImage); 58 m_dimensionText = QObject::tr("Dimension:") + " " + QString::number(m_pPage->width())
59 + "x" + QString::number(m_pPage->height());
60 m_dateTimeText = QObject::tr("Date:") + " -";
56 61
57 QPixmap pixmap(64, 64); 62 QColor baseColor = parent->colorGroup().base();
63 int h, s, v;
64 baseColor.hsv(&h, &s, &v);
58 65
59 pixmap.fill(listView()->colorGroup().mid()); 66 if (v > 128) {
60 bitBlt(&pixmap, (pixmap.width() - previewPixmap.width()) / 2, 67 m_alternateColor = baseColor.dark(106);
61 (pixmap.height() - previewPixmap.height()) / 2, &previewPixmap); 68 } else if (baseColor != Qt::black) {
69 m_alternateColor = baseColor.light(110);
70 } else {
71 m_alternateColor = QColor(32, 32, 32);
72 }
73}
74
75PageListBoxItem::~PageListBoxItem()
76{
77}
78
79int PageListBoxItem::height(const QListBox*) const
80{
81 return QMAX(THUMBNAIL_SIZE + 4, QApplication::globalStrut().height());
82}
83
84int PageListBoxItem::width(const QListBox* lb) const
85{
86 QFontMetrics fontMetrics = lb->fontMetrics();
87 int maxtextLength = QMAX(fontMetrics.width(m_titleText),
88 QMAX(fontMetrics.width(m_dimensionText),
89 fontMetrics.width(m_dateTimeText)));
62 90
63 setPixmap(0, pixmap); 91 return QMAX(THUMBNAIL_SIZE + maxtextLength + 8, QApplication::globalStrut().width());
64} 92}
65 93
66PageListViewItem::~PageListViewItem() 94void PageListBoxItem::paint(QPainter *painter)
67{ 95{
96 QRect itemRect = listBox()->itemRect(this);
97
98 if (!selected() && (listBox()->index(this) % 2)) {
99 painter->fillRect(0, 0, itemRect.width(), itemRect.height(), m_alternateColor);
100 }
101
102 painter->drawPixmap(2 + (THUMBNAIL_SIZE - m_thumbnail.width()) / 2,
103 2 + (THUMBNAIL_SIZE - m_thumbnail.height()) / 2,
104 m_thumbnail);
105
106 QFont standardFont = painter->font();
107 QFont boldFont = painter->font();
108 boldFont.setBold(TRUE);
109
110 QFontMetrics fontMetrics = painter->fontMetrics();
111 QRect textRect(THUMBNAIL_SIZE + 6, 2,
112 itemRect.width() - THUMBNAIL_SIZE - 8,
113 itemRect.height() - 4);
114
115 painter->setFont(boldFont);
116 painter->drawText(textRect, Qt::AlignLeft | Qt::AlignTop, m_titleText);
117
118 painter->setFont(standardFont);
119 painter->drawText(textRect, Qt::AlignLeft | Qt::AlignVCenter, m_dimensionText);
120 painter->drawText(textRect, Qt::AlignLeft | Qt::AlignBottom, m_dateTimeText);
121
122 if (!selected() && !(listBox()->hasFocus() && listBox()->item(listBox()->currentItem()) == this)) {
123 painter->drawLine(0, itemRect.height() - 1, itemRect.width() - 1, itemRect.height() - 1);
124 }
68} 125}
69 126
70Page* PageListViewItem::page() const 127Page* PageListBoxItem::page() const
71{ 128{
@@ -74,4 +131,4 @@ Page* PageListViewItem::page() const
74 131
75PageListView::PageListView(DrawPadCanvas* drawPadCanvas, QWidget* parent, const char* name) 132PageListBox::PageListBox(DrawPadCanvas* drawPadCanvas, QWidget* parent, const char* name)
76 : QListView(parent, name) 133 : QListBox(parent, name)
77{ 134{
@@ -79,8 +136,3 @@ PageListView::PageListView(DrawPadCanvas* drawPadCanvas, QWidget* parent, const
79 136
80 header()->hide();
81 setVScrollBarMode(QScrollView::AlwaysOn); 137 setVScrollBarMode(QScrollView::AlwaysOn);
82 setAllColumnsShowFocus(true);
83
84 addColumn(tr("Thumbnail"));
85 addColumn(tr("Information"));
86 138
@@ -89,3 +141,3 @@ PageListView::PageListView(DrawPadCanvas* drawPadCanvas, QWidget* parent, const
89 141
90PageListView::~PageListView() 142PageListBox::~PageListBox()
91{ 143{
@@ -93,3 +145,3 @@ PageListView::~PageListView()
93 145
94void PageListView::updateView() 146void PageListBox::updateView()
95{ 147{
@@ -102,6 +154,5 @@ void PageListView::updateView()
102 for (; it.current(); ++it) { 154 for (; it.current(); ++it) {
103 new PageListViewItem(it.current(), this); 155 new PageListBoxItem(it.current(), this);
104 } 156 }
105 157
106 setSorting(0, false);
107 select(m_pDrawPadCanvas->currentPage()); 158 select(m_pDrawPadCanvas->currentPage());
@@ -110,17 +161,12 @@ void PageListView::updateView()
110 161
111void PageListView::resizeEvent(QResizeEvent* e) 162void PageListBox::select(Page* page)
112{ 163{
113 Q_UNUSED(e); 164 uint i = 0;
165 uint itemCount = count();
114 166
115 setColumnWidth(1, contentsRect().width() - columnWidth(0) - verticalScrollBar()->width()); 167 while (i < itemCount) {
116} 168 PageListBoxItem* currentItem = (PageListBoxItem*)item(i);
117
118void PageListView::select(Page* page)
119{
120 PageListViewItem* item = (PageListViewItem*)firstChild();
121 169
122 while (item) { 170 if (currentItem->page() == page) {
123 if (item->page() == page) { 171 setCurrentItem(currentItem);
124 setSelected(item, true);
125 ensureItemVisible(item);
126 break; 172 break;
@@ -128,3 +174,3 @@ void PageListView::select(Page* page)
128 174
129 item = (PageListViewItem*)(item->nextSibling()); 175 i++;
130 } 176 }
@@ -132,3 +178,3 @@ void PageListView::select(Page* page)
132 178
133Page* PageListView::selected() const 179Page* PageListBox::selected() const
134{ 180{
@@ -136,6 +182,6 @@ Page* PageListView::selected() const
136 182
137 PageListViewItem* item = (PageListViewItem*)selectedItem(); 183 PageListBoxItem* selectedItem = (PageListBoxItem*)item(currentItem());
138 184
139 if (item) { 185 if (selectedItem) {
140 page = item->page(); 186 page = selectedItem->page();
141 } else { 187 } else {
@@ -182,4 +228,4 @@ ThumbnailView::ThumbnailView(DrawPad* drawPad, DrawPadCanvas* drawPadCanvas, QWi
182 228
183 m_pPageListView = new PageListView(m_pDrawPadCanvas, this); 229 m_pPageListBox = new PageListBox(m_pDrawPadCanvas, this);
184 connect(m_pPageListView, SIGNAL(selectionChanged()), this, SLOT(changePage())); 230 connect(m_pPageListBox, SIGNAL(selectionChanged()), this, SLOT(changePage()));
185 231
@@ -196,3 +242,3 @@ ThumbnailView::ThumbnailView(DrawPad* drawPad, DrawPadCanvas* drawPadCanvas, QWi
196 mainLayout->addLayout(buttonLayout); 242 mainLayout->addLayout(buttonLayout);
197 mainLayout->addWidget(m_pPageListView); 243 mainLayout->addWidget(m_pPageListBox);
198 244
@@ -242,3 +288,3 @@ void ThumbnailView::newPage()
242 newPageDialog.selectedColor()); 288 newPageDialog.selectedColor());
243 m_pPageListView->updateView(); 289 m_pPageListBox->updateView();
244 updateView(); 290 updateView();
@@ -259,3 +305,3 @@ void ThumbnailView::clearPage()
259 m_pDrawPadCanvas->clearPage(); 305 m_pDrawPadCanvas->clearPage();
260 m_pPageListView->updateView(); 306 m_pPageListBox->updateView();
261 } 307 }
@@ -275,3 +321,3 @@ void ThumbnailView::deletePage()
275 m_pDrawPadCanvas->deletePage(); 321 m_pDrawPadCanvas->deletePage();
276 m_pPageListView->updateView(); 322 m_pPageListBox->updateView();
277 updateView(); 323 updateView();
@@ -283,3 +329,3 @@ void ThumbnailView::movePageUp()
283 m_pDrawPadCanvas->movePageUp(); 329 m_pDrawPadCanvas->movePageUp();
284 m_pPageListView->updateView(); 330 m_pPageListBox->updateView();
285 updateView(); 331 updateView();
@@ -290,3 +336,3 @@ void ThumbnailView::movePageDown()
290 m_pDrawPadCanvas->movePageDown(); 336 m_pDrawPadCanvas->movePageDown();
291 m_pPageListView->updateView(); 337 m_pPageListBox->updateView();
292 updateView(); 338 updateView();
@@ -296,3 +342,3 @@ void ThumbnailView::changePage()
296{ 342{
297 m_pDrawPadCanvas->selectPage(m_pPageListView->selected()); 343 m_pDrawPadCanvas->selectPage(m_pPageListBox->selected());
298 updateView(); 344 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 @@
16 16
17#include <qlistbox.h>
17#include <qwidget.h> 18#include <qwidget.h>
18#include <qlistview.h>
19 19
@@ -25,7 +25,11 @@ class QToolButton;
25 25
26class PageListViewItem : public QListViewItem 26class PageListBoxItem : public QListBoxItem
27{ 27{
28public: 28public:
29 PageListViewItem(Page* page, QListView* parent); 29 PageListBoxItem(Page* page, QListBox* parent);
30 ~PageListViewItem(); 30 ~PageListBoxItem();
31
32 int height(const QListBox* lb) const;
33 int width(const QListBox* lb) const;
34 void paint(QPainter *painter);
31 35
@@ -35,9 +39,17 @@ private:
35 Page* m_pPage; 39 Page* m_pPage;
40
41 QPixmap m_thumbnail;
42
43 QString m_titleText;
44 QString m_dimensionText;
45 QString m_dateTimeText;
46
47 QColor m_alternateColor;
36}; 48};
37 49
38class PageListView : public QListView 50class PageListBox : public QListBox
39{ 51{
40public: 52public:
41 PageListView(DrawPadCanvas* drawPadCanvas, QWidget* parent = 0, const char* name = 0); 53 PageListBox(DrawPadCanvas* drawPadCanvas, QWidget* parent = 0, const char* name = 0);
42 ~PageListView(); 54 ~PageListBox();
43 55
@@ -48,5 +60,2 @@ public:
48 60
49protected:
50 void resizeEvent(QResizeEvent* e);
51
52private: 61private:
@@ -85,3 +94,3 @@ private:
85 94
86 PageListView* m_pPageListView; 95 PageListBox* m_pPageListBox;
87}; 96};