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:
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user