Frameworks/Adium Framework/Source/AIAdiumProtocol.h
author Zachary West <zacw@adium.im>
Tue Jun 02 17:22:19 2009 -0400 (2009-06-02)
changeset 2450 08aa9c3a346c
parent 2048 88d7a58c12b8
child 3038 f599fa0d98d5
permissions -rw-r--r--
Create a new advanced preference called "Confirmations". Move Quit Confirmations there.

Adds a new confirmation type for closing message windows with more than 1 tab open. Fixes #12006.

This new preference has two options: always confirm, only confirm when there's unread content. Displays an alert sheet when trying to close the window.
     1 /* 
     2  * Adium is the legal property of its developers, whose names are listed in the copyright file included
     3  * with this source distribution.
     4  * 
     5  * This program is free software; you can redistribute it and/or modify it under the terms of the GNU
     6  * General Public License as published by the Free Software Foundation; either version 2 of the License,
     7  * or (at your option) any later version.
     8  * 
     9  * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
    10  * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
    11  * Public License for more details.
    12  * 
    13  * You should have received a copy of the GNU General Public License along with this program; if not,
    14  * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    15  */
    16 
    17 @class AICoreComponentLoader, AICorePluginLoader;
    18 
    19 typedef enum {
    20 	AIQuitConfirmAlways = 0,
    21 	AIQuitConfirmSelective
    22 } AIQuitConfirmationType;
    23 
    24 typedef enum {
    25 	AIMessageCloseAlways = 0,
    26 	AIMessageCloseUnread
    27 } AIMessageCloseConfirmationType;
    28 
    29 @protocol AIAccountController, AIChatController, AIContactAlertsController, AIDebugController, AIEmoticonController,
    30 		AIPreferenceController, AIMenuController, AIApplescriptabilityController, AIStatusController,
    31 		AIContentController, AIToolbarController, AISoundController, AIDockController,
    32 		AIFileTransferController, AILoginController, AIInterfaceController, AIContactController;
    33 
    34 @protocol AIAdium <NSObject>
    35 @property (readonly, nonatomic) NSObject<AIAccountController> *accountController;
    36 @property (readonly, nonatomic) NSObject<AIChatController> *chatController;
    37 @property (readonly, nonatomic) NSObject<AIContactController> *contactController;
    38 @property (readonly, nonatomic) NSObject<AIContentController> *contentController;
    39 @property (readonly, nonatomic) NSObject<AIDockController> *dockController;
    40 @property (readonly, nonatomic) NSObject<AIEmoticonController> *emoticonController;
    41 @property (readonly, nonatomic) NSObject<AIInterfaceController> *interfaceController;
    42 @property (readonly, nonatomic) NSObject<AILoginController> *loginController;
    43 @property (readonly, nonatomic) NSObject<AIMenuController> *menuController;
    44 @property (readonly, nonatomic) NSObject<AIPreferenceController> *preferenceController;
    45 @property (readonly, nonatomic) NSObject<AISoundController> *soundController;
    46 @property (readonly, nonatomic) NSObject<AIStatusController> *statusController;
    47 @property (readonly, nonatomic) NSObject<AIToolbarController> *toolbarController;
    48 @property (readonly, nonatomic) NSObject<AIContactAlertsController> *contactAlertsController;
    49 @property (readonly, nonatomic) NSObject<AIFileTransferController> *fileTransferController;
    50 @property (readonly, nonatomic) NSObject<AIDebugController> *debugController;
    51 @property (readonly, nonatomic) NSObject<AIApplescriptabilityController> *applescriptabilityController;
    52 
    53 @property (readonly, nonatomic) AICoreComponentLoader *componentLoader;
    54 @property (readonly, nonatomic) AICorePluginLoader *pluginLoader;
    55 
    56 @property (readonly, nonatomic) NSString *applicationSupportDirectory;
    57 - (NSString *)createResourcePathForName:(NSString *)name;
    58 - (NSArray *)resourcePathsForName:(NSString *)name;
    59 - (NSArray *)allResourcesForName:(NSString *)name withExtensions:(id)extensions;
    60 - (NSString *)pathOfPackWithName:(NSString *)name extension:(NSString *)extension resourceFolderName:(NSString *)folderName;
    61 @property (readonly, nonatomic) NSString *cachesPath;
    62 
    63 - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB;
    64 
    65 @property (readonly, nonatomic) BOOL isQuitting;
    66 
    67 @end
    68 
    69 //Adium events
    70 #define KEY_EVENT_DISPLAY_NAME		@"DisplayName"
    71 #define KEY_EVENT_NOTIFICATION		@"Notification"
    72 
    73 //Adium Notifications
    74 #define CONTACT_STATUS_ONLINE_YES			@"Contact_StatusOnlineYes"	// Contact signs on
    75 #define CONTACT_STATUS_ONLINE_NO			@"Contact_StatusOnlineNo"	// Contact signs off
    76 #define CONTACT_STATUS_AWAY_YES				@"Contact_StatusAwayYes"
    77 #define CONTACT_STATUS_AWAY_NO				@"Contact_StatusAwayNo"
    78 #define CONTACT_STATUS_IDLE_YES				@"Contact_StatusIdleYes"
    79 #define CONTACT_STATUS_IDLE_NO				@"Contact_StatusIdleNo"
    80 #define CONTACT_STATUS_MESSAGE				@"Contact_StatusMessage"
    81 #define CONTACT_SEEN_ONLINE_YES				@"Contact_SeenOnlineYes"
    82 #define CONTACT_SEEN_ONLINE_NO				@"Contact_SeenOnlineNo"
    83 #define CONTACT_STATUS_MOBILE_YES			@"Contact_StatusMobileYes"
    84 #define CONTACT_STATUS_MOBILE_NO			@"Contact_StatusMobileNo"
    85 #define CONTENT_MESSAGE_SENT				@"Content_MessageSent"
    86 #define CONTENT_MESSAGE_RECEIVED			@"Content_MessageReceived"
    87 #define CONTENT_MESSAGE_RECEIVED_GROUP		@"Content_MessageReceivedGroup"
    88 #define CONTENT_MESSAGE_RECEIVED_FIRST		@"Content_MessageReceivedFirst"
    89 #define CONTENT_MESSAGE_RECEIVED_BACKGROUND	@"Content_MessageReceivedBackground"
    90 #define CONTENT_MESSAGE_RECEIVED_BACKGROUND_GROUP		@"Content_MessageReceivedBackgroundGroup"
    91 #define CONTENT_NUDGE_BUZZ_OCCURED			@"Content_NudgeBuzzOccured"
    92 #define CONTENT_CONTACT_JOINED_CHAT			@"Content_ContactJoinedChat"
    93 #define CONTENT_CONTACT_LEFT_CHAT			@"Content_ContactLeftChat"
    94 #define CONTENT_GROUP_CHAT_INVITE			@"Content_GroupChatInvite"
    95 #define CONTENT_GROUP_CHAT_MENTION			@"Content_GroupChatMention"
    96 #define INTERFACE_ERROR_MESSAGE				@"Interface_ErrorMessageReceived"
    97 
    98 /* Note: The account connected/disconnected events are aggregated for many accounts connecting simultaneously.
    99  * Use a list object observer (see AIContactController) if you are concerned about specific account connectivity changes.
   100  */
   101 #define ACCOUNT_CONNECTED					@"Account_Connected"
   102 #define ACCOUNT_DISCONNECTED				@"Account_Disconnected"
   103 
   104 #define	ACCOUNT_RECEIVED_EMAIL				@"Account_NewMailReceived"
   105 #define FILE_TRANSFER_REQUEST				@"FileTransfer_Request"
   106 #define FILE_TRANSFER_CHECKSUMMING			@"FileTransfer_Checksumming"
   107 #define FILE_TRANSFER_WAITING_REMOTE		@"File_Transfer_WaitingRemote"
   108 #define FILE_TRANSFER_BEGAN					@"FileTransfer_Began"
   109 #define FILE_TRANSFER_CANCELLED				@"FileTransfer_Cancelled"
   110 #define FILE_TRANSFER_FAILED				@"FileTransfer_Failed"
   111 #define FILE_TRANSFER_COMPLETE				@"FileTransfer_Complete"
   112 
   113 #define AIXtrasDidChangeNotification				@"AIXtrasDidChange"
   114 #define AIApplicationDidFinishLoadingNotification	@"AIApplicationDidFinishLoading"
   115 #define AIAppWillTerminateNotification				@"AIAppWillTerminate"
   116 #define AIShowLogAtPathNotification					@"AIShowLogAtPath"
   117 #define AIShowLogViewerAndReindexNotification		@"AIShowLogViewerAndReindex"
   118 #define AINetworkDidChangeNotification				@"AINetworkDidChange"