Adium

root/trunk/Frameworks/Adium Framework/Source/AIStatusControllerProtocol.h

Revision 25596, 6.3 kB (checked in by catfish_man, 2 days ago)

Warnings fixes, import removal, etc...

  • Property svn:eol-style set to native
Line 
1 /*
2  *  AIStatusControllerProtocol.h
3  *  Adium
4  *
5  *  Created by Evan Schoenberg on 7/31/06.
6  *  Copyright 2006 The Adium Team. All rights reserved.
7  *
8  */
9
10 #import <Adium/AIControllerProtocol.h>
11 #import <Adium/AIStatusDefines.h>
12
13 @class AIStatus, AIAccount, AIStatusGroup, AIService;
14
15 //Status State Notifications
16 #define AIStatusStateArrayChangedNotification   @"AIStatusStateArrayChangedNotification"
17 #define AIStatusActiveStateChangedNotification  @"AIStatusActiveStateChangedNotification"
18
19 //Idle Notifications
20 #define AIMachineIsIdleNotification                             @"AIMachineIsIdleNotification"
21 #define AIMachineIsActiveNotification                   @"AIMachineIsActiveNotification"
22 #define AIMachineIdleUpdateNotification                 @"AIMachineIdleUpdateNotification"
23
24 //Preferences
25 #define PREF_GROUP_SAVED_STATUS                                 @"Saved Status"
26 #define KEY_SAVED_STATUS                                                @"Saved Status Array"
27
28 #define KEY_STATUS_NAME                                                 @"Status Name"
29 #define KEY_STATUS_DESCRIPTION                                  @"Status Description"
30 #define KEY_STATUS_TYPE                                                 @"Status Type"
31
32 #define PREF_GROUP_STATUS_PREFERENCES                   @"Status Preferences"
33 #define KEY_STATUS_CONVERSATION_COUNT                   @"Unread Conversations"
34 #define KEY_STATUS_REPORT_IDLE                                  @"Report Idle"
35 #define KEY_STATUS_REPORT_IDLE_INTERVAL                 @"Report Idle Interval"
36 #define KEY_STATUS_AUTO_AWAY                                    @"Auto Away"
37 #define KEY_STATUS_AUTO_AWAY_STATUS_STATE_ID    @"Auto Away Status State ID"
38 #define KEY_STATUS_FUS                                                  @"Fast User Switching Auto Away"
39 #define KEY_STATUS_FUS_STATUS_STATE_ID                  @"Fast User Switching Status State ID"
40 #define KEY_STATUS_SS                                                   @"ScreenSaver Auto Away"
41 #define KEY_STATUS_SS_STATUS_STATE_ID                   @"ScreenSaver Status State ID"
42 #define KEY_STATUS_AUTO_AWAY_INTERVAL                   @"Auto Away Interval"
43
44 #define KEY_STATUS_SHOW_STATUS_WINDOW                           @"Show Status Window"
45 #define KEY_STATUS_STATUS_WINDOW_ON_TOP                         @"Status Window Always On Top"
46 #define KEY_STATUS_STATUS_WINDOW_HIDE_IN_BACKGROUND     @"Status Window Hide in Background"
47
48 //Built-in names and descriptions, which services should use when they support identical or approximately identical states
49 #define STATUS_NAME_AVAILABLE                           @"Generic Available"
50 #define STATUS_NAME_FREE_FOR_CHAT                       @"Free for Chat"
51 #define STATUS_NAME_AVAILABLE_FRIENDS_ONLY      @"Available for Friends Only"
52
53 #define STATUS_NAME_AWAY                                        @"Generic Away"
54 #define STATUS_NAME_EXTENDED_AWAY                       @"Extended Away"
55 #define STATUS_NAME_AWAY_FRIENDS_ONLY           @"Away for Friends Only"
56 #define STATUS_NAME_DND                                         @"DND"
57 #define STATUS_NAME_NOT_AVAILABLE                       @"Not Available"
58 #define STATUS_NAME_OCCUPIED                            @"Occupied"
59 #define STATUS_NAME_BRB                                         @"BRB"
60 #define STATUS_NAME_BUSY                                        @"Busy"
61 #define STATUS_NAME_PHONE                                       @"Phone"
62 #define STATUS_NAME_LUNCH                                       @"Lunch"
63 #define STATUS_NAME_NOT_AT_HOME                         @"Not At Home"
64 #define STATUS_NAME_NOT_AT_DESK                         @"Not At Desk"
65 #define STATUS_NAME_NOT_IN_OFFICE                       @"Not In Office"
66 #define STATUS_NAME_VACATION                            @"Vacation"
67 #define STATUS_NAME_STEPPED_OUT                         @"Stepped Out"
68
69 #define STATUS_NAME_INVISIBLE                           @"Invisible"
70
71 #define STATUS_NAME_OFFLINE                                     @"Offline"
72
73 //Current version state ID string
74 #define STATE_SAVED_STATE                                       @"State"
75
76 @protocol AIStatusController <AIController>
77 /*!
78  * @brief Register a status for a service
79  *
80  * Implementation note: Each AIStatusType has its own NSMutableDictionary, statusDictsByServiceCodeUniqueID.
81  * statusDictsByServiceCodeUniqueID is keyed by serviceCodeUniqueID; each object is an NSMutableSet of NSDictionaries.
82  * Each of these dictionaries has KEY_STATUS_NAME, KEY_STATUS_DESCRIPTION, and KEY_STATUS_TYPE.
83  *
84  * @param statusName A name which will be passed back to accounts of this service.  Internal use only.  Use the AIStatusController.h \#defines where appropriate.
85  * @param description A human-readable localized description which will be shown to the user.  Use the AIStatusController.h \#defines where appropriate.
86  * @param type An AIStatusType, the general type of this status.
87  * @param service The AIService for which to register the status
88  */
89 - (void)registerStatus:(NSString *)statusName
90            withDescription:(NSString *)description
91                                 ofType:(AIStatusType)type
92                         forService:(AIService *)service;
93 /*!
94  * @brief Generate and return a menu of status types (Away, Be right back, etc.)
95  *
96  * @param service The service for which to return a specific list of types, or nil to return all available types
97  * @param target The target for the menu items, which will have an action of \@selector(selectStatus:)
98  *
99  * @result The menu of statuses, separated by available and away status types
100  */
101 - (NSMenu *)menuOfStatusesForService:(AIService *)service withTarget:(id)target;
102
103 @property (readonly, nonatomic) NSSet *flatStatusSet;
104 @property (readonly, nonatomic) NSArray *sortedFullStateArray;
105 @property (readonly, nonatomic) AIStatus *offlineStatusState;
106 @property (readonly, nonatomic) AIStatus *availableStatus;
107 @property (readonly, nonatomic) AIStatus *awayStatus;
108 @property (readonly, nonatomic) AIStatus *invisibleStatus;
109 @property (readonly, nonatomic) AIStatus *offlineStatus;
110 - (AIStatus *)statusStateWithUniqueStatusID:(NSNumber *)uniqueStatusID;
111
112 - (void)setActiveStatusState:(AIStatus *)state;
113 - (void)setActiveStatusState:(AIStatus *)state forAccount:(AIAccount *)account;
114 - (void)setDelayStatusMenuRebuilding:(BOOL)shouldDelay;
115 - (void)applyState:(AIStatus *)statusState toAccounts:(NSArray *)accountArray;
116 @property (readonly, nonatomic) AIStatus *activeStatusState;
117 - (NSSet *)allActiveStatusStates;
118 - (AIStatusType)activeStatusTypeTreatingInvisibleAsAway:(BOOL)invisibleIsAway;
119 - (NSSet *)activeUnavailableStatusesAndType:(AIStatusType *)activeUnvailableStatusType
120                                                                    withName:(NSString **)activeUnvailableStatusName
121                          allOnlineAccountsAreUnvailable:(BOOL *)allOnlineAccountsAreUnvailable;
122 - (AIStatus *)defaultInitialStatusState;
123
124 - (NSString *)descriptionForStateOfStatus:(AIStatus *)statusState;
125 - (NSString *)localizedDescriptionForCoreStatusName:(NSString *)statusName;
126 - (NSString *)localizedDescriptionForStatusName:(NSString *)statusName statusType:(AIStatusType)statusType;
127 - (NSString *)defaultStatusNameForType:(AIStatusType)statusType;
128
129 //State Editing
130 - (void)addStatusState:(AIStatus *)state;
131 - (void)removeStatusState:(AIStatus *)state;
132 - (void)statusStateDidSetUniqueStatusID;
133
134 //State menu support
135 - (void)setDelayActiveStatusUpdates:(BOOL)shouldDelay;
136 - (BOOL)removeIfNecessaryTemporaryStatusState:(AIStatus *)originalState;
137 - (AIStatusGroup *)rootStateGroup;
138
139 - (void)savedStatusesChanged;
140 - (void)statusStateDidSetUniqueStatusID;
141 @end
Note: See TracBrowser for help on using the browser.