/*
For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.
*/

#ifndef SMREPLACEDIA_H
#define SMREPLACEDIA_H

#include <QMap>

#include "ui_smreplacedia.h"
#include "styleitem.h"

class QLabel;
class QComboBox;


/*! \brief Style Manager: replace one style with another one.
A "current--new row" widget.
*/
class SMRowWidget : public QWidget
{
	Q_OBJECT
	public:
		SMRowWidget(StyleItem *styleType, const QString &toBeDeleted, const QStringList& replaceOptions, QWidget *parent);
		~SMRowWidget();

		StyleItem* styleType() const;
		QString toBeDeleted() const;
		QString replaceWith() const;

	private:
		StyleItem   *m_styleType { nullptr };
		QHBoxLayout *layout { nullptr };
		QLabel      *deleteLabel { nullptr };
		QComboBox   *optionsCombo { nullptr };
};


/*! \brief Style Manager replace dialog
*/
class SMReplaceDia : public QDialog, Ui::SMReplaceDia
{
	Q_OBJECT
	public:
		SMReplaceDia(const QMap<StyleItem*, QStringList> &toBeDeleted, const QMap<StyleItem*, QStringList> &replaceOptions, QWidget *parent);
		~SMReplaceDia();

		QMap<StyleItem*, QList<RemoveItem> > items() const;

	private:
		QVBoxLayout *layout;
		QHBoxLayout *headerLayout;
		QLabel      *deleteHeader;
		QLabel      *optionsHeader;
		QList<QLabel*>       typeHeaders;
		QList<SMRowWidget*>  rowWidgets;
};

#endif
