Add a IConfirmDialogListener to the 'can I access iternet' popup + while we're at it, modify the Dialog class a bit to simplify memory management in some cases
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@8147 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
18
src/main.cpp
18
src/main.cpp
@@ -912,11 +912,23 @@ int main(int argc, char *argv[] )
|
||||
StateManager::get()->pushScreen(MainMenuScreen::getInstance());
|
||||
if(UserConfigParams::m_internet_status==NetworkHttp::IPERM_NOT_ASKED)
|
||||
{
|
||||
class ConfirmServer : public MessageDialog::IConfirmDialogListener
|
||||
{
|
||||
public:
|
||||
virtual void onConfirm()
|
||||
{
|
||||
UserConfigParams::m_internet_status = NetworkHttp::IPERM_ALLOWED;
|
||||
}
|
||||
|
||||
virtual void onCancel()
|
||||
{
|
||||
UserConfigParams::m_internet_status = NetworkHttp::IPERM_NOT_ALLOWED;
|
||||
}
|
||||
};
|
||||
|
||||
new MessageDialog(_("SuperTuxKart now supports a news server "
|
||||
"to display updates. To enable this, go to options, then "
|
||||
"User Interface, and select \"Internet STK news\"."));
|
||||
// FIXME: Needs feedback from user, then set the value
|
||||
UserConfigParams::m_internet_status=NetworkHttp::IPERM_NOT_ASKED;
|
||||
"User Interface, and select \"Internet STK news\"."), new ConfirmServer(), true);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -27,12 +27,13 @@ using namespace GUIEngine;
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------
|
||||
|
||||
MessageDialog::MessageDialog(irr::core::stringw msg, IConfirmDialogListener* listener) :
|
||||
MessageDialog::MessageDialog(irr::core::stringw msg, IConfirmDialogListener* listener, bool own_listener) :
|
||||
ModalDialog(0.6f, 0.6f)
|
||||
{
|
||||
loadFromFile("confirm_dialog.stkgui");
|
||||
|
||||
m_listener = listener;
|
||||
m_own_listener = own_listener;
|
||||
|
||||
LabelWidget* message = getWidget<LabelWidget>("title");
|
||||
message->setText( msg.c_str(), false );
|
||||
@@ -46,6 +47,7 @@ MessageDialog::MessageDialog(irr::core::stringw msg) :
|
||||
loadFromFile("confirm_dialog.stkgui");
|
||||
|
||||
m_listener = NULL;
|
||||
m_own_listener = false;
|
||||
|
||||
LabelWidget* message = getWidget<LabelWidget>("title");
|
||||
message->setText( msg.c_str(), false );
|
||||
|
||||
@@ -56,16 +56,17 @@ public:
|
||||
private:
|
||||
|
||||
IConfirmDialogListener* m_listener;
|
||||
bool m_own_listener;
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* \param msg Message to display in the dialog
|
||||
* \param listener A listener object to notify when the user made a choice. Note that
|
||||
* MessageDialog does not take ownership of the listener and will not
|
||||
* delete it.
|
||||
* \param listener A listener object to notify when the user made a choice.
|
||||
* \param If set to true, 'listener' will be owned by this dialog and deleted
|
||||
* along with the dialog.
|
||||
*/
|
||||
MessageDialog(irr::core::stringw msg, IConfirmDialogListener* listener);
|
||||
MessageDialog(irr::core::stringw msg, IConfirmDialogListener* listener, bool delete_listener);
|
||||
|
||||
/**
|
||||
* Variant of MessageDialog where cancelling is not possible (i.e. just shows a message box with OK)
|
||||
@@ -74,7 +75,7 @@ public:
|
||||
MessageDialog(irr::core::stringw msg);
|
||||
|
||||
|
||||
~MessageDialog() { m_listener = NULL; }
|
||||
~MessageDialog() { if (m_own_listener) delete m_listener; m_listener = NULL; }
|
||||
|
||||
virtual void onEnterPressedInternal();
|
||||
|
||||
|
||||
@@ -443,7 +443,7 @@ void OptionsScreenInput2::eventCallback(Widget* widget, const std::string& name,
|
||||
{
|
||||
// keyboard configs may be deleted
|
||||
//I18N: shown before deleting an input configuration
|
||||
new MessageDialog( _("Are you sure you want to permanently delete this configuration?"), this );
|
||||
new MessageDialog( _("Are you sure you want to permanently delete this configuration?"), this, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user