File indexing completed on 2024-04-21 04:41:50
0001 /* This file is part of the KDE project 0002 Copyright (C) 2015 by Adam Pigg <adam@piggz.co.uk> 0003 0004 This library is free software; you can redistribute it and/or 0005 modify it under the terms of the GNU Library General Public 0006 License as published by the Free Software Foundation; either 0007 version 2.1 of the License, or (at your option) any later version. 0008 0009 This library is distributed in the hope that it will be useful, 0010 but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0012 Library General Public License for more details. 0013 0014 You should have received a copy of the GNU Library General Public License 0015 along with this library; see the file COPYING.LIB. If not, write to 0016 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 0017 Boston, MA 02110-1301, USA. 0018 */ 0019 0020 #include "KReportPageSize.h" 0021 #include <QCoreApplication> 0022 #include <QPrinterInfo> 0023 0024 struct KReportPageSizeInfo { 0025 const char *name; 0026 QPageSize::PageSizeId pageSize; 0027 }; 0028 0029 static const KReportPageSizeInfo pageSizeInfo[] = { 0030 { "A3", QPageSize::A3}, 0031 { "A4", QPageSize::A4}, 0032 { "A5", QPageSize::A5}, 0033 { "Letter", QPageSize::Letter}, 0034 { "Legal", QPageSize::Legal}, 0035 { "Custom", QPageSize::Custom}, 0036 { "B6", QPageSize::B6}, 0037 { "B5", QPageSize::B5}, 0038 { "B4", QPageSize::B4}, 0039 { "Executive", QPageSize::Executive}, 0040 { "A0", QPageSize::A0}, 0041 { "A1", QPageSize::A1}, 0042 { "A2", QPageSize::A2}, 0043 { "A6", QPageSize::A6}, 0044 { "A7", QPageSize::A7}, 0045 { "A8", QPageSize::A8}, 0046 { "A9", QPageSize::A9}, 0047 { "B0", QPageSize::B0}, 0048 { "B1", QPageSize::B1}, 0049 { "B10", QPageSize::B10}, 0050 { "B2", QPageSize::B2}, 0051 { "B3", QPageSize::B3}, 0052 { "C5E", QPageSize::C5E}, 0053 { "Comm10", QPageSize::Comm10E}, 0054 { "DL", QPageSize::DLE}, 0055 { "Folio", QPageSize::Folio}, 0056 { "Ledger", QPageSize::Ledger}, 0057 { "Tabloid", QPageSize::Tabloid}, 0058 { "EnvelopeDL", QPageSize::EnvelopeDL}, 0059 { "EnvelopeC6", QPageSize::EnvelopeC6}, 0060 { "EnvelopeC65", QPageSize::EnvelopeC65}, 0061 { "EnvelopeC5", QPageSize::EnvelopeC5}, 0062 { "EnvelopeC4", QPageSize::EnvelopeC4}, 0063 { "EnvelopeMonarch", QPageSize::EnvelopeMonarch}, 0064 { "EnvelopePersonal", QPageSize::EnvelopePersonal}, 0065 { "Envelope9", QPageSize::Envelope9}, 0066 { "Envelope10", QPageSize::Envelope10}, 0067 { "Envelope11", QPageSize::Envelope11}, 0068 { "Envelope12", QPageSize::Envelope12}, 0069 { "Postcard", QPageSize::Postcard}, 0070 { "DoublePostcard", QPageSize::DoublePostcard}, 0071 0072 { "", QPageSize::LastPageSize} 0073 0074 }; 0075 0076 QStringList KReportPageSize::pageFormatNames() 0077 { 0078 QStringList lst; 0079 for (int i = 0; pageSizeInfo[i].pageSize != QPageSize::LastPageSize ;i++) { 0080 lst << QPageSize::name(pageSizeInfo[ i ].pageSize); 0081 } 0082 return lst; 0083 } 0084 0085 QStringList KReportPageSize::pageFormatKeys() 0086 { 0087 QStringList lst; 0088 for (int i = 0; pageSizeInfo[i].pageSize != QPageSize::LastPageSize ;i++) { 0089 lst << QLatin1String(pageSizeInfo[ i ].name); 0090 } 0091 return lst; 0092 } 0093 0094 QPageSize::PageSizeId KReportPageSize::defaultSize() 0095 { 0096 QPrinterInfo printerInfo = QPrinterInfo::defaultPrinter(); 0097 QPageSize size = printerInfo.defaultPageSize(); 0098 if (size.isValid()) { 0099 return size.id(); 0100 } 0101 return QPageSize::A4; 0102 } 0103 0104 QString KReportPageSize::pageSizeKey(QPageSize::PageSizeId id) 0105 { 0106 for (int i = 0; pageSizeInfo[i].pageSize != QPageSize::LastPageSize ;i++) { 0107 if (pageSizeInfo[i].pageSize == id) { 0108 return QLatin1String(pageSizeInfo[i].name); 0109 } 0110 } 0111 return QString(); 0112 } 0113 0114 QPageSize::PageSizeId KReportPageSize::pageSize(const QString &size) 0115 { 0116 for (int i = 0; pageSizeInfo[i].pageSize != QPageSize::LastPageSize ;i++) { 0117 if (QLatin1String(pageSizeInfo[i].name) == size) { 0118 return pageSizeInfo[i].pageSize; 0119 } 0120 } 0121 return defaultSize(); 0122 }