Changeset 1268

Show
Ignore:
Timestamp:
06/06/10 17:25:22 (2 years ago)
Author:
gbooker
Message:

Made the confirm prompt more flexible.

Location:
trunk/SapphireFrappliance
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/SapphireFrappliance/Browser/SapphireMarkMenu.m

    r1251 r1268  
    693693                        case COMMAND_DELETE_PATH: 
    694694                        { 
    695                                 NSInvocation *invoke = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:@selector(deletePath:)]]; 
    696                                 [invoke setSelector:@selector(deletePath:)]; 
     695                                NSInvocation *invoke = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:@selector(deleteReturnedResult:atPath:)]]; 
     696                                [invoke setSelector:@selector(deleteReturnedResult:atPath:)]; 
    697697                                [invoke setTarget:self]; 
    698                                 [invoke setArgument:&dirMeta atIndex:2]; 
     698                                [invoke setArgument:&dirMeta atIndex:3]; 
    699699                                 
    700700                                SapphireConfirmPrompt *confirm = [[SapphireConfirmPrompt alloc] initWithScene:[self scene] title:BRLocalizedString(@"Delete Directory?", @"Delete Directory Prompt Title") subtitle:[NSString stringWithFormat:BRLocalizedString(@"Are you sure you wish to delete %@?", @"parameter is file/dir that is being deleted"), [[dirMeta path] lastPathComponent]] invokation:invoke]; 
     
    783783                        case COMMAND_DELETE_PATH: 
    784784                        { 
    785                                 NSInvocation *invoke = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:@selector(deletePath:)]]; 
    786                                 [invoke setSelector:@selector(deletePath:)]; 
     785                                NSInvocation *invoke = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:@selector(deleteReturnedResult:atPath:)]]; 
     786                                [invoke setSelector:@selector(deleteReturnedResult:atPath:)]; 
    787787                                [invoke setTarget:self]; 
    788                                 [invoke setArgument:&fileMeta atIndex:2]; 
     788                                [invoke setArgument:&fileMeta atIndex:3]; 
    789789                                 
    790790                                SapphireConfirmPrompt *confirm = [[SapphireConfirmPrompt alloc] initWithScene:[self scene] title:BRLocalizedString(@"Delete File?", @"Delete File Prompt Title") subtitle:[NSString stringWithFormat:BRLocalizedString(@"Are you sure you wish to delete %@?", @"parameter is file/dir that is being deleted"), [[fileMeta path] lastPathComponent]] invokation:invoke]; 
     
    839839} 
    840840 
    841 - (BRControl *)deletePath:(id <SapphireMetaData>)meta 
    842 { 
     841- (BRControl *)deleteReturnedResult:(SapphireConfirmPromptResult)result atPath:(id <SapphireMetaData>)meta 
     842{ 
     843        if(result != SapphireConfirmPromptResultOK) 
     844                return nil; 
     845         
    843846        @try { 
    844847                NSManagedObjectContext *moc = [meta managedObjectContext]; 
  • trunk/SapphireFrappliance/FRAppliance/SapphireConfirmPrompt.h

    r770 r1268  
    2222#import <SapphireCompatClasses/SapphireLayoutManager.h> 
    2323 
     24typedef enum { 
     25        SapphireConfirmPromptResultAbort, 
     26        SapphireConfirmPromptResultCancel, 
     27        SapphireConfirmPromptResultOK, 
     28} SapphireConfirmPromptResult; 
     29 
    2430@interface SapphireConfirmPrompt : SapphireCenteredMenuController <SapphireLayoutDelegate>{ 
    2531        NSInvocation                    *invoke;                        /*!< @brief The invokation to make*/ 
  • trunk/SapphireFrappliance/FRAppliance/SapphireConfirmPrompt.m

    r939 r1268  
    8181} 
    8282 
     83- (void)wasPopped 
     84{ 
     85        SapphireConfirmPromptResult result = SapphireConfirmPromptResultAbort; 
     86        [invoke setArgument:&result atIndex:2]; 
     87        [invoke invoke]; 
     88        [super wasPopped]; 
     89} 
     90 
    8391- (long) itemCount 
    8492{ 
     
    125133- (void)itemSelected:(long)row 
    126134{ 
     135        SapphireConfirmPromptResult result = SapphireConfirmPromptResultCancel; 
    127136        if(row == 1) 
    128         { 
    129                 [invoke invoke]; 
    130                 BRControl *ret = nil; 
    131                 [invoke getReturnValue:&ret]; 
    132                 if(ret != nil) 
    133                         [[self stack] swapController:ret]; 
    134                 else 
    135                         [[self stack] popController]; 
    136         } 
     137                result = SapphireConfirmPromptResultOK; 
     138         
     139        [invoke setArgument:&result atIndex:2]; 
     140        [invoke invoke]; 
     141        BRControl *ret = nil; 
     142        [invoke getReturnValue:&ret]; 
     143        [invoke autorelease]; 
     144        invoke = nil; 
     145        if(ret != nil) 
     146                [[self stack] swapController:ret]; 
    137147        else 
    138148                [[self stack] popController];