Skip to content

Commit f9238b1

Browse files
Added the scroll to bottom feature.
1 parent 66e0890 commit f9238b1

3 files changed

Lines changed: 44 additions & 1 deletion

File tree

mainwindow.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <QDir>
1414
#include <QTimer>
1515
#include <QFileInfo>
16+
#include <QScrollBar>
1617

1718
QByteArray get_data_string(QTcpSocket* socket)
1819
{
@@ -196,6 +197,7 @@ MainWindow::MainWindow(QWidget *parent)
196197

197198
ui->MessageList->addItem(item);
198199
ui->MessageList->setItemWidget(item, newMessage);
200+
scrollToBottom();
199201
}
200202
else if (obj["type"].toString() == "file_metadata")
201203
{
@@ -222,6 +224,7 @@ MainWindow::MainWindow(QWidget *parent)
222224
item->setSizeHint(currentFileMessage->sizeHint());
223225
ui->MessageList->addItem(item);
224226
ui->MessageList->setItemWidget(item, currentFileMessage);
227+
scrollToBottom();
225228

226229
QDir dir;
227230
if (dir.mkpath("Files-Received")) {
@@ -329,6 +332,10 @@ MainWindow::MainWindow(QWidget *parent)
329332
current_file = nullptr;
330333
}
331334

335+
ui->sendButton->setEnabled(true);
336+
ui->pairButton->setEnabled(true);
337+
ui->MessageInput->setEnabled(true);
338+
332339
});
333340
}
334341

@@ -420,6 +427,17 @@ void MainWindow::on_pairButton_clicked()
420427
}
421428
}
422429

430+
void MainWindow::scrollToBottom()
431+
{
432+
QScrollBar* scrollbar = ui->MessageList->verticalScrollBar();
433+
int distanceFromBottom = scrollbar->maximum() - scrollbar->value();
434+
435+
const int autoScrollThreshold = 100;
436+
437+
if (distanceFromBottom < autoScrollThreshold)
438+
ui->MessageList->scrollToBottom();
439+
}
440+
423441
void MainWindow::sendFile()
424442
{
425443
QFileInfo info(selectedFilePath);
@@ -466,6 +484,12 @@ void MainWindow::sendFile()
466484
this, &MainWindow::sendFileChunk);
467485

468486
// 4. Kick off first chunk immediately
487+
488+
ui->sendButton->setEnabled(false);
489+
ui->pairButton->setEnabled(false);
490+
ui->MessageInput->setEnabled(false);
491+
492+
scrollToBottom();
469493
sendFileChunk();
470494
}
471495

@@ -491,6 +515,10 @@ void MainWindow::sendFileChunk()
491515

492516
currentFileMessage->setStatus("File Transferred");
493517
currentFileMessage->setProgress(100);
518+
519+
ui->sendButton->setEnabled(true);
520+
ui->pairButton->setEnabled(true);
521+
ui->MessageInput->setEnabled(true);
494522
return;
495523
}
496524

@@ -535,6 +563,7 @@ void MainWindow::sendMessage(const QString messageToSend)
535563
item->setSizeHint(newMessage->sizeHint());
536564
ui->MessageList->addItem(item);
537565
ui->MessageList->setItemWidget(item, newMessage);
566+
scrollToBottom();
538567
}
539568

540569
void MainWindow::on_sendButton_clicked()

mainwindow.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ private slots:
5656
void sendFile();
5757
void sendMessage(const QString messageToSend);
5858
void sendFileChunk();
59+
void scrollToBottom();
5960

6061
};
6162
#endif // MAINWINDOW_H

message.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,18 @@ void message::setId(const QString &text)
2020

2121
void message::setText(const QString &text)
2222
{
23-
ui->MessageBox->setText(text);
23+
// 1️⃣ Create a copy so we can safely modify it
24+
QString formatted = text;
25+
26+
// 2️⃣ Replace literal "\n" sequences with actual newlines
27+
formatted.replace("\\n", "\n");
28+
29+
// 3️⃣ Convert Markdown → HTML for display
30+
QTextDocument doc;
31+
doc.setMarkdown(formatted);
32+
33+
// 4️⃣ Set the rendered HTML in your text display widget
34+
ui->MessageBox->setText(doc.toHtml());
35+
ui->MessageBox->setTextFormat(Qt::RichText);
36+
ui->MessageBox->setWordWrap(true);
2437
}

0 commit comments

Comments
 (0)