44
46
BarDescriptorEditorAbstractPanelWidget::BarDescriptorEditorAbstractPanelWidget(QWidget *parent) :
50
void BarDescriptorEditorAbstractPanelWidget::setComboBoxBlocked(QComboBox *comboBox, int index)
52
bool blocked = comboBox->blockSignals(true);
53
comboBox->setCurrentIndex(index);
54
comboBox->blockSignals(blocked);
57
void BarDescriptorEditorAbstractPanelWidget::setCheckBoxBlocked(QCheckBox *checkBox, bool checked)
59
bool blocked = checkBox->blockSignals(true);
60
checkBox->setChecked(checked);
61
checkBox->blockSignals(blocked);
64
void BarDescriptorEditorAbstractPanelWidget::setLineEditBlocked(QLineEdit *lineEdit, const QString &text)
66
bool blocked = lineEdit->blockSignals(true);
67
lineEdit->setText(text);
68
lineEdit->blockSignals(blocked);
71
void BarDescriptorEditorAbstractPanelWidget::setTextEditBlocked(QTextEdit *textEdit, const QString &text)
73
bool blocked = textEdit->blockSignals(true);
74
textEdit->setPlainText(text);
75
textEdit->blockSignals(blocked);
78
void BarDescriptorEditorAbstractPanelWidget::setPathChooserBlocked(Utils::PathChooser *pathChooser, const QString &path)
80
bool blocked = pathChooser->blockSignals(true);
81
pathChooser->setPath(path);
82
pathChooser->blockSignals(blocked);
49
m_signalMapper = new QSignalMapper(this);
50
connect(m_signalMapper, SIGNAL(mapped(int)), this, SLOT(handleSignalMapped(int)));
53
void BarDescriptorEditorAbstractPanelWidget::setValue(BarDescriptorDocument::Tag tag, const QVariant &value)
55
if (m_blockedSignals.contains(tag))
58
blockSignalMapping(tag);
59
updateWidgetValue(tag, value);
60
unblockSignalMapping(tag);
63
void BarDescriptorEditorAbstractPanelWidget::addSignalMapping(BarDescriptorDocument::Tag tag, QObject *object, const char *signal)
65
m_signalMapper->setMapping(object, tag);
66
connect(object, signal, m_signalMapper, SLOT(map()));
69
void BarDescriptorEditorAbstractPanelWidget::blockSignalMapping(BarDescriptorDocument::Tag tag)
71
m_blockedSignals.prepend(tag);
74
void BarDescriptorEditorAbstractPanelWidget::unblockSignalMapping(BarDescriptorDocument::Tag tag)
76
BarDescriptorDocument::Tag removedTag = m_blockedSignals.takeFirst();
77
QTC_CHECK(removedTag == tag);
80
void BarDescriptorEditorAbstractPanelWidget::updateWidgetValue(BarDescriptorDocument::Tag tag, const QVariant &value)
82
QObject *object = m_signalMapper->mapping(static_cast<int>(tag));
86
if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(object))
87
lineEdit->setText(value.toString());
88
else if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(object))
89
textEdit->setPlainText(value.toString());
90
else if (Utils::PathChooser *pathChooser = qobject_cast<Utils::PathChooser *>(object))
91
pathChooser->setPath(value.toString());
92
else if (QComboBox *comboBox = qobject_cast<QComboBox *>(object))
93
comboBox->setCurrentIndex(comboBox->findData(value.toString()));
94
else if (QCheckBox *checkBox = qobject_cast<QCheckBox *>(object))
95
checkBox->setChecked(value.toBool());
100
void BarDescriptorEditorAbstractPanelWidget::emitChanged(BarDescriptorDocument::Tag tag)
102
QObject *sender = m_signalMapper->mapping(tag);
107
if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(sender))
108
emit changed(tag, lineEdit->text());
109
else if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(sender))
110
emit changed(tag, textEdit->toPlainText());
111
else if (Utils::PathChooser *pathChooser = qobject_cast<Utils::PathChooser *>(sender))
112
emit changed(tag, pathChooser->path());
113
else if (QComboBox *comboBox = qobject_cast<QComboBox *>(sender))
114
emit changed(tag, comboBox->itemData(comboBox->currentIndex()));
115
else if (QCheckBox *checkBox = qobject_cast<QCheckBox *>(sender))
116
emit changed(tag, checkBox->isChecked());
121
void BarDescriptorEditorAbstractPanelWidget::handleSignalMapped(int id)
123
BarDescriptorDocument::Tag tag = static_cast<BarDescriptorDocument::Tag>(id);
125
if (m_blockedSignals.contains(tag))
128
blockSignalMapping(tag);
130
unblockSignalMapping(tag);