From 3f14485b5de9dcf9bf0701ec31ab0bdb96b7eb36 Mon Sep 17 00:00:00 2001 From: Steve Checkoway Date: Sat, 24 Dec 2005 02:08:01 +0000 Subject: [PATCH] Make default values correspond to the defaults in DialogDriver.h. When the user clicks Ignore, make sure it really does get ignored. Implement AbortRety. --- .../src/arch/Dialog/DialogDriver_Cocoa.cpp | 55 +++++++++++-------- .../src/arch/Dialog/DialogDriver_Cocoa.h | 1 + 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/stepmania/src/arch/Dialog/DialogDriver_Cocoa.cpp b/stepmania/src/arch/Dialog/DialogDriver_Cocoa.cpp index ca753d2b5f..651009cdc7 100644 --- a/stepmania/src/arch/Dialog/DialogDriver_Cocoa.cpp +++ b/stepmania/src/arch/Dialog/DialogDriver_Cocoa.cpp @@ -1,60 +1,69 @@ #include "global.h" +#include "RageUtil.h" #include "DialogDriver_Cocoa.h" #include "RageThreads.h" #include "ProductInfo.h" #include -static CFOptionFlags ShowAlert( CFOptionFlags flags, CFStringRef message, - CFStringRef OK, CFStringRef cancel = NULL ) +static CFOptionFlags ShowAlert( CFOptionFlags flags, const CString& sMessage, CFStringRef OK, + CFStringRef alt = NULL, CFStringRef other = NULL) { CFOptionFlags result; + CFStringRef text = CFStringCreateWithCString( NULL, sMessage, kCFStringEncodingUTF8 ); CFUserNotificationDisplayAlert( 0.0, flags, NULL, NULL, NULL, CFSTR(PRODUCT_NAME), - message, OK, cancel, NULL, &result ); + text, OK, alt, other, &result ); + CFRelease( text ); return result; } void DialogDriver_Cocoa::OK( CString sMessage, CString sID ) { - CFStringRef message = CFStringCreateWithCString( NULL, sMessage, kCFStringEncodingASCII ); - CFOptionFlags result = ShowAlert( kCFUserNotificationNoteAlertLevel, message, + CFOptionFlags result = ShowAlert( kCFUserNotificationNoteAlertLevel, sMessage, CFSTR("OK"), CFSTR("Don't show again") ); - CFRelease( message ); if( result == kCFUserNotificationAlternateResponse ) Dialog::IgnoreMessage( sID ); } void DialogDriver_Cocoa::Error( CString sError, CString sID ) { - CFStringRef error = CFStringCreateWithCString( NULL, sError, kCFStringEncodingASCII ); - ShowAlert( kCFUserNotificationStopAlertLevel, error, CFSTR("OK") ); - - CFRelease( error ); + ShowAlert( kCFUserNotificationStopAlertLevel, sError, CFSTR("OK") ); } Dialog::Result DialogDriver_Cocoa::AbortRetryIgnore( CString sMessage, CString sID ) { - CFStringRef error = CFStringCreateWithCString( NULL, sMessage, kCFStringEncodingASCII ); - CFOptionFlags result = ShowAlert( kCFUserNotificationNoteAlertLevel, error, CFSTR("Retry"), CFSTR("Ignore") ); - Dialog::Result ret; + CFOptionFlags result = ShowAlert( kCFUserNotificationNoteAlertLevel, sMessage, CFSTR("Ignore"), + CFSTR("Retry"), CFSTR("Abort") ); - CFRelease( error ); switch( result ) { case kCFUserNotificationDefaultResponse: - ret = Dialog::retry; - break; + Dialog::IgnoreMessage( sID ); + return Dialog::ignore; case kCFUserNotificationAlternateResponse: - case kCFUserNotificationCancelResponse: - ret = Dialog::ignore; - break; + return Dialog::retry; + case kCFUserNotificationOtherResponse: + return Dialog::abort; default: - ASSERT(0); - ret = Dialog::ignore; + FAIL_M( ssprintf("Invalid response: %d.", int(result)) ); + } +} + +Dialog::Result DialogDriver_Cocoa::AbortRetry( CString sMessage, CString sID ) +{ + CFOptionFlags result = ShowAlert( kCFUserNotificationNoteAlertLevel, sMessage, + CFSTR("Abort"), CFSTR("Retry") ); + + switch( result ) + { + case kCFUserNotificationDefaultResponse: + return Dialog::abort; + case kCFUserNotificationAlternateResponse: + return Dialog::retry; + default: + FAIL_M( ssprintf("Invalid response: %d.", int(result)) ); } - - return ret; } /* diff --git a/stepmania/src/arch/Dialog/DialogDriver_Cocoa.h b/stepmania/src/arch/Dialog/DialogDriver_Cocoa.h index e9935515d8..4d41b3a8d0 100644 --- a/stepmania/src/arch/Dialog/DialogDriver_Cocoa.h +++ b/stepmania/src/arch/Dialog/DialogDriver_Cocoa.h @@ -9,6 +9,7 @@ public: void Error( CString sError, CString sID ); void OK( CString sMessage, CString sID ); Dialog::Result AbortRetryIgnore( CString sMessage, CString sID ); + Dialog::Result AbortRetry( CString sMessage, CString sID ); }; #define USE_DIALOG_DRIVER_COCOA