Changeset 4084

Show
Ignore:
Timestamp:
05/07/06 17:18:31 (3 years ago)
Author:
morris
Message:

Add option to show a dialog for messages and broadcasts

Fixes #113

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • WiredClient/trunk/English.lproj/InfoPlist.strings

    r3420 r4084  
    11/* Localized versions of Info.plist keys */ 
    22CFBundleName = "Wired Client"; 
    3 CFBundleShortVersionString = "1.3"; 
    4 CFBundleGetInfoString = "Wired Client 1.3, Copyright 2003-2006 Zanka Software."; 
     3CFBundleShortVersionString = "1.3.1"; 
     4CFBundleGetInfoString = "Wired Client 1.3.1, Copyright 2003-2006 Zanka Software."; 
    55NSHumanReadableCopyright = "Copyright 2003-2006 Zanka Software."; 
    66 
  • WiredClient/trunk/English.lproj/Preferences.nib/classes.nib

    r3984 r4084  
    102102                "_removeTransfersButton" = NSButton;  
    103103                "_showConnectAtStartupButton" = NSButton;  
     104                "_showDialogButton" = NSButton;  
    104105                "_showDockAtStartupButton" = NSButton;  
    105106                "_showTrackersAtStartupButton" = NSButton;  
  • WiredClient/trunk/English.lproj/Preferences.nib/info.nib

    r3907 r4084  
    1414        </array> 
    1515        <key>IBSystem Version</key> 
    16         <string>8H14</string> 
     16        <string>8I127</string> 
    1717</dict> 
    1818</plist> 
  • WiredClient/trunk/English.lproj/ReleaseNotes.rtf

    r3871 r4084  
    44\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural 
    55 
    6 \f0\b\fs36 \cf2 Wired Client 1.3 Read Me\cf0 \ 
     6\f0\b\fs36 \cf2 Wired Client 1.3.1 Read Me\cf0 \ 
    77\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural 
    88 
     
    2727\f0\b \cf0 \ 
    2828\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural 
    29 \cf2 1.3\ 
     29\cf2 1.3.1\ 
     30\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural 
     31 
     32\f1\b0 \cf0 - Add option to show a dialog for messages and broadcasts\ 
     33\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural 
     34 
     35\f0\b \cf2 \ 
     361.3\ 
    3037\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural 
    3138 
  • WiredClient/trunk/NSAlert-WCAdditions.m

    r3546 r4084  
    3232 
    3333- (void)runNonModal { 
    34         NSEnumerator    *enumerator; 
    35         NSMutableArray  *views; 
    36         NSView                  *view; 
    37         NSButton                *button; 
    38          
    39         views = [NSMutableArray array]; 
    40         enumerator = [[[[self window] contentView] subviews] objectEnumerator]; 
    41          
    42         while((view = [enumerator nextObject])) { 
    43                 if([view isKindOfClass:[NSButton class]] && ![[self buttons] containsObject:view]) 
    44                         [views addObject:view]; 
    45         } 
    46          
    47         [views makeObjectsPerformSelector:@selector(removeFromSuperviewWithoutNeedingDisplay)]; 
    48          
    49         button = [[self buttons] objectAtIndex:0]; 
    50         [button setTarget:self]; 
    51         [button setAction:@selector(_closeAlert:)]; 
    52  
    53         [[NSNotificationCenter defaultCenter] postNotificationName:WCServerConnectionTriggeredEvent eventTag:WCEventsError]; 
    54  
    55         [[self window] makeKeyAndOrderFront:self]; 
    56  
    57         [self retain]; 
    58 
    59  
    60  
    61  
    62 - (void)_closeAlert:(id)sender { 
    63         [self autorelease]; 
    64          
    65         [[self window] orderOut:self]; 
     34        [self beginSheetModalForWindow:NULL]; 
    6635} 
    6736 
     
    6938 
    7039- (void)beginSheetModalForWindow:(NSWindow *)window { 
    71         [[NSNotificationCenter defaultCenter] postNotificationName:WCServerConnectionTriggeredEvent eventTag:WCEventsError]; 
    72  
    7340        [self beginSheetModalForWindow:window modalDelegate:NULL didEndSelector:NULL contextInfo:NULL]; 
    7441} 
  • WiredClient/trunk/WCApplicationController.m

    r4004 r4084  
    3232#import "WCDock.h" 
    3333#import "WCKeychain.h" 
     34#import "WCMessage.h" 
    3435#import "WCMessages.h" 
    3536#import "WCNews.h" 
     
    250251 
    251252- (void)messagesDidAddMessage:(NSNotification *)notification { 
    252         _unread++; 
    253          
    254         [self performSelector:@selector(_updateApplicationIcon) withObject:NULL afterDelay:0.0]; 
     253        if(![[notification object] isRead]) { 
     254                _unread++; 
     255                 
     256                [self performSelector:@selector(_updateApplicationIcon) withObject:NULL afterDelay:0.0]; 
     257        } 
    255258} 
    256259 
  • WiredClient/trunk/WCMessages.m

    r3996 r4084  
    2727 */ 
    2828 
     29#import "NSAlert-WCAdditions.h" 
    2930#import "WCConversation.h" 
    3031#import "WCMessage.h" 
     
    5455 
    5556- (id)_initMessagesWithConnection:(WCServerConnection *)connection; 
     57 
     58- (void)_showDialogForMessage:(WCMessage *)message; 
    5659 
    5760- (void)_update; 
     
    119122#pragma mark - 
    120123 
     124- (void)_showDialogForMessage:(WCMessage *)message { 
     125        NSAlert         *alert; 
     126        NSString        *title, *nick, *server, *time; 
     127         
     128        nick    = [[message user] nick]; 
     129        server  = [[self connection] name]; 
     130        time    = [[message date] timeStringWithSeconds:NO]; 
     131         
     132        if([message type] == WCMessagePrivateMessage) 
     133                title = [NSSWF:NSLS(@"Private message from %@ on %@ at %@", @"Message dialog title (nick, server, time)"), nick, server, time]; 
     134        else 
     135                title = [NSSWF:NSLS(@"Broadcast from %@ on %@ at %@", @"Broadcast dialog title (nick, server, time)"), nick, server, time]; 
     136         
     137        alert = [NSAlert alertWithMessageText:title 
     138                                                        defaultButton:nil 
     139                                                  alternateButton:nil 
     140                                                          otherButton:nil 
     141                                informativeTextWithFormat:@"%@", [message message]]; 
     142         
     143        [alert setAlertStyle:NSInformationalAlertStyle]; 
     144        [alert runNonModal]; 
     145         
     146        [message setRead:YES]; 
     147} 
     148 
     149 
     150 
     151#pragma mark - 
     152 
    121153- (void)_update { 
    122154        [_messageTextView setFont:[WCSettings objectForKey:WCMessagesFont]]; 
     
    566598        [[_conversationsOutlineView delegate] outlineViewSelectionDidChange:NULL]; 
    567599         
    568         _unread++; 
     600        if([[WCSettings eventForTag:WCEventsMessageReceived] boolForKey:WCEventsShowDialog]) 
     601                [self _showDialogForMessage:message]; 
     602        else 
     603                _unread++; 
    569604 
    570605        [[WCStats stats] addUnsignedInt:1 forKey:WCStatsMessagesReceived]; 
    571606 
    572         [[self connection] postNotificationName:WCMessagesDidAddMessage object:[self connection]]; 
     607        [[self connection] postNotificationName:WCMessagesDidAddMessage object:message]; 
    573608 
    574609        [[self connection] postNotificationName:WCServerConnectionTriggeredEvent eventTag:WCEventsMessageReceived]; 
     
    602637        [[_conversationsOutlineView delegate] outlineViewSelectionDidChange:NULL]; 
    603638         
    604         _unread++; 
    605  
    606         [[self connection] postNotificationName:WCMessagesDidAddMessage object:[self connection]]; 
     639        if([[WCSettings eventForTag:WCEventsBroadcastReceived] boolForKey:WCEventsShowDialog]) 
     640                [self _showDialogForMessage:message]; 
     641        else 
     642                _unread++; 
     643 
     644        [[self connection] postNotificationName:WCMessagesDidAddMessage object:message]; 
    607645 
    608646        [[self connection] postNotificationName:WCServerConnectionTriggeredEvent eventTag:WCEventsBroadcastReceived]; 
  • WiredClient/trunk/WCPreferences.h

    r3984 r4084  
    117117        IBOutlet NSButton                                       *_bounceInDockButton; 
    118118        IBOutlet NSButton                                       *_postInChatButton; 
     119        IBOutlet NSButton                                       *_showDialogButton; 
    119120         
    120121        IBOutlet NSTextField                            *_downloadFolderTextField; 
  • WiredClient/trunk/WCPreferences.m

    r3984 r4084  
    260260                        } 
    261261                         
    262                         if([event boolForKey:WCEventsPlaySound] || [event boolForKey:WCEventsBounceInDock] || [event boolForKey:WCEventsPostInChat]) 
     262                        if([event boolForKey:WCEventsPlaySound]  || [event boolForKey:WCEventsBounceInDock] || 
     263                           [event boolForKey:WCEventsPostInChat] || [event boolForKey:WCEventsShowDialog]) 
    263264                                [item setImage:[NSImage imageNamed:@"EventOn"]]; 
    264265                        else 
     
    601602                [newEvent setBool:[_bounceInDockButton state] forKey:WCEventsBounceInDock]; 
    602603                [newEvent setBool:[_postInChatButton state] forKey:WCEventsPostInChat]; 
     604                [newEvent setBool:[_showDialogButton state] forKey:WCEventsShowDialog]; 
    603605                [WCSettings setEvent:newEvent forTag:_selectedEvent]; 
    604606                [newEvent release]; 
     
    614616        [_bounceInDockButton setState:[event boolForKey:WCEventsBounceInDock]]; 
    615617        [_postInChatButton setState:[event boolForKey:WCEventsPostInChat]]; 
     618        [_showDialogButton setState:[event boolForKey:WCEventsShowDialog]]; 
    616619         
    617620        on = (tag == WCEventsUserJoined || tag == WCEventsUserChangedNick || tag == WCEventsUserLeft || tag == WCEventsUserChangedStatus); 
    618621        [_postInChatButton setEnabled:on]; 
    619622 
     623        on = (tag == WCEventsMessageReceived || tag == WCEventsBroadcastReceived); 
     624        [_showDialogButton setEnabled:on]; 
     625 
    620626        [self _touchEvents]; 
    621627         
     
    628634        BOOL    on; 
    629635         
    630         on = [_playSoundButton state] || [_bounceInDockButton state] || [_postInChatButton state]
     636        on = ([_playSoundButton state] || [_bounceInDockButton state] || [_postInChatButton state] || [_showDialogButton state])
    631637        [[_eventsPopUpButton selectedItem] setImage:[NSImage imageNamed:on ? @"EventOn" : @"EventOff"]]; 
    632638         
  • WiredClient/trunk/WCPublicChat.m

    r3996 r4084  
    180180 
    181181        item = [_toolbarItems objectForKey:@"Messages"]; 
    182         [item setImage:[[NSImage imageNamed:@"Messages"] badgedImageWithInt:_unreadMessages]]; 
     182        [item setImage:[[NSImage imageNamed:@"Messages"] badgedImageWithInt:[[[self connection] messages] numberOfUnreadMessages]]]; 
    183183} 
    184184 
     
    189189         
    190190        item = [_toolbarItems objectForKey:@"News"]; 
    191         [item setImage:[[NSImage imageNamed:@"News"] badgedImageWithInt:_unreadPosts]]; 
     191        [item setImage:[[NSImage imageNamed:@"News"] badgedImageWithInt:[[[self connection] news] numberOfUnreadPosts]]]; 
    192192} 
    193193 
     
    313313                        [self showWindow:self]; 
    314314                 
    315                 if([[self window] isVisible]) 
     315                if([[self window] isVisible]) { 
     316                        [[NSNotificationCenter defaultCenter] postNotificationName:WCServerConnectionTriggeredEvent eventTag:WCEventsError]; 
    316317                        [[error alert] beginSheetModalForWindow:[self window]]; 
     318                } 
    317319        } 
    318320         
     
    433435 
    434436- (void)messagesDidAddMessage:(NSNotification *)notification { 
    435         _unreadMessages++; 
    436  
    437437        [self performSelector:@selector(_updateMessagesIcon) withObject:NULL afterDelay:0.0]; 
    438438} 
     
    441441 
    442442- (void)messagesDidReadMessage:(NSNotification *)notification { 
    443         _unreadMessages--; 
    444  
    445443        [self performSelector:@selector(_updateMessagesIcon) withObject:NULL afterDelay:0.0]; 
    446444} 
     
    449447 
    450448- (void)newsDidAddPost:(NSNotification *)notification { 
    451         _unreadPosts++; 
    452          
    453449        [self performSelector:@selector(_updateNewsIcon) withObject:NULL afterDelay:0.0]; 
    454450} 
     
    457453 
    458454- (void)newsDidReadPost:(NSNotification *)notification { 
    459         _unreadPosts--; 
    460                  
    461455        [self performSelector:@selector(_updateNewsIcon) withObject:NULL afterDelay:0.0]; 
    462456} 
  • WiredClient/trunk/WCServerConnection.m

    r3977 r4084  
    397397                                [self showWindow:self]; 
    398398                         
    399                         if([[self window] isVisible]) 
     399                        if([[self window] isVisible]) { 
     400                                [[NSNotificationCenter defaultCenter] postNotificationName:WCServerConnectionTriggeredEvent eventTag:WCEventsError]; 
    400401                                [[error alert] beginSheetModalForWindow:[self window]]; 
     402                        } 
    401403                } 
    402404                 
     
    416418                [self showWindow:self]; 
    417419         
     420        [[NSNotificationCenter defaultCenter] postNotificationName:WCServerConnectionTriggeredEvent eventTag:WCEventsError]; 
     421 
    418422        if([[self window] isVisible]) 
    419423                [[error alert] beginSheetModalForWindow:[self window]]; 
  • WiredClient/trunk/WCSettings.h

    r3984 r4084  
    128128#define WCEventsBounceInDock                                            @"WCEventsBounceInDock" 
    129129#define WCEventsPostInChat                                                      @"WCEventsPostInChat" 
     130#define WCEventsShowDialog                                                      @"WCEventsShowDialog" 
    130131 
    131132#define WCDownloadFolder                                                @"WCDownloadFolder" 
  • WiredClient/trunk/WCTrackers.m

    r3996 r4084  
    349349                error = [WCError errorWithDomain:WCWiredClientErrorDomain code:WCWiredClientServerDisconnected]; 
    350350         
     351        [[NSNotificationCenter defaultCenter] postNotificationName:WCServerConnectionTriggeredEvent eventTag:WCEventsError]; 
     352 
    351353        [[error alert] beginSheetModalForWindow:[self window]]; 
    352354         
     
    373375        error = [[notification userInfo] objectForKey:WCErrorKey]; 
    374376         
    375         [[error alert] beginSheetModalForWindow:[self window] modalDelegate:NULL didEndSelector:NULL contextInfo:NULL]; 
     377        [[NSNotificationCenter defaultCenter] postNotificationName:WCServerConnectionTriggeredEvent eventTag:WCEventsError]; 
     378 
     379        [[error alert] beginSheetModalForWindow:[self window]]; 
    376380         
    377381        [connection terminate]; 
  • WiredClient/trunk/WCTransfers.m

    r3996 r4084  
    203203                [self showWindow:self]; 
    204204         
     205        [[NSNotificationCenter defaultCenter] postNotificationName:WCServerConnectionTriggeredEvent eventTag:WCEventsError]; 
     206 
    205207        [[error alert] beginSheetModalForWindow:[self window]]; 
    206208}