Changeset 59


Ignore:
Timestamp:
Jan 29, 2006, 10:16:16 PM (15 years ago)
Author:
titer
Message:

Moved the quit code to applicationWillTerminate:

Location:
trunk/macosx
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/macosx/Controller.h

    r58 r59  
    8888- (void) quitSheetDidEnd:   (NSWindow *)sheet returnCode:(int)returnCode
    8989                            contextInfo:(void  *)contextInfo;
    90 - (void) quitProcedure;
    9190                       
    9291- (void) stopTorrent:               (id) sender;
  • trunk/macosx/Controller.m

    r58 r59  
    200200    }                                                                           
    201201   
    202     [self quitProcedure];
    203202    return NSTerminateNow;
    204203}
     
    207206                        contextInfo:(void  *)contextInfo
    208207{
    209     if (returnCode == NSAlertDefaultReturn)
    210         [self quitProcedure];
    211        
    212208    [NSApp stopModal];
    213     [NSApp replyToApplicationShouldTerminate: (returnCode == NSAlertDefaultReturn)];
    214 }
    215 
    216 - (void) quitProcedure
     209    [NSApp replyToApplicationShouldTerminate:
     210        (returnCode == NSAlertDefaultReturn)];
     211}
     212
     213- (void) applicationWillTerminate: (NSNotification *) notification
    217214{
    218215    int i;
    219     NSMutableArray * history = [NSMutableArray
    220         arrayWithCapacity: TR_MAX_TORRENT_COUNT];
    221216   
    222217    // Stop updating the interface
     
    224219    [fUpdateTimer invalidate];
    225220
     221    //clear badge
     222    [fBadger clearBadge];
     223    [fBadger release];                                                         
     224
    226225    // Save history and stop running torrents
     226    NSMutableArray * history = [NSMutableArray arrayWithCapacity: fCount];
     227    BOOL active;
    227228    for( i = 0; i < fCount; i++ )
    228229    {
     230        active = fStat[i].status &
     231            ( TR_STATUS_CHECK | TR_STATUS_DOWNLOAD | TR_STATUS_SEED );
     232
    229233        [history addObject: [NSDictionary dictionaryWithObjectsAndKeys:
    230234            [NSString stringWithUTF8String: fStat[i].info.torrent],
     
    232236            [NSString stringWithUTF8String: tr_torrentGetFolder( fHandle, i )],
    233237            @"DownloadFolder",
    234             ( fStat[i].status & ( TR_STATUS_CHECK | TR_STATUS_DOWNLOAD |
    235                 TR_STATUS_SEED ) ) ? @"NO" : @"YES",
     238            active ? @"NO" : @"YES",
    236239            @"Paused",
    237240            NULL]];
    238241
    239         if( fStat[i].status & ( TR_STATUS_CHECK |
    240                 TR_STATUS_DOWNLOAD | TR_STATUS_SEED ) )
     242        if( active )
    241243        {
    242244            tr_torrentStop( fHandle, i );
    243245        }
    244246    }
     247    [fDefaults setObject: history forKey: @"History"];
    245248
    246249    // Wait for torrents to stop (5 seconds timeout)
     
    248251    while( fCount > 0 )
    249252    {
    250         while( [[NSDate date] timeIntervalSinceDate: start] < 5 )
    251         {
    252             fCount = tr_torrentStat( fHandle, &fStat );
    253             if( fStat[0].status & TR_STATUS_PAUSE )
    254             {
    255                 break;
    256             }
    257             usleep( 500000 );
     253        while( [[NSDate date] timeIntervalSinceDate: start] < 5 &&
     254                !( fStat[0].status & TR_STATUS_PAUSE ) )
     255        {
     256            usleep( 100000 );
     257            tr_torrentStat( fHandle, &fStat );
    258258        }
    259259        tr_torrentClose( fHandle, 0 );
     
    262262
    263263    tr_close( fHandle );
    264 
    265     [fDefaults setObject: history forKey: @"History"];
    266264}
    267265
Note: See TracChangeset for help on using the changeset viewer.