| 103 | } |
| 104 | |
| 105 | void MCModInfoFrame::setModDescription(QString text) |
| 106 | { |
| 107 | if(text.isEmpty()) |
| 108 | { |
| 109 | ui->label_ModDescription->setHidden(true); |
| 110 | updateHiddenState(); |
| 111 | return; |
| 112 | } |
| 113 | else |
| 114 | { |
| 115 | ui->label_ModDescription->setHidden(false); |
| 116 | updateHiddenState(); |
| 117 | } |
| 118 | ui->label_ModDescription->setToolTip(""); |
| 119 | QString intermediatetext = text.trimmed(); |
| 120 | bool prev(false); |
| 121 | QChar rem('\n'); |
| 122 | QString finaltext; |
| 123 | finaltext.reserve(intermediatetext.size()); |
| 124 | foreach(const QChar& c, intermediatetext) |
| 125 | { |
| 126 | if(c == rem && prev){ |
| 127 | continue; |
| 128 | } |
| 129 | prev = c == rem; |
| 130 | finaltext += c; |
| 131 | } |
| 132 | QString labeltext; |
| 133 | labeltext.reserve(300); |
| 134 | if(finaltext.length() > 290) |
| 135 | { |
| 136 | ui->label_ModDescription->setOpenExternalLinks(false); |
| 137 | ui->label_ModDescription->setTextFormat(Qt::TextFormat::RichText); |
| 138 | desc = text; |
| 139 | // This allows injecting HTML here. |
| 140 | labeltext.append("<html><body>" + finaltext.left(287) + "<a href=\"#mod_desc\">...</a></body></html>"); |
| 141 | QObject::connect(ui->label_ModDescription, &QLabel::linkActivated, this, &MCModInfoFrame::modDescEllipsisHandler); |
| 142 | } |
| 143 | else |
| 144 | { |
| 145 | ui->label_ModDescription->setTextFormat(Qt::TextFormat::PlainText); |
| 146 | labeltext.append(finaltext); |
| 147 | } |
| 148 | ui->label_ModDescription->setText(labeltext); |
| 149 | } |
| 150 | |
| 151 | void MCModInfoFrame::modDescEllipsisHandler(const QString &link) |
| 152 | { |