1 | //
|
---|
2 | // DockCamStatus.m
|
---|
3 | // DockCam
|
---|
4 | //
|
---|
5 | // Created by Nicholas Riley on Thu Jun 27 2002.
|
---|
6 | // Copyright (c) 2002 Nicholas Riley. All rights reserved.
|
---|
7 | //
|
---|
8 |
|
---|
9 | #import "DockCamStatus.h"
|
---|
10 | #import "DockCamPrefs.h"
|
---|
11 |
|
---|
12 | @implementation DockCamStatus
|
---|
13 |
|
---|
14 | - (void)awakeFromNib;
|
---|
15 | {
|
---|
16 | NSEnumerator *e = [[statusForm cells] objectEnumerator];
|
---|
17 | NSCell *cell;
|
---|
18 | while ( (cell = [e nextObject]) != nil) {
|
---|
19 | [cell setFont: [NSFont systemFontOfSize: [NSFont smallSystemFontSize]]];
|
---|
20 | }
|
---|
21 |
|
---|
22 | // XXX workaround for bug in 10.1.5 (and earlier?): autosave name set in IB doesn't show up
|
---|
23 | [self setWindowFrameAutosaveName: @"DockCam Status"];
|
---|
24 | [[self window] setHidesOnDeactivate: YES];
|
---|
25 |
|
---|
26 | if ([DockCamPrefs boolForPref: DCShowStatus])
|
---|
27 | [self showWindow: self];
|
---|
28 | }
|
---|
29 |
|
---|
30 | - (IBAction)showWindow:(id)sender;
|
---|
31 | {
|
---|
32 | [DockCamPrefs setBool: YES forPref: DCShowStatus];
|
---|
33 | [showHideStatusItem setAction: @selector(hideWindow:)];
|
---|
34 | [showHideStatusItem setTitle: @"Hide Status"];
|
---|
35 | // No need to subscribe to notifications, as the delegate we're already subscribed
|
---|
36 | [[self window] orderFront: self];
|
---|
37 | }
|
---|
38 |
|
---|
39 | - (IBAction)hideWindow:(id)sender;
|
---|
40 | {
|
---|
41 | [[self window] orderOut: sender];
|
---|
42 | [DockCamPrefs setBool: NO forPref: DCShowStatus];
|
---|
43 | [showHideStatusItem setAction: @selector(showWindow:)];
|
---|
44 | [showHideStatusItem setTitle: @"Show Status"];
|
---|
45 | }
|
---|
46 |
|
---|
47 | - (void)windowWillClose:(NSNotification *)aNotification;
|
---|
48 | {
|
---|
49 | [self hideWindow: self];
|
---|
50 | }
|
---|
51 |
|
---|
52 | #pragma mark status changes
|
---|
53 |
|
---|
54 | - (void)setLocation:(NSURL *)location;
|
---|
55 | {
|
---|
56 | [locationCell setStringValue: [location absoluteString]];
|
---|
57 | [actualSize setStringValue: @""];
|
---|
58 | [retrievedDate setStringValue: @"never"];
|
---|
59 | [failedDate setStringValue: @"never"];
|
---|
60 | [failedReason setStringValue: @""];
|
---|
61 | }
|
---|
62 |
|
---|
63 | - (void)setStatus:(NSString *)status;
|
---|
64 | {
|
---|
65 | [statusCell setStringValue: status];
|
---|
66 | }
|
---|
67 |
|
---|
68 | - (void)setRetrievedWithSize:(NSSize)size;
|
---|
69 | {
|
---|
70 | static const unichar timesUnichar = 0x00d7;
|
---|
71 | [retrievedDate setObjectValue: [NSDate date]];
|
---|
72 | [self setStatus: @"Image retrieved successfully"];
|
---|
73 | [actualSize setStringValue: [NSString stringWithFormat: @"%.0f %@ %.0f pixels",
|
---|
74 | size.width, [NSString stringWithCharacters: ×Unichar length: 1], size.height]];
|
---|
75 | }
|
---|
76 |
|
---|
77 | - (void)setFailedWithReason:(NSString *)reason;
|
---|
78 | {
|
---|
79 | [failedDate setObjectValue: [NSDate date]];
|
---|
80 | [failedReason setStringValue: reason];
|
---|
81 | [self setStatus: @"Image retrieval failed"];
|
---|
82 | if (![[self window] isVisible])
|
---|
83 | [self showWindow: self];
|
---|
84 | }
|
---|
85 |
|
---|
86 | @end
|
---|