void QxtItemDelegatePrivate::paintProgress(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { QVariant min = index.data(QxtItemDelegate::ProgressMinimumRole); QVariant max = index.data(QxtItemDelegate::ProgressMaximumRole); QStyleOptionProgressBar opt; opt.minimum = (min.isValid() && min.canConvert(QVariant::Int)) ? min.toInt() : 0; opt.maximum = (max.isValid() && max.canConvert(QVariant::Int)) ? max.toInt() : 100; opt.progress = index.data(QxtItemDelegate::ProgressValueRole).toInt(); opt.rect = option.rect; opt.textVisible = textVisible; opt.text = progressFormat.arg(opt.progress); QApplication::style()->drawControl(QStyle::CE_ProgressBar, &opt, painter, 0); QWidget* viewport = dynamic_cast<QWidget*>(painter->device()); if (viewport) { if (opt.minimum == 0 && opt.maximum == 0) { if (!updatedItems.contains(viewport)) connect(viewport, SIGNAL(destroyed()), this, SLOT(viewDestroyed())); updatedItems.replace(viewport, index); } else { updatedItems.remove(viewport, index); if (!updatedItems.contains(viewport)) disconnect(viewport, SIGNAL(destroyed()), this, SLOT(viewDestroyed())); } } if (updatedItems.isEmpty()) { if (updateTimer.isActive()) updateTimer.stop(); } else { if (!updateTimer.isActive()) updateTimer.start(1000 / 25, const_cast<QxtItemDelegatePrivate*>(this)); } }
AdoptSegmentCommand:: AdoptSegmentCommand(QString name, // NotationView &view, Segment *segment, bool into) : NamedCommand(name), m_view(view), m_segment(segment), m_into(into), m_detached(false), m_viewDestroyed(false) { QObject::connect(&view, SIGNAL(destroyed()), this, SLOT(viewDestroyed())); }