From 335cbf8758e4d971288816d8c57be9fc78bd0fdc Mon Sep 17 00:00:00 2001 From: fourtf Date: Wed, 4 Jul 2018 20:42:51 +0200 Subject: [PATCH] added basic download icon to the window frame --- chatterino.pro | 6 +++-- resources/images/download_update.png | Bin 0 -> 344 bytes resources/resources.qrc | 1 + src/widgets/BaseWindow.cpp | 6 +++-- src/widgets/BaseWindow.hpp | 3 ++- src/widgets/Window.cpp | 14 ++++++++++ src/widgets/dialogs/UpdatePromptDialog.cpp | 30 +++++++++++++++++++++ src/widgets/dialogs/UpdatePromptDialog.hpp | 19 +++++++++++++ src/widgets/helper/TitlebarButton.cpp | 6 +++-- src/widgets/helper/TitlebarButton.hpp | 10 ++++++- 10 files changed, 87 insertions(+), 8 deletions(-) create mode 100644 resources/images/download_update.png create mode 100644 src/widgets/dialogs/UpdatePromptDialog.cpp create mode 100644 src/widgets/dialogs/UpdatePromptDialog.hpp diff --git a/chatterino.pro b/chatterino.pro index bee2ef08..b984da7d 100644 --- a/chatterino.pro +++ b/chatterino.pro @@ -225,7 +225,8 @@ SOURCES += \ src/singletons/Theme.cpp \ src/controllers/moderationactions/ModerationActionModel.cpp \ src/widgets/settingspages/LookPage.cpp \ - src/widgets/settingspages/FeelPage.cpp + src/widgets/settingspages/FeelPage.cpp \ + src/widgets/dialogs/UpdatePromptDialog.cpp HEADERS += \ src/Application.hpp \ @@ -398,7 +399,8 @@ HEADERS += \ src/common/Singleton.hpp \ src/controllers/moderationactions/ModerationActionModel.hpp \ src/widgets/settingspages/LookPage.hpp \ - src/widgets/settingspages/FeelPage.hpp + src/widgets/settingspages/FeelPage.hpp \ + src/widgets/dialogs/UpdatePromptDialog.hpp RESOURCES += \ resources/resources.qrc \ diff --git a/resources/images/download_update.png b/resources/images/download_update.png new file mode 100644 index 0000000000000000000000000000000000000000..925194180db9e19e08b7997216f44cb49df118aa GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6P!3HF6DQvv}q!^2X+?^QKos)S9a~60+7BevL9R^{>ru#Ow&bWZ5@w;GXHJfZBW>|`1sog>x3(H%U*acT(?Z_E0@lOpdGUg z-#1EFc#~CX|C@*pMF%fP#XUG+|M0TJg9CX#LXNNBpOo$``%t)S+3Lqj67RQKbs2v< dn^L`(@xwybJ2pLb5kNmNc)I$ztaD0e0suzmfZqTB literal 0 HcmV?d00001 diff --git a/resources/resources.qrc b/resources/resources.qrc index b930ed4b..146c2c66 100644 --- a/resources/resources.qrc +++ b/resources/resources.qrc @@ -72,6 +72,7 @@ contributors.txt avatars/fourtf.png avatars/pajlada.png + images/download_update.png qt.conf diff --git a/src/widgets/BaseWindow.cpp b/src/widgets/BaseWindow.cpp index af776185..d0c4a8cc 100644 --- a/src/widgets/BaseWindow.cpp +++ b/src/widgets/BaseWindow.cpp @@ -318,8 +318,8 @@ void BaseWindow::mouseMoveEvent(QMouseEvent *event) BaseWidget::mouseMoveEvent(event); } -void BaseWindow::addTitleBarButton(const TitleBarButton::Style &style, - std::function onClicked) +TitleBarButton *BaseWindow::addTitleBarButton(const TitleBarButton::Style &style, + std::function onClicked) { TitleBarButton *button = new TitleBarButton; button->setScaleIndependantSize(30, 30); @@ -329,6 +329,8 @@ void BaseWindow::addTitleBarButton(const TitleBarButton::Style &style, button->setButtonStyle(style); QObject::connect(button, &TitleBarButton::clicked, this, [onClicked] { onClicked(); }); + + return button; } RippleEffectLabel *BaseWindow::addTitleBarLabel(std::function onClicked) diff --git a/src/widgets/BaseWindow.hpp b/src/widgets/BaseWindow.hpp index 883cf0a4..77fcc818 100644 --- a/src/widgets/BaseWindow.hpp +++ b/src/widgets/BaseWindow.hpp @@ -36,7 +36,8 @@ public: QWidget *getLayoutContainer(); bool hasCustomWindowFrame(); - void addTitleBarButton(const TitleBarButton::Style &style, std::function onClicked); + TitleBarButton *addTitleBarButton(const TitleBarButton::Style &style, + std::function onClicked); RippleEffectLabel *addTitleBarLabel(std::function onClicked); void setStayInScreenRect(bool value); diff --git a/src/widgets/Window.cpp b/src/widgets/Window.cpp index 99bc9ce6..28638ef0 100644 --- a/src/widgets/Window.cpp +++ b/src/widgets/Window.cpp @@ -10,6 +10,7 @@ #include "widgets/AccountSwitchPopupWidget.hpp" #include "widgets/Notebook.hpp" #include "widgets/dialogs/SettingsDialog.hpp" +#include "widgets/dialogs/UpdatePromptDialog.hpp" #include "widgets/dialogs/WelcomeDialog.hpp" #include "widgets/helper/Shortcut.hpp" #include "widgets/splits/Split.hpp" @@ -52,10 +53,23 @@ Window::Window(WindowType _type) }); if (this->hasCustomWindowFrame() && _type == Window::Main) { + // settings this->addTitleBarButton(TitleBarButton::Settings, [app] { app->windows->showSettingsDialog(); // }); + // updates + auto update = this->addTitleBarButton(TitleBarButton::None, [] {}); + update->setPixmap(QPixmap(":/images/download_update.png")); + QObject::connect(update, &TitleBarButton::clicked, this, [this, update] { + auto dialog = new UpdatePromptDialog(); + dialog->setAttribute(Qt::WA_DeleteOnClose); + dialog->move(update->mapToGlobal(QPoint(-100 * this->getScale(), update->height()))); + dialog->show(); + dialog->raise(); + }); + + // account this->userLabel = this->addTitleBarLabel([this, app] { app->windows->showAccountSelectPopup( this->userLabel->mapToGlobal(this->userLabel->rect().bottomLeft())); // diff --git a/src/widgets/dialogs/UpdatePromptDialog.cpp b/src/widgets/dialogs/UpdatePromptDialog.cpp new file mode 100644 index 00000000..2cc4df2a --- /dev/null +++ b/src/widgets/dialogs/UpdatePromptDialog.cpp @@ -0,0 +1,30 @@ +#include "UpdatePromptDialog.hpp" + +#include "util/LayoutCreator.hpp" +#include "widgets/Label.hpp" + +#include +#include +#include + +namespace chatterino { + +UpdatePromptDialog::UpdatePromptDialog() + : BaseWindow(nullptr, BaseWindow::Flags(BaseWindow::Frameless | BaseWindow::TopMost | + BaseWindow::EnableCustomFrame)) +{ + auto layout = LayoutCreator(this).setLayoutType(); + + layout.emplace