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 <QListWidget>
9 #include <QStringList>
10 
11 #include "iconmanager.h"
12 #include "pagesize.h"
13 #include "prefsmanager.h"
14 #include "prefsstructs.h"
15 #include "scribusdoc.h"
16 #include "ui/prefs_pagesizes.h"
17 
18 
Prefs_PageSizes(QWidget * parent,ScribusDoc * doc)19 Prefs_PageSizes::Prefs_PageSizes(QWidget* parent, ScribusDoc* doc)
20 	: Prefs_Pane(parent)
21 {
22 	setupUi(this);
23 	languageChange();
24 
25 	m_caption = tr("Page Sizes");
26 	m_icon = "16/page-simple.png";
27 
28 	toActiveButton->setIcon(IconManager::instance().loadIcon("22/go-next.png"));
29 	fromActiveButton->setIcon(IconManager::instance().loadIcon("22/go-previous.png"));
30 	connect(toActiveButton, SIGNAL(clicked()), this, SLOT(moveToActive()));
31 	connect(fromActiveButton, SIGNAL(clicked()), this, SLOT(moveFromActive()));
32 }
33 
34 Prefs_PageSizes::~Prefs_PageSizes() = default;
35 
languageChange()36 void Prefs_PageSizes::languageChange()
37 {
38 }
39 
restoreDefaults(struct ApplicationPrefs * prefsData)40 void Prefs_PageSizes::restoreDefaults(struct ApplicationPrefs *prefsData)
41 {
42 	PageSize ps(prefsData->docSetupPrefs.pageSize);
43 	QStringList sizeList(ps.sizeList());
44 	QStringList activeSizeList(ps.activeSizeList());
45 	activeSizesListWidget->clear();
46 	availableSizesListWidget->clear();
47 
48 	for (int i = 0; i < activeSizeList.count(); ++i)
49 	{
50 		QListWidgetItem* lwi=new QListWidgetItem();
51 		PageSize ps2(activeSizeList.at(i));
52 		lwi->setText(ps2.nameTR());
53 		lwi->setToolTip(QString("%1 x %2 %3").arg(ps2.originalWidth()).arg(ps2.originalHeight()).arg(ps2.originalUnit()));
54 		activeSizesListWidget->addItem(lwi);
55 	}
56 
57 	for (int i = 0; i < sizeList.count(); ++i)
58 	{
59 		if (!activeSizeList.contains(sizeList.at(i)))
60 		{
61 			QListWidgetItem* lwi=new QListWidgetItem();
62 			PageSize ps2(sizeList.at(i));
63 			lwi->setText(ps2.nameTR());
64 			lwi->setToolTip(QString("%1 x %2 %3").arg(ps2.originalWidth()).arg(ps2.originalHeight()).arg(ps2.originalUnit()));
65 			availableSizesListWidget->addItem(lwi);
66 		}
67 	}
68 }
69 
saveGuiToPrefs(struct ApplicationPrefs * prefsData) const70 void Prefs_PageSizes::saveGuiToPrefs(struct ApplicationPrefs *prefsData) const
71 {
72 	QStringList newActivePageSizes;
73 	for (int i = 0; i < activeSizesListWidget->count(); ++i)
74 		newActivePageSizes << activeSizesListWidget->item(i)->text();
75 	PageSize ps(prefsData->docSetupPrefs.pageSize);
76 	prefsData->activePageSizes=ps.untransPageSizeList(newActivePageSizes);
77 }
78 
moveToActive()79 void Prefs_PageSizes::moveToActive()
80 {
81 	QList<QListWidgetItem *> si(availableSizesListWidget->selectedItems());
82 	for (int i = 0; i < si.count(); ++i)
83 	{
84 		QListWidgetItem *it=availableSizesListWidget->takeItem(availableSizesListWidget->row(si.at(i)));
85 		activeSizesListWidget->addItem(it);
86 	}
87 }
88 
moveFromActive()89 void Prefs_PageSizes::moveFromActive()
90 {
91 	QList<QListWidgetItem *> si(activeSizesListWidget->selectedItems());
92 	for (int i = 0; i < si.count(); ++i)
93 	{
94 		if (activeSizesListWidget->count()>1)
95 		{
96 			QListWidgetItem *it=activeSizesListWidget->takeItem(activeSizesListWidget->row(si.at(i)));
97 			availableSizesListWidget->addItem(it);
98 		}
99 	}
100 }
101 
102