1313#include < QDir>
1414#include < QTimer>
1515#include < QFileInfo>
16+ #include < QScrollBar>
1617
1718QByteArray 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+
423441void 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
540569void MainWindow::on_sendButton_clicked ()
0 commit comments