void QuickInspectorWidget::itemModelDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles) { if (!roles.contains(QuickItemModelRole::ItemEvent)) return; for (int i = topLeft.row(); i <= bottomRight.row(); i++) { const QModelIndex index = ui->itemTreeView->model()->index(i, 0, topLeft.parent()); const auto state = index.data(RemoteModelRole::LoadingState).value<RemoteModelNodeState::NodeStates>(); if (state & RemoteModelNodeState::Empty || ~state & RemoteModelNodeState::Outdated) continue; QVariantAnimation *colorAnimation = new QVariantAnimation(this); QPersistentModelIndex persistentIndex(index); connect(colorAnimation, &QVariantAnimation::valueChanged, ui->itemTreeView->itemDelegate(), [persistentIndex, this](const QVariant &value) { qobject_cast<QuickItemDelegate *>(ui->itemTreeView->itemDelegate())->setTextColor(value, persistentIndex); }); colorAnimation->setStartValue(QColor(129, 0, 129)); colorAnimation->setEndValue(QColor(129, 0, 129, 0)); colorAnimation->setDuration(2000); colorAnimation->start(QAbstractAnimation::DeleteWhenStopped); } }
void QuickInspectorWidget::itemModelDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight) { for (int i = topLeft.row(); i <= bottomRight.row(); i++) { const QModelIndex index = ui->itemTreeView->model()->index(i, 0, topLeft.parent()); RemoteModel::NodeStates state = index.data(RemoteModel::LoadingState).value<RemoteModel::NodeStates>(); if (state & RemoteModel::Empty || ~state & RemoteModel::Outdated) { continue; } QVariantAnimation *colorAnimation = new QVariantAnimation(this); colorAnimation->setProperty("index", QVariant::fromValue(QPersistentModelIndex(index))); connect(colorAnimation, SIGNAL(valueChanged(QVariant)), ui->itemTreeView->itemDelegate(), SLOT(setTextColor(QVariant))); colorAnimation->setStartValue(QColor(129, 0, 129)); colorAnimation->setEndValue(QColor(129, 0, 129, 0)); colorAnimation->setDuration(2000); colorAnimation->start(QAbstractAnimation::DeleteWhenStopped); } }