diff --git a/src/MainWindow.cc b/src/MainWindow.cc
index 43f4a949..80726683 100644
--- a/src/MainWindow.cc
+++ b/src/MainWindow.cc
@@ -15,8 +15,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "MainWindow.h"
#include "Config.h"
+#include "MainWindow.h"
#include <QApplication>
#include <QLayout>
@@ -29,7 +29,7 @@ MainWindow *MainWindow::instance_ = nullptr;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
- , progress_modal_{ nullptr }
+ , progressModal_{ nullptr }
, spinner_{ nullptr }
{
QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
@@ -132,18 +132,14 @@ MainWindow::removeOverlayProgressBar()
connect(timer, &QTimer::timeout, [=]() {
timer->deleteLater();
- if (progress_modal_ != nullptr) {
- progress_modal_->deleteLater();
- progress_modal_->fadeOut();
- }
-
- if (spinner_ != nullptr)
- spinner_->deleteLater();
+ if (!progressModal_.isNull())
+ progressModal_->fadeOut();
- spinner_->stop();
+ if (!spinner_.isNull())
+ spinner_->stop();
- progress_modal_ = nullptr;
- spinner_ = nullptr;
+ progressModal_.reset();
+ spinner_.reset();
});
timer->start(500);
@@ -166,18 +162,22 @@ MainWindow::showChatPage(QString userid, QString homeserver, QString token)
QTimer::singleShot(
modalOpacityDuration + 100, this, [=]() { pageStack_->setCurrentWidget(chat_page_); });
- if (spinner_ == nullptr) {
- spinner_ = new LoadingIndicator(this);
+ if (spinner_.isNull()) {
+ spinner_ = QSharedPointer<LoadingIndicator>(
+ new LoadingIndicator(this),
+ [=](LoadingIndicator *indicator) { indicator->deleteLater(); });
spinner_->setColor("#acc7dc");
spinner_->setFixedHeight(120);
spinner_->setFixedWidth(120);
spinner_->start();
}
- if (progress_modal_ == nullptr) {
- progress_modal_ = new OverlayModal(this, spinner_);
- progress_modal_->fadeIn();
- progress_modal_->setDuration(modalOpacityDuration);
+ if (progressModal_.isNull()) {
+ progressModal_ =
+ QSharedPointer<OverlayModal>(new OverlayModal(this, spinner_.data()),
+ [=](OverlayModal *modal) { modal->deleteLater(); });
+ progressModal_->fadeIn();
+ progressModal_->setDuration(modalOpacityDuration);
}
login_page_->reset();
|