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 "smreplacedia.h"
9 
10 #include <QLabel>
11 #include <QComboBox>
12 
13 
SMRowWidget(const QString & toBeDeleted,const QStringList & replaceOptions,QWidget * parent)14 SMRowWidget::SMRowWidget(const QString &toBeDeleted, const QStringList& replaceOptions, QWidget *parent)
15 : QWidget(parent)
16 {
17 	layout = new QHBoxLayout(this);
18 	layout->setContentsMargins(0, 0, 0, 0);
19 	layout->setSpacing(6);
20 	deleteLabel = new QLabel(toBeDeleted, this);
21 	layout->addWidget(deleteLabel);
22 	optionsCombo = new QComboBox(this);
23 	optionsCombo->addItem( tr("No Style"));
24 	optionsCombo->addItems(replaceOptions);
25 	layout->addWidget(optionsCombo);
26 }
27 
toBeDeleted()28 QString SMRowWidget::toBeDeleted()
29 {
30 	return deleteLabel->text();
31 }
32 
replaceWith()33 QString SMRowWidget::replaceWith()
34 {
35 	return optionsCombo->currentIndex() == 0 ? "" : optionsCombo->currentText();
36 }
37 
~SMRowWidget()38 SMRowWidget::~SMRowWidget()
39 {
40 	delete deleteLabel;
41 	delete optionsCombo;
42 	delete layout;
43 }
44 
45 /*************************************************************************/
46 /*************************************************************************/
47 
SMReplaceDia(const QStringList & toBeDeleted,const QStringList & replaceOptions,QWidget * parent)48 SMReplaceDia::SMReplaceDia(const QStringList &toBeDeleted, const QStringList &replaceOptions, QWidget *parent) : QDialog(parent)
49 {
50 	setupUi(this);
51 
52 	QStringList options;
53 
54 	for (int i = 0; i < replaceOptions.count(); ++i)
55 	{
56 		if (!toBeDeleted.contains(replaceOptions[i]))
57 			options << replaceOptions[i];
58 	}
59 
60 	layout = new QVBoxLayout(mainFrame);
61 	layout->setContentsMargins(0, 0, 0, 0);
62 	layout->setSpacing(6);
63 	headerLayout = new QHBoxLayout();
64 	headerLayout->setContentsMargins(0, 0, 0, 0);
65 	deleteHeader = new QLabel("<b>" + tr("Remove") + "</b>", mainFrame);
66 	optionsHeader = new QLabel("<b>" + tr("Replace with") + "</b>", mainFrame);
67 	headerLayout->addWidget(deleteHeader);
68 	headerLayout->addWidget(optionsHeader);
69 	layout->addLayout(headerLayout);
70 
71 	for (int i = 0; i < toBeDeleted.count(); ++i)
72 	{
73 		SMRowWidget *tmp = new SMRowWidget(toBeDeleted[i], options, mainFrame);
74 		layout->addWidget(tmp);
75 		rowWidgets.append(tmp);
76 	}
77 	layout->addStretch(10);
78 }
79 
items()80 QList<RemoveItem> SMReplaceDia::items()
81 {
82 	QList<RemoveItem> tmp;
83 	for (int i = 0; i < rowWidgets.count(); ++i)
84 	{
85 		QString s1 = rowWidgets.at(i)->toBeDeleted();
86 		QString s2 = rowWidgets.at(i)->replaceWith();
87 		tmp.append(RemoveItem(s1, s2));
88 	}
89 	return tmp;
90 }
91 
~SMReplaceDia()92 SMReplaceDia::~SMReplaceDia()
93 {
94 	while (!rowWidgets.isEmpty())
95 		delete rowWidgets.takeFirst();
96 	delete optionsHeader;
97 	delete deleteHeader;
98 	delete headerLayout;
99 	delete layout;
100 }
101