summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-06-02 18:04:51 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-06-02 18:04:51 +0300
commitb8c8fed655bd54b9bc805fd599577e87a239788d (patch)
tree070faafcc3921f2e14db26d882df83d65ee4e811 /src
parentDon't mark messages from local user as unread (diff)
downloadnheko-b8c8fed655bd54b9bc805fd599577e87a239788d.tar.xz
Show confirmation dialog on logout
Minor stylistic refactoring

closes #29
Diffstat (limited to 'src')
-rw-r--r--src/LoginPage.cc3
-rw-r--r--src/LogoutDialog.cc57
-rw-r--r--src/MainWindow.cc9
-rw-r--r--src/RegisterPage.cc2
-rw-r--r--src/TextInputWidget.cc3
-rw-r--r--src/TopRoomBar.cc1
-rw-r--r--src/UserInfoWidget.cc38
-rw-r--r--src/WelcomePage.cc2
-rw-r--r--src/ui/FlatButton.cc3
9 files changed, 103 insertions, 15 deletions
diff --git a/src/LoginPage.cc b/src/LoginPage.cc

index 4514b607..4329baad 100644 --- a/src/LoginPage.cc +++ b/src/LoginPage.cc
@@ -37,12 +37,10 @@ LoginPage::LoginPage(QSharedPointer<MatrixClient> client, QWidget *parent) back_button_ = new FlatButton(this); back_button_->setMinimumSize(QSize(30, 30)); back_button_->setForegroundColor("#333333"); - back_button_->setCursor(QCursor(Qt::PointingHandCursor)); advanced_settings_button_ = new FlatButton(this); advanced_settings_button_->setMinimumSize(QSize(30, 30)); advanced_settings_button_->setForegroundColor("#333333"); - advanced_settings_button_->setCursor(QCursor(Qt::PointingHandCursor)); QIcon icon; icon.addFile(":/icons/icons/left-angle.png", QSize(), QIcon::Normal, QIcon::Off); @@ -105,7 +103,6 @@ LoginPage::LoginPage(QSharedPointer<MatrixClient> client, QWidget *parent) login_button_->setBackgroundColor(QColor("#333333")); login_button_->setForegroundColor(QColor("white")); login_button_->setMinimumSize(350, 65); - login_button_->setCursor(QCursor(Qt::PointingHandCursor)); login_button_->setFontSize(17); login_button_->setCornerRadius(3); diff --git a/src/LogoutDialog.cc b/src/LogoutDialog.cc new file mode 100644
index 00000000..b8d55449 --- /dev/null +++ b/src/LogoutDialog.cc
@@ -0,0 +1,57 @@ +/* + * nheko Copyright (C) 2017 Konstantinos Sideris <siderisk@auth.gr> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <QLabel> +#include <QVBoxLayout> + +#include "LogoutDialog.h" +#include "Theme.h" + +LogoutDialog::LogoutDialog(QWidget *parent) + : QFrame(parent) +{ + setMaximumSize(400, 400); + setStyleSheet("background-color: #f9f9f9"); + + auto layout = new QVBoxLayout(this); + layout->setSpacing(30); + layout->setMargin(20); + + auto buttonLayout = new QHBoxLayout(); + buttonLayout->setSpacing(0); + buttonLayout->setMargin(0); + + confirmBtn_ = new FlatButton("OK", this); + confirmBtn_->setFontSize(12); + + cancelBtn_ = new FlatButton(tr("CANCEL"), this); + cancelBtn_->setFontSize(12); + + buttonLayout->addStretch(1); + buttonLayout->addWidget(confirmBtn_); + buttonLayout->addWidget(cancelBtn_); + + auto label = new QLabel(tr("Logout. Are you sure?"), this); + label->setFont(QFont("Open Sans", 14)); + label->setStyleSheet("color: #333333"); + + layout->addWidget(label); + layout->addLayout(buttonLayout); + + connect(confirmBtn_, &QPushButton::clicked, [=]() { emit closing(true); }); + connect(cancelBtn_, &QPushButton::clicked, [=]() { emit closing(false); }); +} diff --git a/src/MainWindow.cc b/src/MainWindow.cc
index ce7ca206..783ad5ff 100644 --- a/src/MainWindow.cc +++ b/src/MainWindow.cc
@@ -22,6 +22,8 @@ #include <QSettings> #include <QSystemTrayIcon> +MainWindow *MainWindow::instance_ = nullptr; + MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , progress_modal_{nullptr} @@ -148,6 +150,8 @@ void MainWindow::showChatPage(QString userid, QString homeserver, QString token) login_page_->reset(); chat_page_->bootstrap(userid, homeserver, token); + + instance_ = this; } void MainWindow::showWelcomePage() @@ -204,6 +208,11 @@ bool MainWindow::hasActiveUser() settings.contains("auth/user_id"); } +MainWindow *MainWindow::instance() +{ + return instance_; +} + MainWindow::~MainWindow() { } diff --git a/src/RegisterPage.cc b/src/RegisterPage.cc
index 33df0b62..867ac7f1 100644 --- a/src/RegisterPage.cc +++ b/src/RegisterPage.cc
@@ -35,7 +35,6 @@ RegisterPage::RegisterPage(QSharedPointer<MatrixClient> client, QWidget *parent) back_button_ = new FlatButton(this); back_button_->setMinimumSize(QSize(30, 30)); - back_button_->setCursor(QCursor(Qt::PointingHandCursor)); QIcon icon; icon.addFile(":/icons/icons/left-angle.png", QSize(), QIcon::Normal, QIcon::Off); @@ -109,7 +108,6 @@ RegisterPage::RegisterPage(QSharedPointer<MatrixClient> client, QWidget *parent) register_button_->setBackgroundColor(QColor("#333333")); register_button_->setForegroundColor(QColor("white")); register_button_->setMinimumSize(350, 65); - register_button_->setCursor(QCursor(Qt::PointingHandCursor)); register_button_->setFontSize(17); register_button_->setCornerRadius(3); diff --git a/src/TextInputWidget.cc b/src/TextInputWidget.cc
index 796a1353..82cc8b4e 100644 --- a/src/TextInputWidget.cc +++ b/src/TextInputWidget.cc
@@ -50,7 +50,6 @@ TextInputWidget::TextInputWidget(QWidget *parent) top_layout_->setMargin(0); send_file_button_ = new FlatButton(this); - send_file_button_->setCursor(Qt::PointingHandCursor); QIcon send_file_icon; send_file_icon.addFile(":/icons/icons/clip-dark.png", QSize(), QIcon::Normal, QIcon::Off); @@ -64,7 +63,6 @@ TextInputWidget::TextInputWidget(QWidget *parent) input_->setStyleSheet("color: #333333; font-size: 13px; border-radius: 0; padding-top: 10px;"); send_message_button_ = new FlatButton(this); - send_message_button_->setCursor(Qt::PointingHandCursor); send_message_button_->setForegroundColor(QColor("#acc7dc")); QIcon send_message_icon; @@ -73,7 +71,6 @@ TextInputWidget::TextInputWidget(QWidget *parent) send_message_button_->setIconSize(QSize(24, 24)); emoji_button_ = new EmojiPickButton(this); - emoji_button_->setCursor(Qt::PointingHandCursor); emoji_button_->setForegroundColor(QColor("#acc7dc")); QIcon emoji_icon; diff --git a/src/TopRoomBar.cc b/src/TopRoomBar.cc
index 2f04129e..4b4c8aa5 100644 --- a/src/TopRoomBar.cc +++ b/src/TopRoomBar.cc
@@ -52,7 +52,6 @@ TopRoomBar::TopRoomBar(QWidget *parent) settingsBtn_ = new FlatButton(this); settingsBtn_->setForegroundColor(QColor("#acc7dc")); - settingsBtn_->setCursor(QCursor(Qt::PointingHandCursor)); settingsBtn_->setFixedSize(buttonSize_, buttonSize_); settingsBtn_->setCornerRadius(buttonSize_ / 2); diff --git a/src/UserInfoWidget.cc b/src/UserInfoWidget.cc
index 2fca8925..361689ef 100644 --- a/src/UserInfoWidget.cc +++ b/src/UserInfoWidget.cc
@@ -16,14 +16,19 @@ */ #include <QDebug> +#include <QTimer> #include "FlatButton.h" +#include "MainWindow.h" #include "UserInfoWidget.h" UserInfoWidget::UserInfoWidget(QWidget *parent) : QWidget(parent) , display_name_("User") , user_id_("@user:homeserver.org") + , logoutModal_{nullptr} + , logoutDialog_{nullptr} + , logoutButtonSize_{32} { QSizePolicy sizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); setSizePolicy(sizePolicy); @@ -72,19 +77,46 @@ UserInfoWidget::UserInfoWidget(QWidget *parent) logoutButton_ = new FlatButton(this); logoutButton_->setForegroundColor(QColor("#555459")); - logoutButton_->setCursor(QCursor(Qt::PointingHandCursor)); + logoutButton_->setFixedSize(logoutButtonSize_, logoutButtonSize_); + logoutButton_->setCornerRadius(logoutButtonSize_ / 2); QIcon icon; icon.addFile(":/icons/icons/power-button-off.png", QSize(), QIcon::Normal, QIcon::Off); logoutButton_->setIcon(icon); - logoutButton_->setIconSize(QSize(16, 16)); + logoutButton_->setIconSize(QSize(logoutButtonSize_ / 2, logoutButtonSize_ / 2)); buttonLayout_->addWidget(logoutButton_); topLayout_->addLayout(buttonLayout_); - connect(logoutButton_, SIGNAL(clicked()), this, SIGNAL(logout())); + // Show the confirmation dialog. + connect(logoutButton_, &QPushButton::clicked, this, [=]() { + if (logoutDialog_ == nullptr) { + logoutDialog_ = new LogoutDialog(this); + connect(logoutDialog_, SIGNAL(closing(bool)), this, SLOT(closeLogoutDialog(bool))); + } + + if (logoutModal_ == nullptr) { + logoutModal_ = new OverlayModal(MainWindow::instance(), logoutDialog_); + logoutModal_->setDuration(100); + logoutModal_->setColor(QColor(55, 55, 55, 170)); + } + + logoutModal_->fadeIn(); + }); +} + +void UserInfoWidget::closeLogoutDialog(bool isLoggingOut) +{ + logoutModal_->fadeOut(); + + if (isLoggingOut) { + // Waiting for the modal to fade out. + QTimer::singleShot(100, this, [=]() { + emit logout(); + }); + } } UserInfoWidget::~UserInfoWidget() diff --git a/src/WelcomePage.cc b/src/WelcomePage.cc
index b88c4db1..67d64120 100644 --- a/src/WelcomePage.cc +++ b/src/WelcomePage.cc
@@ -61,7 +61,6 @@ WelcomePage::WelcomePage(QWidget *parent) register_button_->setBackgroundColor(QColor("#333333")); register_button_->setForegroundColor(QColor("white")); register_button_->setMinimumSize(240, 60); - register_button_->setCursor(QCursor(Qt::PointingHandCursor)); register_button_->setFontSize(14); register_button_->setCornerRadius(3); @@ -69,7 +68,6 @@ WelcomePage::WelcomePage(QWidget *parent) login_button_->setBackgroundColor(QColor("#333333")); login_button_->setForegroundColor(QColor("white")); login_button_->setMinimumSize(240, 60); - login_button_->setCursor(QCursor(Qt::PointingHandCursor)); login_button_->setFontSize(14); login_button_->setCornerRadius(3); diff --git a/src/ui/FlatButton.cc b/src/ui/FlatButton.cc
index a4f42a5d..183b2294 100644 --- a/src/ui/FlatButton.cc +++ b/src/ui/FlatButton.cc
@@ -29,6 +29,7 @@ void FlatButton::init() setStyle(&ThemeManager::instance()); setAttribute(Qt::WA_Hover); setMouseTracking(true); + setCursor(QCursor(Qt::PointingHandCursor)); QPainterPath path; path.addRoundedRect(rect(), corner_radius_, corner_radius_); @@ -336,7 +337,7 @@ void FlatButton::mousePressEvent(QMouseEvent *event) ripple->setOpacityStartValue(0.35); ripple->setColor(foregroundColor()); ripple->radiusAnimation()->setDuration(250); - ripple->opacityAnimation()->setDuration(400); + ripple->opacityAnimation()->setDuration(250); ripple_overlay_->addRipple(ripple); }