void DigestTreeScene::updateNode(QString sessionPrefix, QString nick, uint64_t seqNo) { Roster_iterator it = m_roster.find(sessionPrefix); if (it == m_roster.end()) { DisplayUserPtr p(new DisplayUser()); p->setPrefix(sessionPrefix); p->setSeq(seqNo); m_roster.insert(p->getPrefix(), p); plot(m_rootDigest); } else { it.value()->setSeq(seqNo); DisplayUserPtr p = it.value(); QGraphicsTextItem *item = p->getSeqTextItem(); QGraphicsRectItem *rectItem = p->getInnerRectItem(); std::string s = boost::lexical_cast<std::string>(p->getSeqNo()); item->setPlainText(s.c_str()); QRectF textBR = item->boundingRect(); QRectF rectBR = rectItem->boundingRect(); item->setPos(rectBR.x() + (rectBR.width() - textBR.width())/2, rectBR.y() + (rectBR.height() - textBR.height())/2); } m_displayRootDigest->setPlainText(m_rootDigest); updateNick(sessionPrefix, nick); }
void ParallelMachine::drawCells(QGraphicsScene &scene) { const size_t max_num = getMaxNumOfParticlesInCell(); for (NodeThreadArray::const_iterator it = threads.begin(); it != threads.end(); it++) { // draw cells of each node/thread const size_t& node_id = it->getId(); const QColor& node_color = colors[node_id % NUM_OF_COLORS]; it->drawCells(scene, node_color, mesh_size, max_num); QGraphicsRectItem *rect = scene.addRect(QRectF(node_id*20, (mesh_size + 2)*10, 10, 10), QPen(Qt::black), QBrush(node_color)); QGraphicsTextItem *text = scene.addText(QString::number(node_id)); text->setPos(rect->boundingRect().left(), rect->boundingRect().bottom()); } }
void DesktopView::addCoreExtension(const QString& name) { d->widgets = static_cast<WidgetPlugin*>(PluginLoader::getInstance()->instance(name)); if (d->widgets) { QGraphicsRectItem * widget = (QGraphicsRectItem*) d->widgets->item(); if (widget) { scene()->addItem(widget); widget->setPos(d->row,d->column); d->row += widget->boundingRect().width(); } } }
void DigestTreeScene::reDrawNode(DisplayUserPtr p, QColor rimColor) { QGraphicsRectItem *rimItem = p->getRimRectItem(); rimItem->setBrush(QBrush(rimColor)); QGraphicsRectItem *innerItem = p->getInnerRectItem(); innerItem->setBrush(QBrush(Qt::lightGray)); QGraphicsTextItem *seqTextItem = p->getSeqTextItem(); std::string s = boost::lexical_cast<std::string>(p->getSeqNo()); seqTextItem->setPlainText(s.c_str()); QRectF textBR = seqTextItem->boundingRect(); QRectF innerBR = innerItem->boundingRect(); seqTextItem->setPos(innerBR.x() + (innerBR.width() - textBR.width())/2, innerBR.y() + (innerBR.height() - textBR.height())/2); }
void DataVisualizer::draw(SceneType scene, qreal& lastXPos, Element::Ptr e, int propertyIndex) { if (e.isNull()) return; // see if item should be drawn Element::Property p(Element::getProperty(propertyIndex)); Element::PropertyType type(Element::propertyType(p)); Element::PropertyVariant var(e->propertyConst(p)); if (p == Element::NUCLEONS_PROPERTY && !e->isIsotope()) return; if (!Element::isValidVariant(var)) return; // build the text item QGraphicsItem * item(0); QGraphicsTextItem * text = new QGraphicsTextItem(); text->setHtml( getLinkText(*e) + "<br>" + mMainWindow->toString(var)); text->setTextInteractionFlags(Qt::TextBrowserInteraction); text->setToolTip(tr("formattedFormulaToolTip")); connect(text, SIGNAL(linkActivated(const QString&)), this, SLOT(emitElementLinkActivated(const QString&))); item = text; // build the encapsulating box item QGraphicsRectItem * rect = new QGraphicsRectItem( item->boundingRect() ); rect->setBrush(QBrush(QColor(196, 255, 196))); // combine both and add them to the scene item->setParentItem(rect); scene->addItem(rect); QPointF pos(boost::apply_visitor(DrawingPositionFromPropertyVariant(), var)); if (type == Element::COMPLEX_TYPE || type == Element::STRING_TYPE) { // no stacking for 2D drawing // item positions are stretched in X direction if (lastXPos > pos.x()) { pos.setX(lastXPos); } rect->setPos(pos); // update drawing position for the next item lastXPos = pos.x() + rect->boundingRect().width() + itemMargin; } else { setItemPos(rect, pos); } }
void DigestTreeScene::updateNick(QString sessionPrefix, QString nick) { Roster_iterator it = m_roster.find(sessionPrefix); if (it != m_roster.end()) { DisplayUserPtr p = it.value(); if (nick != p->getNick()) { p->setNick(nick); QGraphicsTextItem *nickItem = p->getNickTextItem(); QGraphicsRectItem *nickRectItem = p->getNickRectItem(); nickItem->setPlainText(p->getNick()); QRectF rectBR = nickRectItem->boundingRect(); QRectF nickBR = nickItem->boundingRect(); nickItem->setPos(rectBR.x() + (rectBR.width() - nickBR.width())/2, rectBR.y() + 5); } } }
void DivePictureItem::setPixmap(const QPixmap &pix) { DivePixmapItem::setPixmap(pix); QRectF r = boundingRect(); QGraphicsRectItem *rect = new QGraphicsRectItem(0 - 10, 0 -10, r.width() + 20, r.height() + 20, this); rect->setPen(Qt::NoPen); rect->setBrush(QColor(Qt::white)); rect->setFlag(ItemStacksBehindParent); rect->setZValue(-1); QGraphicsRectItem *shadow = new QGraphicsRectItem(rect->boundingRect(), this); shadow->setPos(5,5); shadow->setPen(Qt::NoPen); shadow->setBrush(QColor(Qt::lightGray)); shadow->setFlag(ItemStacksBehindParent); shadow->setZValue(-2); }
CalendarGraphicsItem::CalendarGraphicsItem(CalendarControl * cc, QGraphicsItem * parent) : QGraphicsRectItem(0.0, 0.0, __width, __height, parent) { _controller = cc; QDate today = QDate::currentDate(); QDate firstMonthDay = QDate(today.year(), today.month(), 1); QDate firstCalendarDay = firstMonthDay.addDays(firstMonthDay.dayOfWeek() * -1); if(firstMonthDay.dayOfWeek() < 2) firstCalendarDay = firstCalendarDay.addDays(-7); _selectedDay = today; QString prev = QObject::tr("<"); QString prevprev = QObject::tr("<<"); QString next = QObject::tr(">"); QString nextnext = QObject::tr(">>"); QGraphicsSimpleTextItem * textItem; QGraphicsRectItem * rectItem; rectItem = new QGraphicsRectItem(0.0, 0.0, __width, __titleHeight, this); rectItem->setBrush(blackFill); _items.insert("titleBackground", rectItem); textItem = new QGraphicsSimpleTextItem(today.toString("MMMM yyyy"), this); textItem->setFont(monthfont); textItem->setZValue(2); textItem->setBrush(whiteFill); QPointF ct = rectItem->boundingRect().center(); QRectF rt = textItem->boundingRect(); textItem->setPos(ct.x() - (rt.width() / 2), ct.y() - (rt.height() / 2)); _items.insert("title", textItem); qreal offset = 0.1 * __dpi; qreal nw = 0; GraphicsTextButtonItem * tbtnItem = 0; tbtnItem = new GraphicsTextButtonItem(prevprev, this); tbtnItem->setFont(navfont); tbtnItem->setZValue(3); tbtnItem->setBrush(Qt::lightGray); tbtnItem->setRolloverBrush(Qt::green); tbtnItem->scale(0.5, 1); tbtnItem->setReceiver(this); rt = tbtnItem->boundingRect(); tbtnItem->setPos(offset, ct.y() - (rt.height() / 2)); nw = rt.width(); _items.insert("fastrewind", tbtnItem); tbtnItem = new GraphicsTextButtonItem(nextnext, this); tbtnItem->setFont(navfont); tbtnItem->setZValue(3); tbtnItem->setBrush(Qt::lightGray); tbtnItem->setRolloverBrush(Qt::green); tbtnItem->scale(0.5, 1); tbtnItem->setReceiver(this); rt = tbtnItem->boundingRect(); tbtnItem->setPos(rectItem->boundingRect().right() - offset - (rt.width() / 2), ct.y() - (rt.height() / 2)); nw = qMax(nw, rt.width()) / 2; offset += (nw * 1.5); _items.insert("fastforward", tbtnItem); tbtnItem = new GraphicsTextButtonItem(prev, this); tbtnItem->setFont(navfont); tbtnItem->setZValue(3); tbtnItem->setBrush(Qt::lightGray); tbtnItem->setRolloverBrush(Qt::green); tbtnItem->scale(0.5, 1); tbtnItem->setReceiver(this); rt = tbtnItem->boundingRect(); tbtnItem->setPos(offset, ct.y() - (rt.height() / 2)); _items.insert("rewind", tbtnItem); tbtnItem = new GraphicsTextButtonItem(next, this); tbtnItem->setFont(navfont); tbtnItem->setZValue(3); tbtnItem->setBrush(Qt::lightGray); tbtnItem->setRolloverBrush(Qt::green); tbtnItem->scale(0.5, 1); tbtnItem->setReceiver(this); rt = tbtnItem->boundingRect(); tbtnItem->setPos(rectItem->boundingRect().right() - offset - (rt.width() / 2), ct.y() - (rt.height() / 2)); _items.insert("forward", tbtnItem); QDate date; qreal dayWidth = __width / 7.0; QApplication::setOverrideCursor(Qt::WaitCursor); for(int wday = 0; wday < 7; wday++) { for(int week = 0; week < 6; week++) { date = firstCalendarDay.addDays((7 * week) + wday); if(0 == week) { rectItem = new QGraphicsRectItem(wday * dayWidth, 0.5 * __dpi, dayWidth, 0.25 * __dpi, this); _items.insert(QString("weekday%1").arg(week), rectItem); textItem = new QGraphicsSimpleTextItem(date.toString("dddd"), this); textItem->setFont(wdayfont); textItem->setZValue(2); ct = rectItem->boundingRect().center(); rt = textItem->boundingRect(); textItem->setPos(ct.x() - (rt.width() / 2), ct.y() - (rt.height() / 2)); _items.insert(QString("weekday%1Text").arg(week), textItem); } QBrush fill; QBrush dayFill = blackFill; if(date == _selectedDay) fill = selectedFill; else if(date.month() != today.month()) { fill = nonMonthFill; dayFill = nonMonthDayFill; } else if(date == today) fill = todayFill; else if(date.dayOfWeek() > 5) fill = weekendFill; rectItem = new QGraphicsRectItem(wday * dayWidth, (0.75 + (1.25 * week)) * __dpi, dayWidth, 1.25 * __dpi, this); rectItem->setBrush(fill); _items.insert(QString("day%1").arg((7 * week) + wday), rectItem); rt = QRectF(rectItem->pos(), rectItem->boundingRect().size()); double offset = rt.width() / 3; textItem = new QGraphicsSimpleTextItem(QString::number(date.day()), this); textItem->setFont(dayfont); textItem->setZValue(2); textItem->setBrush(dayFill); textItem->setPos(rectItem->boundingRect().topLeft()); textItem->moveBy(5.0, 5.0); _items.insert(QString("day%1Number").arg((7 * week) + wday), textItem); rt = QRectF(textItem->pos(), textItem->boundingRect().size()); QString additionalText; if(_controller) additionalText = _controller->contents(date); textItem = new QGraphicsSimpleTextItem(additionalText, this); textItem->setFont(notesfont); textItem->setZValue(2); textItem->setBrush(dayFill); textItem->setPos(rt.left() + offset, rt.top() + (rt.height() * 1.5)); _items.insert(QString("day%1Text").arg((7 * week) + wday), textItem); } } QApplication::restoreOverrideCursor(); }
void CalendarGraphicsItem::setSelectedDay(const QDate & sDate) { //if(sDate == _selectedDay) // return; _selectedDay = sDate; QDate today = QDate::currentDate(); QDate firstMonthDay = QDate(_selectedDay.year(), _selectedDay.month(), 1); QDate firstCalendarDay = firstMonthDay.addDays(firstMonthDay.dayOfWeek() * -1); if(firstMonthDay.dayOfWeek() < 2) firstCalendarDay = firstCalendarDay.addDays(-7); QGraphicsRectItem * titleBackground = static_cast<QGraphicsRectItem*>(_items["titleBackground"]); QGraphicsSimpleTextItem * title = static_cast<QGraphicsSimpleTextItem*>(_items["title"]); if(title && titleBackground) { title->setText(_selectedDay.toString("MMMM yyyy")); QPointF ct = titleBackground->boundingRect().center(); QRectF rt = title->boundingRect(); title->setPos(ct.x() - (rt.width() / 2), ct.y() - (rt.height() / 2)); } QDate date; QApplication::setOverrideCursor(Qt::WaitCursor); for(int wday = 0; wday < 42; wday++) { date = firstCalendarDay.addDays(wday); QBrush fill; QBrush dayFill = blackFill; if(date == _selectedDay) fill = selectedFill; else if(date.month() != _selectedDay.month()) { fill = nonMonthFill; dayFill = nonMonthDayFill; } else if(date == today) fill = todayFill; else if(date.dayOfWeek() > 5) fill = weekendFill; QString additionalText; if(_controller) additionalText = _controller->contents(date); QGraphicsRectItem * ri = static_cast<QGraphicsRectItem*>(_items[QString("day%1").arg(wday)]); if(ri) ri->setBrush(fill); QGraphicsSimpleTextItem * si = static_cast<QGraphicsSimpleTextItem*>(_items[QString("day%1Number").arg(wday)]); if(si) { si->setText(QString::number(date.day())); si->setBrush(dayFill); } QGraphicsSimpleTextItem * si2 = static_cast<QGraphicsSimpleTextItem*>(_items[QString("day%1Text").arg(wday)]); if(si2) { si2->setText(additionalText); si2->setBrush(dayFill); } } QApplication::restoreOverrideCursor(); if(_controller) _controller->setSelectedDay(_selectedDay); }