summary refs log tree commit diff
path: root/src/MainWindow.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/MainWindow.cc')
-rw-r--r--src/MainWindow.cc41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/MainWindow.cc b/src/MainWindow.cc

index 3d591755..e43cd383 100644 --- a/src/MainWindow.cc +++ b/src/MainWindow.cc
@@ -25,6 +25,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui_(new Ui::MainWindow) + , progress_modal_{nullptr} + , spinner_{nullptr} { ui_->setupUi(this); client_ = QSharedPointer<MatrixClient>(new MatrixClient("matrix.org")); @@ -54,11 +56,39 @@ MainWindow::MainWindow(QWidget *parent) connect(chat_page_, SIGNAL(changeWindowTitle(QString)), this, SLOT(setWindowTitle(QString))); connect(client_.data(), + SIGNAL(initialSyncCompleted(const SyncResponse &)), + this, + SLOT(removeOverlayProgressBar())); + + connect(client_.data(), SIGNAL(loginSuccess(QString, QString, QString)), this, SLOT(showChatPage(QString, QString, QString))); } +void MainWindow::removeOverlayProgressBar() +{ + QTimer *timer = new QTimer(this); + timer->setSingleShot(true); + + connect(timer, &QTimer::timeout, [=]() { + timer->deleteLater(); + + if (progress_modal_ != nullptr) { + progress_modal_->deleteLater(); + progress_modal_->fadeOut(); + } + + if (progress_modal_ != nullptr) + spinner_->deleteLater(); + + progress_modal_ = nullptr; + spinner_ = nullptr; + }); + + timer->start(500); +} + void MainWindow::showChatPage(QString userid, QString homeserver, QString token) { QSettings settings; @@ -69,6 +99,17 @@ void MainWindow::showChatPage(QString userid, QString homeserver, QString token) int index = sliding_stack_->getWidgetIndex(chat_page_); sliding_stack_->slideInIndex(index, SlidingStackWidget::AnimationDirection::LEFT_TO_RIGHT); + if (spinner_ == nullptr) { + spinner_ = new CircularProgress(this); + spinner_->setColor("#acc7dc"); + spinner_->setSize(100); + } + + if (progress_modal_ == nullptr) { + progress_modal_ = new OverlayModal(this, spinner_); + progress_modal_->fadeIn(); + } + login_page_->reset(); chat_page_->bootstrap(userid, homeserver, token); }