Make default values correspond to the defaults in DialogDriver.h. When the user clicks Ignore, make sure it really does get ignored. Implement AbortRety.

This commit is contained in:
Steve Checkoway
2005-12-24 02:08:01 +00:00
parent 9a2229999c
commit 3f14485b5d
2 changed files with 33 additions and 23 deletions
@@ -1,60 +1,69 @@
#include "global.h" #include "global.h"
#include "RageUtil.h"
#include "DialogDriver_Cocoa.h" #include "DialogDriver_Cocoa.h"
#include "RageThreads.h" #include "RageThreads.h"
#include "ProductInfo.h" #include "ProductInfo.h"
#include <Carbon/Carbon.h> #include <Carbon/Carbon.h>
static CFOptionFlags ShowAlert( CFOptionFlags flags, CFStringRef message, static CFOptionFlags ShowAlert( CFOptionFlags flags, const CString& sMessage, CFStringRef OK,
CFStringRef OK, CFStringRef cancel = NULL ) CFStringRef alt = NULL, CFStringRef other = NULL)
{ {
CFOptionFlags result; CFOptionFlags result;
CFStringRef text = CFStringCreateWithCString( NULL, sMessage, kCFStringEncodingUTF8 );
CFUserNotificationDisplayAlert( 0.0, flags, NULL, NULL, NULL, CFSTR(PRODUCT_NAME), CFUserNotificationDisplayAlert( 0.0, flags, NULL, NULL, NULL, CFSTR(PRODUCT_NAME),
message, OK, cancel, NULL, &result ); text, OK, alt, other, &result );
CFRelease( text );
return result; return result;
} }
void DialogDriver_Cocoa::OK( CString sMessage, CString sID ) void DialogDriver_Cocoa::OK( CString sMessage, CString sID )
{ {
CFStringRef message = CFStringCreateWithCString( NULL, sMessage, kCFStringEncodingASCII ); CFOptionFlags result = ShowAlert( kCFUserNotificationNoteAlertLevel, sMessage,
CFOptionFlags result = ShowAlert( kCFUserNotificationNoteAlertLevel, message,
CFSTR("OK"), CFSTR("Don't show again") ); CFSTR("OK"), CFSTR("Don't show again") );
CFRelease( message );
if( result == kCFUserNotificationAlternateResponse ) if( result == kCFUserNotificationAlternateResponse )
Dialog::IgnoreMessage( sID ); Dialog::IgnoreMessage( sID );
} }
void DialogDriver_Cocoa::Error( CString sError, CString sID ) void DialogDriver_Cocoa::Error( CString sError, CString sID )
{ {
CFStringRef error = CFStringCreateWithCString( NULL, sError, kCFStringEncodingASCII ); ShowAlert( kCFUserNotificationStopAlertLevel, sError, CFSTR("OK") );
ShowAlert( kCFUserNotificationStopAlertLevel, error, CFSTR("OK") );
CFRelease( error );
} }
Dialog::Result DialogDriver_Cocoa::AbortRetryIgnore( CString sMessage, CString sID ) Dialog::Result DialogDriver_Cocoa::AbortRetryIgnore( CString sMessage, CString sID )
{ {
CFStringRef error = CFStringCreateWithCString( NULL, sMessage, kCFStringEncodingASCII ); CFOptionFlags result = ShowAlert( kCFUserNotificationNoteAlertLevel, sMessage, CFSTR("Ignore"),
CFOptionFlags result = ShowAlert( kCFUserNotificationNoteAlertLevel, error, CFSTR("Retry"), CFSTR("Ignore") ); CFSTR("Retry"), CFSTR("Abort") );
Dialog::Result ret;
CFRelease( error );
switch( result ) switch( result )
{ {
case kCFUserNotificationDefaultResponse: case kCFUserNotificationDefaultResponse:
ret = Dialog::retry; Dialog::IgnoreMessage( sID );
break; return Dialog::ignore;
case kCFUserNotificationAlternateResponse: case kCFUserNotificationAlternateResponse:
case kCFUserNotificationCancelResponse: return Dialog::retry;
ret = Dialog::ignore; case kCFUserNotificationOtherResponse:
break; return Dialog::abort;
default: default:
ASSERT(0); FAIL_M( ssprintf("Invalid response: %d.", int(result)) );
ret = Dialog::ignore;
} }
}
return ret; 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)) );
}
} }
/* /*
@@ -9,6 +9,7 @@ public:
void Error( CString sError, CString sID ); void Error( CString sError, CString sID );
void OK( CString sMessage, CString sID ); void OK( CString sMessage, CString sID );
Dialog::Result AbortRetryIgnore( CString sMessage, CString sID ); Dialog::Result AbortRetryIgnore( CString sMessage, CString sID );
Dialog::Result AbortRetry( CString sMessage, CString sID );
}; };
#define USE_DIALOG_DRIVER_COCOA #define USE_DIALOG_DRIVER_COCOA