File indexing completed on 2024-04-28 04:32:04

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 }