QWidget *MessageDisplayWidget::createNewRow(const QString &name, const QString &message/*, const QString ×tamp*/, int messageId, bool isOur) { OpacityWidget *widget = new OpacityWidget(this); widget->setProperty("class", "msgRow"); // for CSS styling ElideLabel *nameLabel = new ElideLabel(widget); nameLabel->setMaximumWidth(50); nameLabel->setTextElide(true); nameLabel->setTextElideMode(Qt::ElideRight); nameLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); nameLabel->setToolTip(name); nameLabel->setAlignment(Qt::AlignLeading | Qt::AlignLeft | Qt::AlignTop); MessageLabel *messageLabel = new MessageLabel(widget); messageLabel->setAlignment(Qt::AlignLeading | Qt::AlignLeft | Qt::AlignTop); QString messageText = EmoticonMenu::smile(urlify(message.toHtmlEscaped())).replace('\n', "<br>"); // Action if(messageId < -1) { QPalette actionPal; actionPal.setColor(QPalette::Foreground, Qt::darkGreen); messageLabel->setPalette(actionPal); messageLabel->setProperty("class", "msgAction"); // for CSS styling messageLabel->setText(QString("<i>%1</i>").arg(messageText)); } // Message else if (messageId != 0) { messageLabel->setMessageId(messageId); messageLabel->setProperty("class", "msgMessage"); // for CSS styling messageLabel->setText(messageText); } // Error else { QPalette errorPal; errorPal.setColor(QPalette::Foreground, Qt::red); messageLabel->setPalette(errorPal); messageLabel->setProperty("class", "msgError"); // for CSS styling messageLabel->setText(QString("<img src=\":/icons/error.png\" /> %1").arg(messageText)); messageLabel->setToolTip(tr("Couldn't send the message!")); } QLabel *timeLabel = new QLabel(widget); timeLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); timeLabel->setForegroundRole(QPalette::Mid); timeLabel->setProperty("class", "msgTimestamp"); // for CSS styling timeLabel->setAlignment(Qt::AlignRight | Qt::AlignTop | Qt::AlignTrailing); timeLabel->setText(QTime::currentTime().toString("hh:mm:ss")); // Insert name if sender changed. if (lastMessageIsOurs != isOur || mainlayout->count() < 1 || messageId < -1) { nameLabel->setText(name); if (isOur) { nameLabel->setForegroundRole(QPalette::Mid); nameLabel->setProperty("class", "msgUserName"); // for CSS styling } else { nameLabel->setProperty("class", "msgFriendName"); // for CSS styling } // Create line if (lastMessageIsOurs != isOur && mainlayout->count() > 0) { QFrame *line = new QFrame(this); line->setFrameShape(QFrame::HLine); line->setFrameShadow(QFrame::Plain); line->setForegroundRole(QPalette::Midlight); line->setProperty("class", "msgLine"); // for CSS styling mainlayout->addWidget(line); } lastMessageIsOurs = isOur; } // Return new line QHBoxLayout *hlayout = new QHBoxLayout(widget); hlayout->setContentsMargins(0, 0, 0, 0); hlayout->setMargin(0); hlayout->addWidget(nameLabel, 0, Qt::AlignTop); hlayout->addWidget(messageLabel, 0, Qt::AlignTop); hlayout->addWidget(timeLabel, 0, Qt::AlignTop); widget->setLayout(hlayout); return widget; }