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:
auria
2011-03-31 16:17:51 +00:00
parent 78ee0dd2bc
commit da46fe21cb
4 changed files with 25 additions and 10 deletions

View File

@@ -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

View File

@@ -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 );

View File

@@ -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();

View File

@@ -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
{