const int kStatzStatusSourceCoderVersion = 1;
NSString *const kStatzStatusSourceCoderVersionKey =
@"kStatzStatusSourceCoderVersionKey";
@@ -34,10 +31,6 @@
NSString *const kStatzStatusSourceDisplayInMenuKey =
@"kStatzStatusSourceDisplayInMenuKey";
NSString *const kStatzStatusSourceAttachmentKey =
@"kStatzStatusSourceAttachmentKey";
-const int kStatzStatusSourceCustomAvailableItemTag = 20;
-const int kStatzStatusSourceCustomAwayItemTag = 21;
-const int kStatzStatusSourceEditItemTag = 22;
-
@implementation StatzSource
- (id)init {
self = [super init];
@@ -78,7 +71,6 @@
- (void)dealloc {
[statuses_ release];
- [editSourceController_ release];
[attachment_ release];
[super dealloc];
}
@@ -104,11 +96,11 @@
return [[self statuses] indexOfObject:value];
}
-- (Status*)statuzAtIndex:(int)index {
+- (Status*)statusAtIndex:(int)index {
return [[self statuses] objectAtIndex:index];
}
-- (int)statuzCount {
+- (int)statusCount {
return [[self statuses] count];
}
@@ -183,135 +175,6 @@
[statuses_ removeObject:statuz];
}
-- (IBAction)statusMenuItemSelected:(id)sender {
- NSParameterAssert([sender conformsToProtocol:@protocol(NSMenuItem)]);
- id status = [sender representedObject];
- NSParameterAssert([status isKindOfClass:[Status class]]);
- [self setCurrentStatus:status];
-}
-
-- (NSArray*)statusMenuItemsWithTarget:
(id<StatusMenuItemControllerProtocol>)target {
- NSMutableArray *array = [NSMutableArray array];
- NSMutableArray *available = [NSMutableArray array];
- NSMutableArray *away = [NSMutableArray array];
- NSMutableArray *other = [NSMutableArray array];
- NSEnumerator *statusEnum = [[self statuses] objectEnumerator];
- Status *statuz;
- Status *currentStatus = [self currentStatus];
- while ((statuz = [statusEnum nextObject])) {
- NSMutableArray *arrayToUse;
- switch([statuz state]) {
- case kStatzStateAvailable:
- arrayToUse = available;
- break;
-
- case kStatzStateAway:
- arrayToUse = away;
- break;
-
- default:
- arrayToUse = other;
- break;
- }
- [arrayToUse addObject:statuz];
- }
-
- NSMenuItem *item = nil;
- // Available
- statusEnum = [available objectEnumerator];
- while ((statuz = [statusEnum nextObject])) {
- item = [[[NSMenuItem alloc] initWithTitle:@""
-
action:@selector(statusMenuItemSelected:)
- keyEquivalent:@""] autorelease];
- [item setToolTip:[statuz toolTip]];
- [item setAttributedTitle:[statuz attributedStatus]];
- [item setImage:[statuz stateIcon]];
- [item setTarget:target];
- [item setRepresentedObject:statuz];
- if (statuz == currentStatus) {
- [item setState:NSOnState];
- }
- [array addObject:item];
- }
- item = [[[NSMenuItem alloc] initWithTitle:@"Custom Available..."
-
action:@selector(customAvailableMessage:)
- keyEquivalent:@""] autorelease];
- [item setTarget:target];
- [item setImage:[Status availableIcon]];
- [item setTag:kStatzStatusSourceCustomAvailableItemTag];
- [array addObject:item];
-
- // Away
- [array addObject:[NSMenuItem separatorItem]];
- statusEnum = [away objectEnumerator];
- while ((statuz = [statusEnum nextObject])) {
- item = [[[NSMenuItem alloc] initWithTitle:@""
-
action:@selector(statusMenuItemSelected:)
- keyEquivalent:@""] autorelease];
- [item setAttributedTitle:[statuz attributedStatus]];
- [item setImage:[statuz stateIcon]];
- [item setTarget:target];
- [item setRepresentedObject:statuz];
- if (statuz == currentStatus) {
- [item setState:NSOnState];
- }
- [array addObject:item];
- }
- item = [[[NSMenuItem alloc] initWithTitle:@"Custom Away..."
-
action:@selector(customAwayMessage:)
- keyEquivalent:@""] autorelease];
- [item setTarget:target];
- [item setImage:[Status awayIcon]];
- [item setTag:kStatzStatusSourceCustomAwayItemTag];
- [array addObject:item];
-
- // Other
- if ([other count]) {
- [array addObject:[NSMenuItem separatorItem]];
- statusEnum = [other objectEnumerator];
- while ((statuz = [statusEnum nextObject])) {
- item = [[[NSMenuItem alloc] initWithTitle:@""
-
action:@selector(statusMenuItemSelected:)
- keyEquivalent:@""] autorelease];
- [item setAttributedTitle:[statuz attributedStatus]];
- [item setImage:[statuz stateIcon]];
- [item setTarget:target];
- [item setRepresentedObject:statuz];
- if (statuz == currentStatus) {
- [item setState:NSOnState];
- }
- [array addObject:item];
- }
- }
- [array addObject:[NSMenuItem separatorItem]];
- item = [[[NSMenuItem alloc] initWithTitle:@"Edit Status..."
- action:@selector(editSource:)
- keyEquivalent:@""] autorelease];
- [item setTarget:target];
- [array addObject:item];
- [item setTag:kStatzStatusSourceEditItemTag];
- return array;
-}
-
-- (IBAction)editSource:(id)sender {
- if (!editSourceController_) {
- editSourceController_ = [[EditSourceWindowController alloc]
initWithStatzSource:self];
- }
- [editSourceController_ setStatus:[self currentStatus]];
- [NSApp activateIgnoringOtherApps:YES];
- [editSourceController_ showWindow:sender];
-}
-
-- (void)customMessage:(StatzState)state {
- CustomMessageWindowController *controller =
[[CustomMessageWindowController alloc] initWithStatzSource:self
- state:state
- applyStatusOnOK:YES
];
- [NSApp activateIgnoringOtherApps:YES];
- [controller showWindow:self];
-}
-
-
-
- (BOOL)isValid {
return YES;
}
@@ -328,12 +191,4 @@
}
}
-- (void)customAwayMessage:(id)sender {
- [self customMessage:kStatzStateAway];
-}
-
-- (void)customAvailableMessage:(id)sender {
- [self customMessage:kStatzStateAvailable];
-}
-
@end
Index: Status.m
===================================================================
--- Status.m (revision 12)
+++ Status.m (working copy)
@@ -33,11 +33,6 @@
static NSString *const kStatzStatusCoderVersionKey =
@"kStatzStatusCoderVersionKey";
static NSString *const kStatzStatusStatusKey =
@"kStatzStatusStatusKey";
static NSString *const kStatzStatusStateKey = @"kStatzStatusStateKey";
-static NSString *const kStatzStatusTagKey = @"kStatzStatusTagKey";
-
-static int gTag = 100;
-
-
@implementation Status
+ (void)initialize {
@@ -81,19 +76,19 @@
NSString *string = nil;
switch (state) {
case kStatzStateAvailable:
- string = @"Available";
+ string = NSLocalizedString(@"Available", @"state string");
break;
case kStatzStateAway:
- string = @"Away";
+ string = NSLocalizedString(@"Away", @"state string");
break;
/* case kStatzStateInherited:
- string = @"Inherited";
+ string = NSLocalizedString(@"Inherited", @"state string");
break;
case kStatzStateIdle:
- string = @"Idle";
+ string = NSLocalizedString(@"Idle", @"state string");
break; */
default:
@@ -139,14 +134,6 @@
return [self status:attrStatus state:state];
}
-+ (int)nextTag {
- return gTag++;
-}
-
-+ (void)setCurrentTag:(int)tag {
- gTag = tag;
-}
-
- (id)init {
if ((self = [super init])) {
NSString *untitledStatusString = NSLocalizedString(@"New
Status", @"New Status String");
Index: StatusSettingsController.m
===================================================================
--- StatusSettingsController.m (revision 13)
+++ StatusSettingsController.m (working copy)
@@ -91,19 +91,14 @@
[self close];
}
-
- (void)tableView:(NSTableView *)tableView
- setObjectValue:(id)anObject
+ willDisplayCell:(id)cell
forTableColumn:(NSTableColumn *)tableColumn
- row:(int)row {
- if ([[tableColumn identifier] isEqualToString:@"value"]) {
+ row:(int)row {
+ if ([[tableColumn identifier] isEqualToString:@"name"]) {
NSArray *sources = [statusesController_ arrangedObjects];
StatzSource *source = [sources objectAtIndex:row];
- NSPopUpButtonCell *cell = [tableColumn dataCellForRow:row];
- id status = [[cell itemAtIndex:[anObject intValue]]
representedObject];
- if (status) {
- [source setCurrentStatus:status];
- }
+ [cell setObjectValue:[source displayNameAndStatus]];
}
}
Index: English.lproj/StatusSettings.nib/info.nib
===================================================================
--- English.lproj/StatusSettings.nib/info.nib (revision 13)
+++ English.lproj/StatusSettings.nib/info.nib (working copy)
@@ -10,7 +10,7 @@
<integer>5</integer>
<key>IBOpenObjects</key>
<array>
- <integer>624</integer>
+ <integer>243</integer>
</array>
<key>IBSystem Version</key>
<string>9B18</string>
Index: English.lproj/StatusSettings.nib/keyedobjects.nib
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: AppDelegate.m
===================================================================
--- AppDelegate.m (revision 12)
+++ AppDelegate.m (working copy)
@@ -158,117 +158,6 @@
[defaults setObject:data forKey:kStatzDataKey];
}
-- (void)menuNeedsUpdate:(NSMenu *)menu {
- if (menu == statusMenu_) {
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
-
- // Remove old items
- for (int i = 0, endOfItems = [menu
indexOfItemWithTag:kStatzSettingsItemTag];
- i < endOfItems; ++i) {
- NSMenuItem *menuItem = [menu itemAtIndex:0];
- NSMenu *submenu = [menuItem submenu];
- if (submenu) {
- [nc removeObserver:self name:NSMenuDidSendActionNotification
object:submenu];
- }
- [menu removeItemAtIndex:0];
- }
- [nc removeObserver:self name:NSMenuDidSendActionNotification
object:menu];
-
-
- NSMutableArray *usedSources = [NSMutableArray array];
- NSEnumerator *sinkEnum = [[self statusSinks] objectEnumerator];
- StatzSink *sink;
- while ((sink = [sinkEnum nextObject])) {
- if ([sink isEnabled]) {
- [sink addSourceDependenciesTo:usedSources];
- }
- }
-
- // Handle the Accounts
- if ([[self enabledStatusSinks] count] > 1) {
- NSString *accountsTitle = NSLocalizedString(@"Accounts",
@"Accounts menu item");
- NSMenuItem *accountsTitleItem = [[[NSMenuItem alloc]
initWithTitle:accountsTitle
-
action:nil
-
keyEquivalent:@""]
- autorelease];
-
- [statusMenu_ insertItem:[NSMenuItem separatorItem] atIndex:0];
- NSArray *sinks = [self statusSinks];
- NSMutableArray *accountItems = [NSMutableArray
arrayWithCapacity:[sinks count]];
- NSEnumerator *sinkEnumerator = [[self statusSinks]
objectEnumerator];
- while ((sink = [sinkEnumerator nextObject])) {
- if ([sink isEnabled]) {
- NSMenuItem *accountItem = [[[NSMenuItem alloc]
initWithTitle:[sink name]
-
action:nil
-
keyEquivalent:@""] autorelease];
- [accountItems addObject:accountItem];
- NSMenu *accountMenu = [[[NSMenu alloc] initWithTitle:[sink
name]] autorelease];
- [accountItem setSubmenu:accountMenu];
- NSArray *items = [sink statusMenuItemsWithTarget:sink];
- NSEnumerator *itemEnumerator = [items objectEnumerator];
- NSMenuItem *item;
- while ((item = [itemEnumerator nextObject])) {
- [accountMenu addItem:item];
- }
- }
- }
-
- // If we have more than kNumberOfAccountsToInline accounts we
will make a
- // submenu. Otherwise accounts becomes a header
- const unsigned int kNumberOfAccountsToInline = 4;
-
- NSMenu *menuToAddTo = nil;
- int indentationLevel = 0;
- if ([accountItems count] <= kNumberOfAccountsToInline) {
- menuToAddTo = statusMenu_;
- indentationLevel = 1;
- [accountsTitleItem setSubmenu:nil];
- } else {
- menuToAddTo = [[[NSMenu alloc] initWithTitle:@"accounts"]
autorelease];
- [accountsTitleItem setSubmenu:menuToAddTo];
- }
- NSEnumerator *accountsEnum = [accountItems
reverseObjectEnumerator];
- NSMenuItem *accountItem;
- while ((accountItem = [accountsEnum nextObject])) {
- [menuToAddTo insertItem:accountItem atIndex:0];
- [accountItem setIndentationLevel:indentationLevel];
- }
- [statusMenu_ insertItem:accountsTitleItem atIndex:0];
- }
-
-
- //Add Variables
- if ([usedSources count] > 0) {
- [statusMenu_ insertItem:[NSMenuItem separatorItem] atIndex:0];
- NSEnumerator *sourceEnum = [usedSources reverseObjectEnumerator];
- BOOL useSubMenus = [usedSources count] > 1;
- StatzSource *source;
- while ((source = [sourceEnum nextObject])) {
- NSMenu *parentMenu = nil;
- if (useSubMenus) {
- parentMenu = [[[NSMenu alloc] initWithTitle:[source name]]
autorelease];
- } else {
- parentMenu = statusMenu_;
- }
- NSArray *items = [source statusMenuItemsWithTarget:source];
- NSEnumerator *itemEnum = [items reverseObjectEnumerator];
- NSMenuItem *item;
- while ((item = [itemEnum nextObject])) {
- [parentMenu insertItem:item atIndex:0];
- }
- if (useSubMenus) {
- id<NSMenuItem> newItem = [[[NSMenuItem alloc] initWithTitle:
[source name]
-
action:nil
-
keyEquivalent:@""] autorelease];
- [newItem setSubmenu:parentMenu];
- [statusMenu_ insertItem:newItem atIndex:0];
- }
- [nc addObserver:self selector:@selector(statusSelected:)
- name:NSMenuDidSendActionNotification
object:parentMenu];
- }
- }
- }
-}
- (void)jumpTo:(id)sender {
id<StatzSinkPlugin> sink = [sender representedObject];
Index: StatzSource.h
===================================================================
--- StatzSource.h (revision 12)
+++ StatzSource.h (working copy)
@@ -22,28 +22,15 @@
#import <Cocoa/Cocoa.h>
@class Status;
-@class EditSourceWindowController;
@class StatzTextAttachment;
extern NSString *const kStatzStatusSourceStatusesKey;
extern NSString *const kStatzStatusSourceCurrentKey;
extern NSString *const kStatzStatusSourceEnabledKey;
-extern const int kStatzStatusSourceCustomAvailableItemTag;
-extern const int kStatzStatusSourceCustomAwayItemTag;
-extern const int kStatzStatusSourceEditItemTag;
-
-@protocol StatusMenuItemControllerProtocol
-- (IBAction)editSource:(id)sender;
-- (IBAction)customAwayMessage:(id)sender;
-- (IBAction)customAvailableMessage:(id)sender;
-- (IBAction)statusMenuItemSelected:(id)sender;
-@end
-
-@interface StatzSource : NSObject<NSCoding,
StatusMenuItemControllerProtocol> {
+@interface StatzSource : NSObject<NSCoding> {
NSMutableArray *statuses_;
unsigned int currentStatus_;
- EditSourceWindowController *editSourceController_;
StatzTextAttachment *attachment_;
}
- (id)initWithName:(NSString*)name;
@@ -57,15 +44,11 @@
- (void)setCurrentStatus:(Status*)value;
- (void)setCurrentStatusIndex:(int)value;
- (int)statusIndex:(Status*)value;
-- (Status*)statuzAtIndex:(int)index;
-- (int)statuzCount;
+- (Status*)statusAtIndex:(int)index;
+- (int)statusCount;
- (NSArray*)statuses;
- (void)addStatus:(Status*)statuz;
- (void)removeStatus:(Status*)statuz;
-- (NSArray*)statusMenuItemsWithTarget:
(id<StatusMenuItemControllerProtocol>)target;
-- (IBAction)editSource:(id)sender;
-- (IBAction)customAwayMessage:(id)sender;
-- (IBAction)customAvailableMessage:(id)sender;
- (BOOL)isValid;
- (void)addSourceDependenciesTo:(NSMutableArray*)array;
- (BOOL)isEnabled;