void CostListItem::update() { if (!_costItem) return; TraceData* d = _costItem->data(); double total = d->subCost(_eventType); if (total == 0.0) { setText(0, QString("---")); setIcon(0, QPixmap()); return; } _pure = _costItem->subCost(_eventType); double pure = 100.0 * _pure / total; QString str; if (GlobalConfig::showPercentage()) str = QString("%1").arg(pure, 0, 'f', GlobalConfig::percentPrecision()); else str = _costItem->prettySubCost(_eventType); if (_skipped) { // special handling for skip entries... setText(0, QString("< %1").arg(str)); return; } setText(0, str); setIcon(0, costPixmap(_eventType, _costItem, total, false)); }
void StackItem::updateCost() { if (!_call) return; setText(2, _call->prettyCallCount()); TraceCostType* ct = _view->costType(); _sum = _call->subCost(ct); double total = _call->called()->data()->subCost(ct); if (total == 0.0) { setText(0, "-"); setPixmap(0, QPixmap()); } else { double sum = 100.0 * _sum / total; if (Configuration::showPercentage()) setText(0, QString("%1") .arg(sum, 0, 'f', Configuration::percentPrecision())); else setText(0, _call->prettySubCost(ct)); setPixmap(0, costPixmap(ct, _call, total, false)); } // if _costType2 is 0, column1 is hidden, no change needed TraceCostType* ct2 = _view->costType2(); if (!ct2) return; _sum = _call->subCost(ct2); total = _call->called()->data()->subCost(ct2); if (total == 0.0) { setText(1, "-"); setPixmap(1, QPixmap()); } else { double sum = 100.0 * _sum / total; if (Configuration::showPercentage()) setText(1, QString("%1") .arg(sum, 0, 'f', Configuration::percentPrecision())); else setText(1, _call->prettySubCost(ct2)); setPixmap(1, costPixmap(ct2, _call, total, false)); } }
void SourceItem::updateCost() { _pure = SubCost(0); _pure2 = SubCost(0); if (!_line) return; if (_lineJump) return; ProfileCostArray* lineCost = _lineCall ? (ProfileCostArray*)_lineCall : (ProfileCostArray*)_line; // do not show any cost inside of cycles if (_lineCall && ((_lineCall->call()->inCycle()>0) || (_lineCall->call()->isRecursion()))) { QString str; QPixmap p; QString icon = "edit-undo"; #if 0 // TODO KIconLoader* loader = KIconLoader::global(); p= loader->loadIcon(icon, KIconLoader::Small, 0, KIconLoader::DefaultState, QStringList(), 0, true); #endif if (p.isNull()) str = QObject::tr("(cycle)"); setText(1, str); setIcon(1, p); setText(2, str); setIcon(2, p); return; } ProfileCostArray* totalCost; if (GlobalConfig::showExpanded()) totalCost = _line->functionSource()->function()->inclusive(); else totalCost = _line->functionSource()->function()->data(); EventType* ct = _view->eventType(); _pure = ct ? lineCost->subCost(ct) : SubCost(0); if (_pure == 0) { setText(1, QString()); setIcon(1, QPixmap()); } else { double total = totalCost->subCost(ct); double pure = 100.0 * _pure / total; if (GlobalConfig::showPercentage()) setText(1, QString("%1") .arg(pure, 0, 'f', GlobalConfig::percentPrecision())); else setText(1, _pure.pretty()); setIcon(1, costPixmap(ct, lineCost, total, false)); } EventType* ct2 = _view->eventType2(); _pure2 = ct2 ? lineCost->subCost(ct2) : SubCost(0); if (_pure2 == 0) { setText(2, QString()); setIcon(2, QPixmap()); } else { double total = totalCost->subCost(ct2); double pure2 = 100.0 * _pure2 / total; if (GlobalConfig::showPercentage()) setText(2, QString("%1") .arg(pure2, 0, 'f', GlobalConfig::percentPrecision())); else setText(2, _pure2.pretty()); setIcon(2, costPixmap(ct2, lineCost, total, false)); } }
void CostTypeItem::update() { TraceData* d = _costItem ? _costItem->data() : 0; double total = d ? ((double)d->subCost(_costType)) : 0.0; if (total == 0.0) { setText(1, "-"); setPixmap(1, QPixmap()); setText(2, "-"); setPixmap(2, QPixmap()); return; } TraceFunction* f = (_costItem->type()==TraceCost::Function) ? (TraceFunction*)_costItem : 0; TraceCost* selfTotalCost = f ? f->data() : d; if (f && Configuration::showExpanded()) { switch(_groupType) { case TraceCost::Object: selfTotalCost = f->object(); break; case TraceCost::Class: selfTotalCost = f->cls(); break; case TraceCost::File: selfTotalCost = f->file(); break; case TraceCost::FunctionCycle: selfTotalCost = f->cycle(); break; default: break; } } if (_costItem->type()==TraceCost::FunctionCycle) { f = (TraceFunction*)_costItem; selfTotalCost = f->data(); } double selfTotal = selfTotalCost->subCost(_costType); // for all cost items there's a self cost _pure = _costItem ? _costItem->subCost(_costType) : SubCost(0); double pure = 100.0 * _pure / selfTotal; if (Configuration::showPercentage()) { setText(2, QString("%1") .arg(pure, 0, 'f', Configuration::percentPrecision())); } else setText(2, _costItem->prettySubCost(_costType)); setPixmap(2, costPixmap(_costType, _costItem, selfTotal, false)); if (!f) { setText(1, "-"); setPixmap(1, QPixmap()); return; } _sum = f->inclusive()->subCost(_costType); double sum = 100.0 * _sum / total; if (Configuration::showPercentage()) { setText(1, QString("%1") .arg(sum, 0, 'f', Configuration::percentPrecision())); } else setText(1, _sum.pretty()); setPixmap(1, costPixmap(_costType, f->inclusive(), total, false)); }
void EventTypeItem::update() { TraceData* d = _costItem ? _costItem->data() : 0; double total = d ? ((double)d->subCost(_eventType)) : 0.0; if (total == 0.0) { setText(1, "-"); setIcon(1, QIcon()); setText(2, "-"); setIcon(2, QIcon()); return; } TraceFunction* f = (_costItem && _costItem->type()==ProfileContext::Function) ? (TraceFunction*)_costItem : 0; ProfileCostArray* selfTotalCost = f ? f->data() : d; if (f && GlobalConfig::showExpanded()) { ProfileCostArray* parent = 0; switch(_groupType) { case ProfileContext::Object: parent = f->object(); break; case ProfileContext::Class: parent = f->cls(); break; case ProfileContext::File: parent = f->file(); break; case ProfileContext::FunctionCycle: parent = f->cycle(); break; default: break; } if (parent) selfTotalCost = parent; } if (_costItem && _costItem->type()==ProfileContext::FunctionCycle) { f = (TraceFunction*)_costItem; selfTotalCost = f->data(); } double selfTotal = selfTotalCost->subCost(_eventType); // for all cost items there is a self cost _pure = _costItem ? _costItem->subCost(_eventType) : SubCost(0); double pure = 100.0 * _pure / selfTotal; if (GlobalConfig::showPercentage()) { setText(2, QString("%1") .arg(pure, 0, 'f', GlobalConfig::percentPrecision())); } else if (_costItem) setText(2, _costItem->prettySubCost(_eventType)); setIcon(2, QIcon(costPixmap(_eventType, _costItem, selfTotal, false))); if (!f) { setText(1, "-"); setIcon(1, QIcon()); return; } _sum = f->inclusive()->subCost(_eventType); double sum = 100.0 * _sum / total; if (GlobalConfig::showPercentage()) { setText(1, QString("%1") .arg(sum, 0, 'f', GlobalConfig::percentPrecision())); } else setText(1, _sum.pretty()); setIcon(1, QIcon(costPixmap(_eventType, f->inclusive(), total, false))); }
void InstrItem::updateCost() { _pure = SubCost(0); _pure2 = SubCost(0); if (!_instr) return; if (_instrJump) return; ProfileCostArray* instrCost = _instrCall ? (ProfileCostArray*)_instrCall : (ProfileCostArray*)_instr; // do not show any cost inside of cycles if (_instrCall && ((_instrCall->call()->inCycle()>0) || (_instrCall->call()->isRecursion()))) { QString str; QPixmap p; QFontMetrics fm(font(1)); p = QIcon::fromTheme(QStringLiteral("edit-undo")).pixmap(fm.height()); if (p.isNull()) str = QObject::tr("(cycle)"); setText(1, str); setIcon(1, p); setText(2, str); setIcon(2, p); return; } ProfileCostArray* totalCost; if (GlobalConfig::showExpanded()) totalCost = _instr->function()->inclusive(); else totalCost = _instr->function()->data(); EventType *et = _view->eventType(); _pure = et ? instrCost->subCost(et) : SubCost(0); if (_pure == 0) { setText(1, QString()); setIcon(1, QPixmap()); } else { double total = totalCost->subCost(et); double pure = 100.0 * _pure / total; if (GlobalConfig::showPercentage()) setText(1, QStringLiteral("%1") .arg(pure, 0, 'f', GlobalConfig::percentPrecision())); else setText(1, _pure.pretty()); setIcon(1, costPixmap(et, instrCost, total, false)); } EventType *ct2 = _view->eventType2(); _pure2 = ct2 ? instrCost->subCost(ct2) : SubCost(0); if (_pure2 == 0) { setText(2, QString()); setIcon(2, QPixmap()); } else { double total = totalCost->subCost(ct2); double pure = 100.0 * _pure2 / total; if (GlobalConfig::showPercentage()) setText(2, QStringLiteral("%1") .arg(pure, 0, 'f', GlobalConfig::percentPrecision())); else setText(2, _pure2.pretty()); setIcon(2, costPixmap(ct2, instrCost, total, false)); } }
void CallItem::updateCost() { bool sameCycle = _shown->cycle() && (_active->cycle() == _shown->cycle()); bool shownIsCycle = (_shown == _shown->cycle()); bool selectedIsCycle = (_active == _active->cycle()); if (_call->isRecursion()) sameCycle=true; QString cStr; if ((selectedIsCycle || shownIsCycle) && sameCycle) cStr = "-"; else { _cc = _call->callCount(); if (_cc == 0) cStr = QObject::tr("(active)"); else cStr = _call->prettyCallCount(); } setText(2, cStr); ProfileCostArray* totalCost; if (GlobalConfig::showExpanded()) { if (_active->cycle()) totalCost = _active->cycle()->inclusive(); else totalCost = _active->inclusive(); } else totalCost = _active->data(); EventType* ct = _view->eventType(); _sum = _call->subCost(ct); double total = totalCost->subCost(ct); if (total == 0.0) { QString str = "-"; setText(0, str); setIcon(0, QPixmap()); } else { double sum = 100.0 * _sum / total; if (GlobalConfig::showPercentage()) setText(0, QString("%1") .arg(sum, 0, 'f', GlobalConfig::percentPrecision())); else setText(0, _call->prettySubCost(ct)); setIcon(0, costPixmap(ct, _call, total, false)); } // Cost Type 2 EventType* ct2 = _view->eventType2(); if (ct2) { _sum2 = _call->subCost(ct2); double total = totalCost->subCost(ct2); if (total == 0.0) { QString str = "-"; setText(1, str); setIcon(1, QPixmap()); } else { double sum = 100.0 * _sum2 / total; if (GlobalConfig::showPercentage()) setText(1, QString("%1") .arg(sum, 0, 'f', GlobalConfig::percentPrecision())); else setText(1, _call->prettySubCost(ct2)); setIcon(1, costPixmap(ct2, _call, total, false)); } } QPixmap p; if (sameCycle && !selectedIsCycle && !shownIsCycle) { QString icon = "edit-undo"; #if 0 // TODO KIconLoader* loader = KIconLoader::global(); p= loader->loadIcon(icon, KIconLoader::Small, 0, KIconLoader::DefaultState, QStringList(), 0, true); #endif } setIcon(2, p); }