fixed creating messagebox on wrong thread

This commit is contained in:
fourtf
2018-06-21 22:44:48 +02:00
parent 713d0c9599
commit 00d538b368
2 changed files with 56 additions and 50 deletions
+47 -44
View File
@@ -26,60 +26,63 @@ LastRunCrashDialog::LastRunCrashDialog()
layout->addSpacing(16);
auto update = layout.emplace<QLabel>();
// auto update = layout.emplace<QLabel>();
auto buttons = layout.emplace<QDialogButtonBox>();
auto *installUpdateButton = buttons->addButton("Install Update", QDialogButtonBox::NoRole);
installUpdateButton->setEnabled(false);
QObject::connect(installUpdateButton, &QPushButton::clicked, [this, update]() mutable {
auto &updateManager = singletons::UpdateManager::getInstance();
// auto *installUpdateButton = buttons->addButton("Install Update",
// QDialogButtonBox::NoRole); installUpdateButton->setEnabled(false);
// QObject::connect(installUpdateButton, &QPushButton::clicked, [this, update]() mutable {
// auto &updateManager = singletons::UpdateManager::getInstance();
updateManager.installUpdates();
this->setEnabled(false);
update->setText("Downloading updates...");
});
// updateManager.installUpdates();
// this->setEnabled(false);
// update->setText("Downloading updates...");
// });
auto *okButton = buttons->addButton("Ignore", QDialogButtonBox::ButtonRole::NoRole);
QObject::connect(okButton, &QPushButton::clicked, [this] { this->accept(); });
// Updates
auto updateUpdateLabel = [update]() mutable {
auto &updateManager = singletons::UpdateManager::getInstance();
// auto updateUpdateLabel = [update]() mutable {
// auto &updateManager = singletons::UpdateManager::getInstance();
switch (updateManager.getStatus()) {
case singletons::UpdateManager::None: {
update->setText("Not checking for updates.");
} break;
case singletons::UpdateManager::Searching: {
update->setText("Checking for updates...");
} break;
case singletons::UpdateManager::UpdateAvailable: {
update->setText("Update available.");
} break;
case singletons::UpdateManager::NoUpdateAvailable: {
update->setText("No update abailable.");
} break;
case singletons::UpdateManager::SearchFailed: {
update->setText("Error while searching for update.\nEither the update service is "
"temporarily down or there is an issue with your installation.");
} break;
case singletons::UpdateManager::Downloading: {
update->setText(
"Downloading the update. Chatterino will close once the download is done.");
} break;
case singletons::UpdateManager::DownloadFailed: {
update->setText("Download failed.");
} break;
case singletons::UpdateManager::WriteFileFailed: {
update->setText("Writing the update file to the hard drive failed.");
} break;
}
};
// switch (updateManager.getStatus()) {
// case singletons::UpdateManager::None: {
// update->setText("Not checking for updates.");
// } break;
// case singletons::UpdateManager::Searching: {
// update->setText("Checking for updates...");
// } break;
// case singletons::UpdateManager::UpdateAvailable: {
// update->setText("Update available.");
// } break;
// case singletons::UpdateManager::NoUpdateAvailable: {
// update->setText("No update abailable.");
// } break;
// case singletons::UpdateManager::SearchFailed: {
// update->setText("Error while searching for update.\nEither the update service
// is "
// "temporarily down or there is an issue with your
// installation.");
// } break;
// case singletons::UpdateManager::Downloading: {
// update->setText(
// "Downloading the update. Chatterino will close once the download is
// done.");
// } break;
// case singletons::UpdateManager::DownloadFailed: {
// update->setText("Download failed.");
// } break;
// case singletons::UpdateManager::WriteFileFailed: {
// update->setText("Writing the update file to the hard drive failed.");
// } break;
// }
// };
updateUpdateLabel();
this->managedConnect(updateManager.statusUpdated, [updateUpdateLabel](auto) mutable {
util::postToThread([updateUpdateLabel]() mutable { updateUpdateLabel(); });
});
// updateUpdateLabel();
// this->managedConnect(updateManager.statusUpdated, [updateUpdateLabel](auto) mutable {
// util::postToThread([updateUpdateLabel]() mutable { updateUpdateLabel(); });
// });
}
} // namespace widgets