diff --git a/data/gui/dialogs/confirm_dialog.stkgui b/data/gui/dialogs/confirm_dialog.stkgui index b4117780f..600e28fe3 100644 --- a/data/gui/dialogs/confirm_dialog.stkgui +++ b/data/gui/dialogs/confirm_dialog.stkgui @@ -5,7 +5,7 @@ - + diff --git a/src/main.cpp b/src/main.cpp index 19a72d70a..af34520cb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2410,6 +2410,22 @@ int main(int argc, char *argv[]) } #endif + class DriverDialog : + public MessageDialog::IConfirmDialogListener + { + public: + virtual void onConfirm() + { + GUIEngine::ModalDialog::dismiss(); + } // onConfirm + // -------------------------------------------------------- + virtual void onCancel() + { + UserConfigParams::m_old_driver_popup = false; + GUIEngine::ModalDialog::dismiss(); + } // onCancel + }; // DriverDialog + if (GraphicsRestrictions::isDisabled( GraphicsRestrictions::GR_DRIVER_RECENT_ENOUGH)) { @@ -2418,7 +2434,9 @@ int main(int argc, char *argv[]) MessageDialog *dialog = new MessageDialog(_("Your driver version is too old. " "Please install the latest video " - "drivers."), /*from queue*/ true); + "drivers."), + MessageDialog::MESSAGE_DIALOG_OK_DONTSHOWAGAIN, + new DriverDialog(), /*delete_listener*/ true, /*from queue*/ true); GUIEngine::DialogQueue::get()->pushDialog(dialog); } Log::warn("OpenGL", "Driver is too old!"); @@ -2438,7 +2456,9 @@ int main(int argc, char *argv[]) "check if an update is available. SuperTuxKart " "recommends a driver supporting %s or better. The game " "will likely still run, but in a reduced-graphics mode.", - version), /*from queue*/ true); + version), + MessageDialog::MESSAGE_DIALOG_OK_DONTSHOWAGAIN, + new DriverDialog(), /*delete_listener*/ true, /*from queue*/ true); GUIEngine::DialogQueue::get()->pushDialog(dialog); } #endif diff --git a/src/states_screens/dialogs/message_dialog.cpp b/src/states_screens/dialogs/message_dialog.cpp index 654174231..f493918b8 100644 --- a/src/states_screens/dialogs/message_dialog.cpp +++ b/src/states_screens/dialogs/message_dialog.cpp @@ -136,6 +136,13 @@ void MessageDialog::loadedFromFile() IconButtonWidget* yesbtn = getWidget("confirm"); yesbtn->setText(_("OK")); } + else if (m_type == MessageDialog::MESSAGE_DIALOG_OK_DONTSHOWAGAIN) + { + IconButtonWidget* yesbtn = getWidget("confirm"); + yesbtn->setText(_("OK")); + IconButtonWidget* cancel = getWidget("cancel"); + cancel->setText(_("Don't show again")); + } } // ---------------------------------------------------------------------------- diff --git a/src/states_screens/dialogs/message_dialog.hpp b/src/states_screens/dialogs/message_dialog.hpp index b49f29341..a98956f83 100644 --- a/src/states_screens/dialogs/message_dialog.hpp +++ b/src/states_screens/dialogs/message_dialog.hpp @@ -63,7 +63,8 @@ public: }; enum MessageDialogType { MESSAGE_DIALOG_OK, MESSAGE_DIALOG_CONFIRM, - MESSAGE_DIALOG_OK_CANCEL, MESSAGE_DIALOG_YESNO }; + MESSAGE_DIALOG_OK_CANCEL, MESSAGE_DIALOG_YESNO, + MESSAGE_DIALOG_OK_DONTSHOWAGAIN }; MessageDialogType m_type;