File indexing completed on 2024-05-05 08:41:18
0001 /* 0002 * Copyright (C) 2010-2015 by Stephen Allewell 0003 * steve.allewell@gmail.com 0004 * 0005 * This program is free software; you can redistribute it and/or modify 0006 * it under the terms of the GNU General Public License as published by 0007 * the Free Software Foundation; either version 2 of the License, or 0008 * (at your option) any later version. 0009 */ 0010 0011 #include "PagePreviewListWidgetItem.h" 0012 0013 #include <algorithm> 0014 0015 #include <QPainter> 0016 #include <QPixmap> 0017 0018 #include <KLocalizedString> 0019 0020 #include "Page.h" 0021 #include "PaperSizes.h" 0022 0023 PagePreviewListWidgetItem::PagePreviewListWidgetItem(Document *document, Page *page) 0024 : QListWidgetItem(nullptr, QListWidgetItem::UserType) 0025 , m_document(document) 0026 , m_page(page) 0027 { 0028 generatePreviewIcon(); 0029 } 0030 0031 QPageSize PagePreviewListWidgetItem::pageSize() const 0032 { 0033 return m_page->pageSize(); 0034 } 0035 0036 QPageLayout::Orientation PagePreviewListWidgetItem::orientation() const 0037 { 0038 return m_page->orientation(); 0039 } 0040 0041 int PagePreviewListWidgetItem::paperWidth() const 0042 { 0043 return m_paperWidth; 0044 } 0045 0046 int PagePreviewListWidgetItem::paperHeight() const 0047 { 0048 return m_paperHeight; 0049 } 0050 0051 void PagePreviewListWidgetItem::setPageSize(QPageSize pageSize) 0052 { 0053 m_page->setPageSize(pageSize); 0054 generatePreviewIcon(); 0055 } 0056 0057 void PagePreviewListWidgetItem::setOrientation(QPageLayout::Orientation orientation) 0058 { 0059 m_page->setOrientation(orientation); 0060 generatePreviewIcon(); 0061 } 0062 0063 Page *PagePreviewListWidgetItem::page() const 0064 { 0065 return m_page; 0066 } 0067 0068 void PagePreviewListWidgetItem::generatePreviewIcon() 0069 { 0070 m_paperWidth = PageSizes::width(m_page->pageSize().id(), m_page->orientation()); 0071 m_paperHeight = PageSizes::height(m_page->pageSize().id(), m_page->orientation()); 0072 0073 QPixmap pixmap(m_paperWidth, m_paperHeight); 0074 pixmap.fill(Qt::white); 0075 0076 QPainter painter; 0077 painter.begin(&pixmap); 0078 painter.setRenderHint(QPainter::Antialiasing, true); 0079 m_page->render(m_document, &painter); 0080 painter.end(); 0081 setIcon(pixmap); 0082 }