1 /*
2 For general Scribus (>=1.3.2) copyright and licensing information please refer
3 to the COPYING file provided with the program. Following this notice may exist
4 a copyright and/or license notice that predates the release of Scribus 1.3.2
5 for which a new license (GPL+exception) is in place.
6 */
7 
8 #include "pdfversioncombo.h"
9 #include "pdfversionmodel.h"
10 
PdfVersionCombo(QWidget * parent)11 PdfVersionCombo::PdfVersionCombo(QWidget* parent) : QComboBox(parent)
12 {
13 	m_isPdfXEnabled = false;
14 	m_pdfVersionModel = new PdfVersionModel(this);
15 
16 	setEditable(false);
17 	setModel(m_pdfVersionModel);
18 }
19 
~PdfVersionCombo()20 PdfVersionCombo::~PdfVersionCombo()
21 {
22 	if (m_pdfVersionModel)
23 	{
24 		delete m_pdfVersionModel;
25 		m_pdfVersionModel = nullptr;
26 	}
27 }
28 
version() const29 PDFVersion PdfVersionCombo::version() const
30 {
31 	int curIndex = currentIndex();
32 
33 	if (curIndex == PdfVersionModel::ItemPDF_13)
34 		return PDFVersion::PDF_13;
35 	if (curIndex == PdfVersionModel::ItemPDF_14)
36 		return PDFVersion::PDF_14;
37 	if (curIndex == PdfVersionModel::ItemPDF_15)
38 		return PDFVersion::PDF_15;
39 	if (curIndex == PdfVersionModel::ItemPDF_16)
40 		return PDFVersion::PDF_16;
41 	if (curIndex == PdfVersionModel::ItemPDFX_1a)
42 		return PDFVersion::PDF_X1a;
43 	if (curIndex == PdfVersionModel::ItemPDFX_3)
44 		return PDFVersion::PDF_X3;
45 	if (curIndex == PdfVersionModel::ItemPDFX_4)
46 		return PDFVersion::PDF_X4;
47 	return PDFVersion::PDF_14;
48 }
49 
versionIs(const PDFVersion & version) const50 bool PdfVersionCombo::versionIs(const PDFVersion& version) const
51 {
52 	int curIndex = currentIndex();
53 
54 	if (version == PDFVersion::PDF_13)
55 		return (curIndex == PdfVersionModel::ItemPDF_13);
56 	if (version == PDFVersion::PDF_14)
57 		return (curIndex == PdfVersionModel::ItemPDF_14);
58 	if (version == PDFVersion::PDF_15)
59 		return (curIndex == PdfVersionModel::ItemPDF_15);
60 	if (version == PDFVersion::PDF_16)
61 		return (curIndex == PdfVersionModel::ItemPDF_16);
62 	if (version == PDFVersion::PDF_X1a)
63 		return (curIndex == PdfVersionModel::ItemPDFX_1a);
64 	if (version == PDFVersion::PDF_X3)
65 		return (curIndex == PdfVersionModel::ItemPDFX_3);
66 	if (version == PDFVersion::PDF_X4)
67 		return (curIndex == PdfVersionModel::ItemPDFX_4);
68 	return false;
69 }
70 
versionIsPDFX() const71 bool PdfVersionCombo::versionIsPDFX() const
72 {
73 	int curIndex = currentIndex();
74 	if (curIndex == PdfVersionModel::ItemPDFX_1a)
75 		return true;
76 	if (curIndex == PdfVersionModel::ItemPDFX_3)
77 		return true;
78 	if (curIndex == PdfVersionModel::ItemPDFX_4)
79 		return true;
80 	return false;
81 }
82 
setVersion(const PDFVersion & version)83 void PdfVersionCombo::setVersion(const PDFVersion& version)
84 {
85 	if ((version == PDFVersion::PDF_X1a) && !m_isPdfXEnabled)
86 	{
87 		setCurrentIndex(PdfVersionModel::ItemPDF_13);
88 		return;
89 	}
90 	if ((version == PDFVersion::PDF_X3) && !m_isPdfXEnabled)
91 	{
92 		setCurrentIndex(PdfVersionModel::ItemPDF_13);
93 		return;
94 	}
95 	if ((version == PDFVersion::PDF_X4) && !m_isPdfXEnabled)
96 	{
97 		setCurrentIndex(PdfVersionModel::ItemPDF_15);
98 		return;
99 	}
100 
101 	if (version == PDFVersion::PDF_13)
102 		setCurrentIndex(PdfVersionModel::ItemPDF_13);
103 	else if (version == PDFVersion::PDF_14)
104 		setCurrentIndex(PdfVersionModel::ItemPDF_14);
105 	else if  (version == PDFVersion::PDF_15)
106 		setCurrentIndex(PdfVersionModel::ItemPDF_15);
107 	else if  (version == PDFVersion::PDF_16)
108 		setCurrentIndex(PdfVersionModel::ItemPDF_16);
109 	else if  (version == PDFVersion::PDF_X1a)
110 		setCurrentIndex(PdfVersionModel::ItemPDFX_1a);
111 	else if  (version == PDFVersion::PDF_X3)
112 		setCurrentIndex(PdfVersionModel::ItemPDFX_3);
113 	else if  (version == PDFVersion::PDF_X4)
114 		setCurrentIndex(PdfVersionModel::ItemPDFX_4);
115 }
116 
setPDFXEnabled(bool enabled)117 void PdfVersionCombo::setPDFXEnabled(bool enabled)
118 {
119 	if (m_isPdfXEnabled == enabled)
120 		return;
121 	m_isPdfXEnabled = enabled;
122 
123 	PDFVersion oldVersion = version();
124 	if (!enabled)
125 	{
126 		if ((oldVersion == PDFVersion::PDF_X1a) && !enabled)
127 			setCurrentIndex((int) PdfVersionModel::ItemPDF_13);
128 		if ((oldVersion == PDFVersion::PDF_X3) && !enabled)
129 			setCurrentIndex((int) PdfVersionModel::ItemPDF_13);
130 		if ((oldVersion == PDFVersion::PDF_X4) && !enabled)
131 			setCurrentIndex((int) PdfVersionModel::ItemPDF_15);
132 	}
133 	m_pdfVersionModel->setPdfXEnabled(enabled);
134 }
135