# $Id: adium-alert_while_away.diff,v 1.1 2011/01/05 04:52:27 jcs Exp $ # # add an alert type to adium-1.4 that will only trigger when a message is # received while the account it was received on is not available # # created so that a growl message can be added to this away alert to pass the # message through to prowl (http://prowl.weks.net/) only when i'm away # # by jcs@jcs.org # diff -r f5cbe34603f0 Frameworks/Adium Framework/Source/AIAdiumProtocol.h --- a/Frameworks/Adium Framework/Source/AIAdiumProtocol.h Sat Oct 31 01:35:18 2009 -0400 +++ b/Frameworks/Adium Framework/Source/AIAdiumProtocol.h Sat Oct 31 01:36:05 2009 -0500 @@ -88,6 +88,7 @@ #define CONTENT_MESSAGE_RECEIVED_FIRST @"Content_MessageReceivedFirst" #define CONTENT_MESSAGE_RECEIVED_BACKGROUND @"Content_MessageReceivedBackground" #define CONTENT_MESSAGE_RECEIVED_BACKGROUND_GROUP @"Content_MessageReceivedBackgroundGroup" +#define CONTENT_MESSAGE_RECEIVED_AWAY @"Content_MessageReceivedAway" #define CONTENT_NUDGE_BUZZ_OCCURED @"Content_NudgeBuzzOccured" #define CONTENT_CONTACT_JOINED_CHAT @"Content_ContactJoinedChat" #define CONTENT_CONTACT_LEFT_CHAT @"Content_ContactLeftChat" diff -r f5cbe34603f0 Source/AIContentController.m --- a/Source/AIContentController.m Sat Oct 31 01:35:18 2009 -0400 +++ b/Source/AIContentController.m Sat Oct 31 01:36:05 2009 -0500 @@ -541,6 +541,15 @@ [chat setHasSentOrReceivedContent:YES]; } + AIStatus *currentStatus = chat.account.statusState; + if ([currentStatus statusType] != AIAvailableStatusType) { + //If the account is not available, generate CONTENT_MESSAGE_RECEIVED_AWAY + previouslyPerformedActionIDs = [adium.contactAlertsController generateEvent:CONTENT_MESSAGE_RECEIVED_AWAY + forListObject:listObject + userInfo:userInfo + previouslyPerformedActionIDs:previouslyPerformedActionIDs]; + } + if (chat != adium.interfaceController.activeChat) { //If the chat is not currently active, generate CONTENT_MESSAGE_RECEIVED_BACKGROUND previouslyPerformedActionIDs = [adium.contactAlertsController generateEvent:(chat.isGroupChat ? CONTENT_MESSAGE_RECEIVED_BACKGROUND_GROUP : CONTENT_MESSAGE_RECEIVED_BACKGROUND) diff -r f5cbe34603f0 Source/AdiumMessageEvents.m --- a/Source/AdiumMessageEvents.m Sat Oct 31 01:35:18 2009 -0400 +++ b/Source/AdiumMessageEvents.m Sat Oct 31 01:36:05 2009 -0500 @@ -49,6 +49,7 @@ [adium.contactAlertsController registerEventID:CONTENT_MESSAGE_RECEIVED_BACKGROUND withHandler:self inGroup:AIMessageEventHandlerGroup globalOnly:NO]; [adium.contactAlertsController registerEventID:CONTENT_MESSAGE_RECEIVED_GROUP withHandler:self inGroup:AIMessageEventHandlerGroup globalOnly:NO]; [adium.contactAlertsController registerEventID:CONTENT_MESSAGE_RECEIVED_BACKGROUND_GROUP withHandler:self inGroup:AIMessageEventHandlerGroup globalOnly:NO]; + [adium.contactAlertsController registerEventID:CONTENT_MESSAGE_RECEIVED_AWAY withHandler:self inGroup:AIMessageEventHandlerGroup globalOnly:NO]; [adium.contactAlertsController registerEventID:CONTENT_GROUP_CHAT_MENTION withHandler:self inGroup:AIMessageEventHandlerGroup globalOnly:NO]; //Observe chat changes @@ -176,6 +177,8 @@ description = AILocalizedString(@"Sends a message in a group chat",nil); } else if ([eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_BACKGROUND_GROUP]) { description = AILocalizedString(@"Sends a message in a background group chat",nil); + } else if ([eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_AWAY]) { + description = AILocalizedString(@"Sends a message while away",nil); } else if ([eventID isEqualToString:CONTENT_GROUP_CHAT_MENTION]) { description = AILocalizedString(@"Is mentioned in a group chat message", nil); } else { @@ -201,6 +204,8 @@ description = AILocalizedString(@"Message received (Group Chat)",nil); } else if ([eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_BACKGROUND_GROUP]) { description = AILocalizedString(@"Message received (Background Group Chat)",nil); + } else if ([eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_AWAY]) { + description = AILocalizedString(@"Message received (Away)",nil); } else if ([eventID isEqualToString:CONTENT_GROUP_CHAT_MENTION]) { description = AILocalizedString(@"You are mentioned (Group Chat)", nil); } else { @@ -228,6 +233,8 @@ description = @"Message Received (Group Chat)"; } else if ([eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_BACKGROUND_GROUP]) { description = @"Message Received (Background Group Chat)"; + } else if ([eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_AWAY]) { + description = @"Message Received (Away)"; } else if ([eventID isEqualToString:CONTENT_GROUP_CHAT_MENTION]) { description = @"You Are Mentioned (Group Chat)"; } else { @@ -257,6 +264,8 @@ format = AILocalizedString(@"When %@ sends a message to you in a group chat",nil); } else if ([eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_BACKGROUND_GROUP]) { format = AILocalizedString(@"When %@ sends a message to you in a background group chat",nil); + } else if ([eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_AWAY]) { + format = AILocalizedString(@"When %@ sends a message to you while you are away",nil); } else if ([eventID isEqualToString:CONTENT_GROUP_CHAT_MENTION]) { format = AILocalizedString(@"When %@ sends a message that mentions your name in a group chat", nil); } else { @@ -284,6 +293,8 @@ description = AILocalizedString(@"When you receive a message in a group chat",nil); } else if ([eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_BACKGROUND_GROUP]) { description = AILocalizedString(@"When you receive a message in a background group chat",nil); + } else if ([eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_AWAY]) { + description = AILocalizedString(@"When you receive a message while away",nil); } else if ([eventID isEqualToString:CONTENT_GROUP_CHAT_MENTION]) { description = AILocalizedString(@"When you receive a message that mentions your name in a group chat", nil); } else { @@ -328,7 +339,8 @@ } else if ([eventID isEqualToString:CONTENT_MESSAGE_RECEIVED] || [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_FIRST] || - [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_BACKGROUND]) { + [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_BACKGROUND] || + [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_AWAY]) { displayName = contentObject.source.displayName; if (messageText && [messageText length]) { @@ -357,6 +369,7 @@ [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_BACKGROUND] || [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_GROUP] || [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_BACKGROUND_GROUP] || + [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_AWAY] || [eventID isEqualToString:CONTENT_GROUP_CHAT_MENTION]) { //Use the message received text for all message received events if we don't have a message description = [self globalShortDescriptionForEventID:CONTENT_MESSAGE_RECEIVED]; @@ -417,7 +430,8 @@ [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_FIRST] || [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_BACKGROUND] || [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_GROUP] || - [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_BACKGROUND_GROUP]) { + [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_BACKGROUND_GROUP] || + [eventID isEqualToString:CONTENT_MESSAGE_RECEIVED_AWAY]) { format = AILocalizedString(@"%u messages received", nil); } else if ([eventID isEqualToString:CONTENT_GROUP_CHAT_MENTION]) { format = AILocalizedString(@"%u mentions received", nil);