//! Reads attributes of the element void CGUIButton::deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0) { IGUIButton::deserializeAttributes(in,options); IsPushButton = in->getAttributeAsBool("PushButton", IsPushButton); Pressed = IsPushButton ? in->getAttributeAsBool("Pressed", Pressed) : false; for ( u32 i=0; i<(u32)EGBIS_COUNT; ++i ) { core::stringc nameRect( GUIButtonImageStateNames[i] ); nameRect += "Rect"; setImage((EGUI_BUTTON_IMAGE_STATE)i, in->getAttributeAsTexture(GUIButtonImageStateNames[i], ButtonImages[i].Texture), in->getAttributeAsRect(nameRect.c_str(), ButtonImages[i].SourceRect) ); } setDrawBorder(in->getAttributeAsBool("Border", DrawBorder)); setUseAlphaChannel(in->getAttributeAsBool("UseAlphaChannel", UseAlphaChannel)); setScaleImage(in->getAttributeAsBool("ScaleImage", ScaleImage)); for ( u32 i=0; i<(u32)EGBS_COUNT; ++i ) { core::stringc nameIndex( GUIButtonStateNames[i] ); nameIndex += "Index"; ButtonSprites[i].Index = in->getAttributeAsInt(nameIndex.c_str(), ButtonSprites[i].Index ); core::stringc nameColor( GUIButtonStateNames[i] ); nameColor += "Color"; ButtonSprites[i].Color = in->getAttributeAsColor(nameColor.c_str(), ButtonSprites[i].Color ); core::stringc nameLoop( GUIButtonStateNames[i] ); nameLoop += "Loop"; ButtonSprites[i].Loop = in->getAttributeAsBool(nameLoop.c_str(), ButtonSprites[i].Loop ); core::stringc nameScale( GUIButtonStateNames[i] ); nameScale += "Scale"; ButtonSprites[i].Scale = in->getAttributeAsBool(nameScale.c_str(), ButtonSprites[i].Scale ); } // setOverrideFont(in->getAttributeAsString("OverrideFont")); updateAbsolutePosition(); }
void EventKnownItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) { Q_UNUSED(option); Q_UNUSED(widget); painter->setRenderHint(QPainter::Antialiasing); QRectF rect = boundingRect(); QColor eventColor = QColor(mData[STATE_COLOR_RED].toInt(), mData[STATE_COLOR_GREEN].toInt(), mData[STATE_COLOR_BLUE].toInt()); painter->setPen(Qt::NoPen); painter->setBrush(eventColor); painter->drawEllipse(rect); if(isSelected()) { painter->setPen(QPen(Painting::mainColorDark, 3.f)); painter->setBrush(Qt::NoBrush); painter->drawEllipse(rect.adjusted(1, 1, -1, -1)); } double side = 40.f; double top = 25.f; QRectF nameRect(rect.x() + side, rect.y() + top, rect.width() - 2*side, mTitleHeight); QRectF thumbRect(rect.x() + side, rect.y() + top + mEltsMargin + mTitleHeight, rect.width() - 2*side, mThumbH); QRectF phasesRect(rect.x() + side, rect.y() + top + 2*mEltsMargin + mTitleHeight + mThumbH, rect.width() - 2*side, mPhasesHeight); phasesRect.adjust(1, 1, -1, -1); // Name QFont font = qApp->font(); painter->setFont(font); QFontMetrics metrics(font); QString name = mData[STATE_NAME].toString(); name = metrics.elidedText(name, Qt::ElideRight, nameRect.width()); QColor frontColor = getContrastedColor(eventColor); painter->setPen(frontColor); painter->drawText(nameRect, Qt::AlignCenter, name); // Thumb painter->drawPixmap(thumbRect, mThumb, mThumb.rect()); // Phases QJsonArray phases = getPhases(); int numPhases = (int)phases.size(); double w = phasesRect.width()/numPhases; for(int i=0; i<numPhases; ++i) { QJsonObject phase = phases[i].toObject(); QColor c(phase[STATE_COLOR_RED].toInt(), phase[STATE_COLOR_GREEN].toInt(), phase[STATE_COLOR_BLUE].toInt()); painter->setPen(c); painter->setBrush(c); painter->drawRect(phasesRect.x() + i*w, phasesRect.y(), w, phasesRect.height()); } if(numPhases == 0) { QFont font = qApp->font(); font.setPointSizeF(pointSize(11)); painter->setFont(font); painter->fillRect(phasesRect, QColor(0, 0, 0, 180)); painter->setPen(QColor(200, 200, 200)); painter->drawText(phasesRect, Qt::AlignCenter, tr("No Phase")); } painter->setPen(QColor(0, 0, 0)); painter->setBrush(Qt::NoBrush); painter->drawRect(phasesRect); /*if(mGreyedOut) { painter->setPen(Painting::greyedOut); painter->setBrush(Painting::greyedOut); painter->drawEllipse(boundingRect()); }*/ // Border painter->setBrush(Qt::NoBrush); if(mMergeable) { painter->setPen(QPen(Qt::white, 5.f)); painter->drawEllipse(rect.adjusted(1, 1, -1, -1)); painter->setPen(QPen(Painting::mainColorLight, 3.f, Qt::DashLine)); painter->drawEllipse(rect.adjusted(1, 1, -1, -1)); } else if(isSelected()) { painter->setPen(QPen(Qt::white, 5.f)); painter->drawEllipse(rect.adjusted(1, 1, -1, -1)); painter->setPen(QPen(Qt::red, 3.f)); painter->drawEllipse(rect.adjusted(1, 1, -1, -1)); } }
void GM_SettingsListDelegate::paint(QPainter* painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QStyleOptionViewItemV4 opt = option; initStyleOption(&opt, index); const QWidget* w = opt.widget; const QStyle* style = w ? w->style() : QApplication::style(); const Qt::LayoutDirection direction = w ? w->layoutDirection() : QApplication::layoutDirection(); const int height = opt.rect.height(); const int center = height / 2 + opt.rect.top(); // Prepare title font QFont titleFont = opt.font; titleFont.setBold(true); titleFont.setPointSize(titleFont.pointSize() + 1); const QFontMetrics titleMetrics(titleFont); #ifdef Q_OS_WIN const QPalette::ColorRole colorRole = QPalette::Text; #else const QPalette::ColorRole colorRole = opt.state & QStyle::State_Selected ? QPalette::HighlightedText : QPalette::Text; #endif int leftPosition = m_padding; int rightPosition = opt.rect.right() - m_padding - 16; // 16 for remove button // Draw background style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, w); // Draw checkbox const int checkboxSize = 18; const int checkboxYPos = center - (checkboxSize / 2); QStyleOptionViewItemV4 opt2 = opt; opt2.checkState == Qt::Checked ? opt2.state |= QStyle::State_On : opt2.state |= QStyle::State_Off; QRect styleCheckBoxRect = style->subElementRect(QStyle::SE_ViewItemCheckIndicator, &opt2, w); styleCheckBoxRect.setRect(leftPosition, checkboxYPos, styleCheckBoxRect.width(), styleCheckBoxRect.height()); QRect visualCheckBoxRect = style->visualRect(direction, opt.rect, styleCheckBoxRect); opt2.rect = visualCheckBoxRect; style->drawPrimitive(QStyle::PE_IndicatorViewItemCheck, &opt2, painter, w); leftPosition = styleCheckBoxRect.right() + m_padding; // Draw icon const int iconSize = 32; const int iconYPos = center - (iconSize / 2); QRect iconRect(leftPosition, iconYPos, iconSize, iconSize); QRect visualIconRect = style->visualRect(direction, opt.rect, iconRect); QPixmap pixmap = index.data(Qt::DecorationRole).value<QIcon>().pixmap(iconSize); painter->drawPixmap(visualIconRect, pixmap); leftPosition = iconRect.right() + m_padding; // Draw script name const QString &name = index.data(Qt::DisplayRole).toString(); const int leftTitleEdge = leftPosition + 2; const int rightTitleEdge = rightPosition - m_padding; const int leftPosForVersion = titleMetrics.width(name) + m_padding; QRect nameRect(leftTitleEdge, opt.rect.top() + m_padding, rightTitleEdge - leftTitleEdge, titleMetrics.height()); QRect visualNameRect = style->visualRect(direction, opt.rect, nameRect); painter->setFont(titleFont); style->drawItemText(painter, visualNameRect, Qt::AlignLeft, opt.palette, true, name, colorRole); // Draw version const QString &version = index.data(Qt::UserRole).toString(); QRect versionRect(nameRect.x() + leftPosForVersion, nameRect.y(), rightTitleEdge - leftPosForVersion, titleMetrics.height()); QFont versionFont = titleFont; versionFont.setBold(false); painter->setFont(versionFont); style->drawItemText(painter, versionRect, Qt::AlignLeft, opt.palette, true, version, colorRole); // Draw description const int infoYPos = nameRect.bottom() + opt.fontMetrics.leading(); QRect infoRect(visualNameRect.x(), infoYPos, nameRect.width(), opt.fontMetrics.height()); const QString &info = opt.fontMetrics.elidedText(index.data(Qt::UserRole + 1).toString(), Qt::ElideRight, infoRect.width()); painter->setFont(opt.font); style->drawItemText(painter, infoRect, Qt::TextSingleLine | Qt::AlignLeft, opt.palette, true, info, colorRole); // Draw remove button const int removeIconSize = 16; const int removeIconYPos = center - (removeIconSize / 2); QRect removeIconRect(rightPosition, removeIconYPos, removeIconSize, removeIconSize); QRect visualRemoveIconRect = style->visualRect(direction, opt.rect, removeIconRect); painter->drawPixmap(visualRemoveIconRect, m_removePixmap); }