diff --git a/filetransferinstance.cpp b/filetransferinstance.cpp index 6167bfac3..f8b10ecc8 100644 --- a/filetransferinstance.cpp +++ b/filetransferinstance.cpp @@ -23,6 +23,8 @@ #include #include +#define CONTENT_WIDTH 250 + uint FileTransferInstance::Idconter = 0; FileTransferInstance::FileTransferInstance(ToxFile File) @@ -34,6 +36,11 @@ FileTransferInstance::FileTransferInstance(ToxFile File) remotePaused = false; filename = File.fileName; + QFont font; + font.setPixelSize(10); + QFontMetrics fm(font); + filenameElided = fm.elidedText(filename, Qt::ElideRight, CONTENT_WIDTH); + size = getHumanReadableSize(File.filesize); speed = "0B/s"; eta = "00:00"; @@ -328,7 +335,7 @@ QString FileTransferInstance::drawButtonlessForm(const QString &type) imgBStr = ""; } - QString content = "

" + filename + "

" + size + "

"; + QString content = "

" + filenameElided + "

" + size + "

"; return wrapIntoForm(content, type, imgAStr, imgBStr); } @@ -354,9 +361,9 @@ QString FileTransferInstance::draw2ButtonsForm(const QString &type, const QImage QString imgBstr = ""; QString content; - QString progrBar = ""; + QString progrBar = ""; - content = "

" + filename + "

"; + content = "

" + filenameElided + "

"; content += ""; content += ""; content += ""; @@ -375,7 +382,7 @@ QString FileTransferInstance::wrapIntoForm(const QString& content, const QString res = "
" + size + "" + speed + "
\n"; res += "\n"; res += insertMiniature(type); - res += "
\n"; + res += "\n"; res += "
"; res += content; res += "
\n"; diff --git a/filetransferinstance.h b/filetransferinstance.h index d1c9062d9..fb54fd8f6 100644 --- a/filetransferinstance.h +++ b/filetransferinstance.h @@ -72,6 +72,7 @@ private: bool remotePaused; QImage pic; QString filename, size, speed, eta; + QString filenameElided; QDateTime lastUpdate; long long lastBytesSent, totalBytes; int fileNum; 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;