diff options
Diffstat (limited to 'aotextarea.cpp')
| -rw-r--r-- | aotextarea.cpp | 82 |
1 files changed, 19 insertions, 63 deletions
diff --git a/aotextarea.cpp b/aotextarea.cpp index d28ae4f4..7c9e160e 100644 --- a/aotextarea.cpp +++ b/aotextarea.cpp @@ -7,7 +7,7 @@ AOTextArea::AOTextArea(QWidget *p_parent) : QTextBrowser(p_parent) { - + this->setStyleSheet(".error {color: #0f0}"); } void AOTextArea::append_chatmessage(QString p_name, QString p_message) @@ -21,81 +21,37 @@ void AOTextArea::append_chatmessage(QString p_name, QString p_message) this->append(""); this->insertHtml("<b>" + p_name.toHtmlEscaped() + "</b>: "); - //QRegExp regExp("((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((?:\\/[\\+~%\\/\\.\\w\\-]*)?\\??(?:[\\-\\+=&;%@\\.\\w]*)#?(?:[\\.\\!\\/\\\\\\w]*))?)"); - - QRegExp omnis_dank_url_regex("\\b(https?://\\S+\\.\\S+)\\b"); - //cheap workarounds ahoy p_message += " "; QString result = p_message.toHtmlEscaped().replace("\n", "<br>").replace(omnis_dank_url_regex, "<a href='\\1'>\\1</a>" ); this->insertHtml(result); + this->auto_scroll(old_cursor, old_scrollbar_value, is_scrolled_down); +} - /* - QRegExp rx("\\bhttp://\\S+"); - - int first_index = rx.indexIn(p_message); - - qDebug() << "number of rx indices: " << rx.captureCount(); - - if (first_index < 0) - { - this->insertPlainText(p_message); - qDebug() << "NO REGEX MATCHES"; - return; - } - - //indices where we found a regex match - QVector<int> rx_indices; - QStringList links = rx.capturedTexts(); - - qDebug() << "link size" << links.size(); - - rx_indices.append(first_index); - - - //start at one because first_index is already appended - for (int n_pos = 1 ; n_pos < rx.captureCount() ; ++n_pos) - rx_indices.append(rx.indexIn(p_message)); - - for (int msg_pos = 0 ; msg_pos < p_message.size() ; ++msg_pos) - { - int tag_index = rx_indices.indexOf(msg_pos); - if (tag_index < 0) - { - this->insertPlainText(p_message.at(msg_pos)); - continue; - } - - QString link = links.at(tag_index); - QString html_string = "<a href=\"" + link + "\">" + link + "</a>"; - qDebug() << "html: " << html_string; - - this->insertHtml(html_string); - - msg_pos += link.size() - 1; +void AOTextArea::append_error(QString p_message) +{ + const QTextCursor old_cursor = this->textCursor(); + const int old_scrollbar_value = this->verticalScrollBar()->value(); + const bool is_scrolled_down = old_scrollbar_value == this->verticalScrollBar()->maximum(); - } + this->moveCursor(QTextCursor::End); - */ + this->append(""); + this->insertHtml("<div class='error'>"); - /* + p_message += " "; + QString result = p_message.replace("\n", "<br>").replace(omnis_dank_url_regex, "<a href='\\1'>\\1</a>" ); - QStringList word_list = p_message.split(" "); + this->insertHtml(result); + this->insertHtml("</div>"); - for (QString i_word : word_list) - { - if (i_word.startsWith("http")) - { - i_word.replace("\n", "").replace("\r", ""); - this->insertHtml("<a href=\"" + i_word + "\">" + i_word + "</a> "); - } - else - this->insertPlainText(i_word + " "); - } - */ + this->auto_scroll(old_cursor, old_scrollbar_value, is_scrolled_down); +} +void AOTextArea::auto_scroll(QTextCursor old_cursor, int old_scrollbar_value, bool is_scrolled_down) +{ if (old_cursor.hasSelection() || !is_scrolled_down) { // The user has selected text or scrolled away from the bottom: maintain position. |
