summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-07 20:09:34 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-07 20:51:35 +0300
commitbc4b47a5e30386df46f5d4d51a5be33b6a9d4c2f (patch)
tree42bd697afd1b4ce3d7b88bfefe11aa71dbdafae7 /src
parent800d9ecff35804968d9c2870adce8b1c67482275 (diff)
Use shared pointer for the modals
Diffstat (limited to 'src')
-rw-r--r--src/ChatPage.cc19
-rw-r--r--src/EmojiPickButton.cc7
-rw-r--r--src/MainWindow.cc36
-rw-r--r--src/RoomList.cc25
-rw-r--r--src/TopRoomBar.cc29
-rw-r--r--src/UserInfoWidget.cc13
6 files changed, 76 insertions, 53 deletions
diff --git a/src/ChatPage.cc b/src/ChatPage.cc
index 0800fe32..dbffc6d0 100644
--- a/src/ChatPage.cc
+++ b/src/ChatPage.cc
@@ -572,21 +572,26 @@ ChatPage::keyPressEvent(QKeyEvent *event)
void
ChatPage::showQuickSwitcher()
{
- if (quickSwitcher_ == nullptr) {
- quickSwitcher_ = new QuickSwitcher(this);
+ if (quickSwitcher_.isNull()) {
+ quickSwitcher_ = QSharedPointer<QuickSwitcher>(
+ new QuickSwitcher(this),
+ [=](QuickSwitcher *switcher) { switcher->deleteLater(); });
- connect(quickSwitcher_,
+ connect(quickSwitcher_.data(),
&QuickSwitcher::roomSelected,
room_list_,
&RoomList::highlightSelectedRoom);
- connect(quickSwitcher_, &QuickSwitcher::closing, this, [=]() {
- if (this->quickSwitcherModal_ != nullptr)
+
+ connect(quickSwitcher_.data(), &QuickSwitcher::closing, this, [=]() {
+ if (!this->quickSwitcherModal_.isNull())
this->quickSwitcherModal_->fadeOut();
});
}
- if (quickSwitcherModal_ == nullptr) {
- quickSwitcherModal_ = new OverlayModal(MainWindow::instance(), quickSwitcher_);
+ if (quickSwitcherModal_.isNull()) {
+ quickSwitcherModal_ = QSharedPointer<OverlayModal>(
+ new OverlayModal(MainWindow::instance(), quickSwitcher_.data()),
+ [=](OverlayModal *modal) { modal->deleteLater(); });
quickSwitcherModal_->setDuration(0);
quickSwitcherModal_->setColor(QColor(30, 30, 30, 170));
}
diff --git a/src/EmojiPickButton.cc b/src/EmojiPickButton.cc
index f3e30661..4f7dd59e 100644
--- a/src/EmojiPickButton.cc
+++ b/src/EmojiPickButton.cc
@@ -30,9 +30,10 @@ EmojiPickButton::enterEvent(QEvent *e)
{
Q_UNUSED(e);
- if (panel_ == nullptr) {
- panel_ = new EmojiPanel(this);
- connect(panel_, &EmojiPanel::emojiSelected, this, &EmojiPickButton::emojiSelected);
+ if (panel_.isNull()) {
+ panel_ = QSharedPointer<EmojiPanel>(new EmojiPanel(this));
+ connect(
+ panel_.data(), &EmojiPanel::emojiSelected, this, &EmojiPickButton::emojiSelected);
}
QPoint pos(rect().x(), rect().y());
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();
diff --git a/src/RoomList.cc b/src/RoomList.cc
index 0383be6e..90d8b83c 100644
--- a/src/RoomList.cc
+++ b/src/RoomList.cc
@@ -168,16 +168,23 @@ RoomList::setInitialRooms(const QMap<QString, QSharedPointer<RoomSettings>> &set
void
RoomList::openLeaveRoomDialog(const QString &room_id)
{
- leaveRoomDialog_ = new LeaveRoomDialog(this);
- connect(leaveRoomDialog_, &LeaveRoomDialog::closing, this, [=](bool leaving) {
- closeLeaveRoomDialog(leaving, room_id);
- });
+ if (leaveRoomDialog_.isNull()) {
+ leaveRoomDialog_ = QSharedPointer<LeaveRoomDialog>(new LeaveRoomDialog(this));
- leaveRoomModal = new OverlayModal(MainWindow::instance(), leaveRoomDialog_);
- leaveRoomModal->setDuration(0);
- leaveRoomModal->setColor(QColor(55, 55, 55, 170));
+ connect(leaveRoomDialog_.data(),
+ &LeaveRoomDialog::closing,
+ this,
+ [=](bool leaving) { closeLeaveRoomDialog(leaving, room_id); });
+ }
+
+ if (leaveRoomModal_.isNull()) {
+ leaveRoomModal_ = QSharedPointer<OverlayModal>(
+ new OverlayModal(MainWindow::instance(), leaveRoomDialog_.data()));
+ leaveRoomModal_->setDuration(0);
+ leaveRoomModal_->setColor(QColor(30, 30, 30, 170));
+ }
- leaveRoomModal->fadeIn();
+ leaveRoomModal_->fadeIn();
}
void
@@ -266,7 +273,7 @@ RoomList::closeJoinRoomDialog(bool isJoining, QString roomAlias)
void
RoomList::closeLeaveRoomDialog(bool leaving, const QString &room_id)
{
- leaveRoomModal->fadeOut();
+ leaveRoomModal_->fadeOut();
if (leaving) {
client_->leaveRoom(room_id);
diff --git a/src/TopRoomBar.cc b/src/TopRoomBar.cc
index f8a7e600..3f93cad3 100644
--- a/src/TopRoomBar.cc
+++ b/src/TopRoomBar.cc
@@ -86,15 +86,24 @@ TopRoomBar::TopRoomBar(QWidget *parent)
leaveRoom_ = new QAction(tr("Leave room"), this);
connect(leaveRoom_, &QAction::triggered, this, [=]() {
- leaveRoomDialog_ = new LeaveRoomDialog(this);
- connect(
- leaveRoomDialog_, SIGNAL(closing(bool)), this, SLOT(closeLeaveRoomDialog(bool)));
-
- leaveRoomModal = new OverlayModal(MainWindow::instance(), leaveRoomDialog_);
- leaveRoomModal->setDuration(100);
- leaveRoomModal->setColor(QColor(55, 55, 55, 170));
-
- leaveRoomModal->fadeIn();
+ if (leaveRoomDialog_.isNull()) {
+ leaveRoomDialog_ =
+ QSharedPointer<LeaveRoomDialog>(new LeaveRoomDialog(this));
+
+ connect(leaveRoomDialog_.data(),
+ SIGNAL(closing(bool)),
+ this,
+ SLOT(closeLeaveRoomDialog(bool)));
+ }
+
+ if (leaveRoomModal_.isNull()) {
+ leaveRoomModal_ = QSharedPointer<OverlayModal>(
+ new OverlayModal(MainWindow::instance(), leaveRoomDialog_.data()));
+ leaveRoomModal_->setDuration(0);
+ leaveRoomModal_->setColor(QColor(30, 30, 30, 170));
+ }
+
+ leaveRoomModal_->fadeIn();
});
menu_->addAction(toggleNotifications_);
@@ -117,7 +126,7 @@ TopRoomBar::TopRoomBar(QWidget *parent)
void
TopRoomBar::closeLeaveRoomDialog(bool leaving)
{
- leaveRoomModal->fadeOut();
+ leaveRoomModal_->fadeOut();
if (leaving) {
emit leaveRoom();
diff --git a/src/UserInfoWidget.cc b/src/UserInfoWidget.cc
index b65329da..09a75a3b 100644
--- a/src/UserInfoWidget.cc
+++ b/src/UserInfoWidget.cc
@@ -93,18 +93,19 @@ UserInfoWidget::UserInfoWidget(QWidget *parent)
// Show the confirmation dialog.
connect(logoutButton_, &QPushButton::clicked, this, [=]() {
- if (logoutDialog_ == nullptr) {
- logoutDialog_ = new LogoutDialog(this);
- connect(logoutDialog_,
+ if (logoutDialog_.isNull()) {
+ logoutDialog_ = QSharedPointer<LogoutDialog>(new LogoutDialog(this));
+ connect(logoutDialog_.data(),
SIGNAL(closing(bool)),
this,
SLOT(closeLogoutDialog(bool)));
}
- if (logoutModal_ == nullptr) {
- logoutModal_ = new OverlayModal(MainWindow::instance(), logoutDialog_);
+ if (logoutModal_.isNull()) {
+ logoutModal_ = QSharedPointer<OverlayModal>(
+ new OverlayModal(MainWindow::instance(), logoutDialog_.data()));
logoutModal_->setDuration(0);
- logoutModal_->setColor(QColor(55, 55, 55, 170));
+ logoutModal_->setColor(QColor(30, 30, 30, 170));
}
logoutModal_->fadeIn();