put the update button code into it's own file

This commit is contained in:
fourtf
2018-07-05 12:52:36 +02:00
parent ef13aef7df
commit 59332270b5
7 changed files with 123 additions and 65 deletions
+48
View File
@@ -0,0 +1,48 @@
#include "InitUpdateButton.hpp"
#include "widgets/dialogs/UpdatePromptDialog.hpp"
#include "widgets/helper/RippleEffectButton.hpp"
namespace chatterino {
void initUpdateButton(RippleEffectButton &button, std::unique_ptr<UpdatePromptDialog> &handle,
pajlada::Signals::SignalHolder &signalHolder)
{
button.hide();
// show update prompt when clicking the button
QObject::connect(&button, &RippleEffectButton::clicked, [&button, &handle] {
auto dialog = new UpdatePromptDialog();
dialog->setActionOnFocusLoss(BaseWindow::Delete);
dialog->move(button.mapToGlobal(QPoint(int(-100 * button.getScale()), button.height())));
dialog->show();
dialog->raise();
dialog->buttonClicked.connect([&button](auto buttonType) {
switch (buttonType) {
case UpdatePromptDialog::Dismiss: {
button.hide();
} break;
}
});
handle.reset(dialog);
dialog->closing.connect([&handle] { handle.release(); });
});
// update image when state changes
auto updateChange = [&button](auto) {
button.setVisible(Updates::getInstance().shouldShowUpdateButton());
auto imageUrl = Updates::getInstance().isError() ? ":/images/download_update_error.png"
: ":/images/download_update.png";
button.setPixmap(QPixmap(imageUrl));
};
updateChange(Updates::getInstance().getStatus());
signalHolder.managedConnect(Updates::getInstance().statusUpdated,
[updateChange](auto status) { updateChange(status); });
}
} // namespace chatterino