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 }