diff --git a/widget/chatareawidget.cpp b/widget/chatareawidget.cpp index 765d9e96c..c2e7a90b6 100644 --- a/widget/chatareawidget.cpp +++ b/widget/chatareawidget.cpp @@ -39,13 +39,11 @@ ChatAreaWidget::ChatAreaWidget(QWidget *parent) : chatTextTable = textCursor().insertTable(1,3); QTextTableFormat tableFormat; - tableFormat.setColumnWidthConstraints({QTextLength(QTextLength::VariableLength,0), - QTextLength(QTextLength::PercentageLength,100), - QTextLength(QTextLength::VariableLength,0)}); tableFormat.setBorderStyle(QTextFrameFormat::BorderStyle_None); + tableFormat.setCellSpacing(2); + tableFormat.setWidth(QTextLength(QTextLength::PercentageLength,100)); chatTextTable->setFormat(tableFormat); - chatTextTable->format().setCellSpacing(2); - chatTextTable->format().setWidth(QTextLength(QTextLength::PercentageLength,100)); + setNameColWidth(100); // nameFormat.setAlignment(Qt::AlignRight); // nameFormat.setNonBreakableLines(true); @@ -135,3 +133,14 @@ void ChatAreaWidget::checkSlider() QScrollBar* scroll = verticalScrollBar(); lockSliderToBottom = scroll && scroll->value() == scroll->maximum(); } + +void ChatAreaWidget::setNameColWidth(int w) +{ + nameWidth = w; + + QTextTableFormat tableFormat = chatTextTable->format(); + tableFormat.setColumnWidthConstraints({QTextLength(QTextLength::FixedLength, 100), + QTextLength(QTextLength::PercentageLength, 100), + QTextLength(QTextLength::FixedLength, 40)}); + chatTextTable->setFormat(tableFormat); +} diff --git a/widget/chatareawidget.h b/widget/chatareawidget.h index c30b12c61..05d41de4e 100644 --- a/widget/chatareawidget.h +++ b/widget/chatareawidget.h @@ -31,6 +31,9 @@ public: virtual ~ChatAreaWidget(); void insertMessage(ChatAction *msgAction); + int nameColWidth() {return nameWidth;} + void setNameColWidth(int w); + signals: void onFileTranfertInterract(QString widgetName, QString buttonName); @@ -47,6 +50,7 @@ private: QList messages; bool lockSliderToBottom; int sliderPosition; + int nameWidth; QTextTable *chatTextTable; QTextBlockFormat nameFormat, dateFormat; }; diff --git a/widget/form/chatform.cpp b/widget/form/chatform.cpp index a200eff08..9c57f0d88 100644 --- a/widget/form/chatform.cpp +++ b/widget/form/chatform.cpp @@ -125,7 +125,7 @@ void ChatForm::startFileSend(ToxFile file) name = ""; previousName = Widget::getInstance()->getUsername(); - chatWidget->insertMessage(new FileTransferAction(fileTrans, name, QTime::currentTime().toString("hh:mm"), true)); + chatWidget->insertMessage(new FileTransferAction(fileTrans, getElidedName(name), QTime::currentTime().toString("hh:mm"), true)); } void ChatForm::onFileRecvRequest(ToxFile file) @@ -156,7 +156,7 @@ void ChatForm::onFileRecvRequest(ToxFile file) name = ""; previousName = f->getName(); - chatWidget->insertMessage(new FileTransferAction(fileTrans, name, QTime::currentTime().toString("hh:mm"), false)); + chatWidget->insertMessage(new FileTransferAction(fileTrans, getElidedName(name), QTime::currentTime().toString("hh:mm"), false)); } void ChatForm::onAvInvite(int FriendId, int CallId, bool video) diff --git a/widget/form/genericchatform.cpp b/widget/form/genericchatform.cpp index a10fe0c83..c992ba563 100644 --- a/widget/form/genericchatform.cpp +++ b/widget/form/genericchatform.cpp @@ -169,7 +169,7 @@ void GenericChatForm::addMessage(QString author, QString message, QDateTime date if (previousName == author) chatWidget->insertMessage(new MessageAction("", message, date, isMe)); - else chatWidget->insertMessage(new MessageAction(author , message, date, isMe)); + else chatWidget->insertMessage(new MessageAction(getElidedName(author) , message, date, isMe)); previousName = author; } @@ -212,3 +212,12 @@ void GenericChatForm::addSystemInfoMessage(const QString &message, const QString chatWidget->insertMessage(new SystemMessageAction(message, type, date)); } + +QString GenericChatForm::getElidedName(const QString& name) +{ + QFont font; + font.setBold(true); + QFontMetrics fm(font); + + return fm.elidedText(name, Qt::ElideRight, chatWidget->nameColWidth()); +} diff --git a/widget/form/genericchatform.h b/widget/form/genericchatform.h index d45bf1072..2111bcdf9 100644 --- a/widget/form/genericchatform.h +++ b/widget/form/genericchatform.h @@ -60,6 +60,8 @@ protected slots: void onEmoteInsertRequested(QString str); protected: + QString getElidedName(const QString& name); + CroppingLabel *nameLabel; MaskablePixmapWidget *avatar; QWidget *headWidget;