57
57
connect(m_ui->addAsset, SIGNAL(clicked()), this, SLOT(addNewAsset()));
58
58
connect(m_ui->removeAsset, SIGNAL(clicked()), this, SLOT(removeSelectedAsset()));
59
59
connect(m_assetsModel, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(updateEntryCheckState(QStandardItem*)));
61
addSignalMapping(BarDescriptorDocument::asset, m_assetsModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)));
62
addSignalMapping(BarDescriptorDocument::asset, m_assetsModel, SIGNAL(rowsInserted(QModelIndex,int,int)));
63
addSignalMapping(BarDescriptorDocument::asset, m_assetsModel, SIGNAL(rowsRemoved(QModelIndex,int,int)));
63
66
BarDescriptorEditorAssetsWidget::~BarDescriptorEditorAssetsWidget()
68
71
void BarDescriptorEditorAssetsWidget::clear()
70
// We can't just block signals, as the view depends on them
71
disconnectAssetsModel();
73
blockSignalMapping(BarDescriptorDocument::asset);
72
74
m_assetsModel->removeRows(0, m_assetsModel->rowCount());
76
void BarDescriptorEditorAssetsWidget::addAsset(const BarDescriptorAsset &asset)
78
disconnectAssetsModel();
79
addAssetInternal(asset);
83
QList<BarDescriptorAsset> BarDescriptorEditorAssetsWidget::assets() const
85
QList<BarDescriptorAsset> result;
87
for (int i = 0; i < m_assetsModel->rowCount(); ++i) {
88
BarDescriptorAsset asset;
89
asset.source = m_assetsModel->item(i, 0)->text();
90
asset.destination = m_assetsModel->item(i, 1)->text();
91
asset.entry = m_assetsModel->item(i, 2)->checkState() == Qt::Checked;
75
unblockSignalMapping(BarDescriptorDocument::asset);
98
78
QStandardItemModel *BarDescriptorEditorAssetsWidget::assetsModel() const
100
80
return m_assetsModel;
83
void BarDescriptorEditorAssetsWidget::updateWidgetValue(BarDescriptorDocument::Tag tag, const QVariant &value)
85
if (tag != BarDescriptorDocument::asset) {
86
BarDescriptorEditorAbstractPanelWidget::updateWidgetValue(tag, value);
91
BarDescriptorAssetList assets = value.value<BarDescriptorAssetList>();
92
foreach (const BarDescriptorAsset asset, assets)
103
96
void BarDescriptorEditorAssetsWidget::addAsset(const QString &fullPath)
105
98
if (fullPath.isEmpty())
157
150
connect(m_assetsModel, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(updateEntryCheckState(QStandardItem*)));
160
void BarDescriptorEditorAssetsWidget::connectAssetsModel()
162
connect(m_assetsModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SIGNAL(changed()));
163
connect(m_assetsModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SIGNAL(changed()));
164
connect(m_assetsModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SIGNAL(changed()));
167
void BarDescriptorEditorAssetsWidget::disconnectAssetsModel()
169
disconnect(m_assetsModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SIGNAL(changed()));
170
disconnect(m_assetsModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SIGNAL(changed()));
171
disconnect(m_assetsModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SIGNAL(changed()));
174
void BarDescriptorEditorAssetsWidget::addAssetInternal(const BarDescriptorAsset &asset)
153
void BarDescriptorEditorAssetsWidget::emitChanged(BarDescriptorDocument::Tag tag)
155
if (tag != BarDescriptorDocument::asset) {
156
BarDescriptorEditorAbstractPanelWidget::emitChanged(tag);
160
BarDescriptorAssetList result;
161
for (int i = 0; i < m_assetsModel->rowCount(); ++i) {
162
BarDescriptorAsset asset;
163
asset.source = m_assetsModel->item(i, 0)->text();
164
asset.destination = m_assetsModel->item(i, 1)->text();
165
asset.entry = m_assetsModel->item(i, 2)->checkState() == Qt::Checked;
166
result.append(asset);
170
var.setValue(result);
171
emit changed(tag, var);
174
void BarDescriptorEditorAssetsWidget::addAsset(const BarDescriptorAsset &asset)
176
176
const QString path = asset.source;
177
177
const QString dest = asset.destination;