/usr/share/idl/thunderbird/prplIConversation.idl is in thunderbird-dev 1:52.7.0+build1-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | /* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsISupports.idl"
#include "nsISimpleEnumerator.idl"
#include "nsIObserver.idl"
interface prplIAccountBuddy;
interface imIAccount;
interface imIOutgoingMessage;
interface imIMessage;
interface nsIURI;
interface nsIDOMDocument;
interface prplIChatRoomFieldValues;
/*
* This is the XPCOM purple conversation component, a proxy for PurpleConversation.
*/
[scriptable, uuid(f71c58d6-2c47-4468-934b-b1c61462c01a)]
interface prplIConversation: nsISupports {
/* Indicate if this conversation implements prplIConvIM or prplIConvChat */
readonly attribute boolean isChat;
/* The account used for this conversation */
readonly attribute imIAccount account;
/* The name of the conversation, typically in English */
readonly attribute AUTF8String name;
/* A name that can be used to check for duplicates and is the basis
for the directory name for log storage. */
readonly attribute AUTF8String normalizedName;
/* The title of the conversation, typically localized */
readonly attribute AUTF8String title;
/* The time and date of the conversation's creation, in microseconds */
readonly attribute PRTime startDate;
/* Unique identifier of the conversation */
/* Setable only once by purpleCoreService while calling addConversation. */
attribute unsigned long id;
/* Send a message in the conversation */
void sendMsg(in AUTF8String aMsg);
/* Preprocess messages before they are sent (eg. split long messages).
Can return null if no changes are to be made. */
void prepareForSending(in imIOutgoingMessage aMsg,
[optional] out unsigned long aMsgCount,
[retval, array, size_is(aMsgCount)] out wstring aMsgs);
/* Postprocess messages before they are displayed (eg. escaping). The
implementation can set aMsg.displayMessage, otherwise the originalMessage
is used. */
void prepareForDisplaying(in imIMessage aMsg);
/* Send information about the current typing state to the server.
aString should contain the content currently in the text field. The
protocol should return the number of characters that can still be typed. */
long sendTyping(in AUTF8String aString);
const long NO_TYPING_LIMIT = 2147483647; // max int = 2 ^ 31 - 1
/* Un-initialize the conversation. Will be called by
purpleCoreService::RemoveConversation when the conversation is
closed or by purpleCoreService::Quit while exiting. */
void unInit();
/* When the conversation is closed from the UI. */
void close();
/* Method to add or remove an observer */
void addObserver(in nsIObserver aObserver);
void removeObserver(in nsIObserver aObserver);
/* Observers will be all receive new-text notifications.
aSubject will contain the message (prplIMessage) */
};
[scriptable, uuid(c0b5b647-b0ec-4dc6-9e53-31a762a30a6e)]
interface prplIConvIM: prplIConversation {
/* The buddy at the remote end of the conversation */
readonly attribute prplIAccountBuddy buddy;
/* The remote buddy is not currently typing */
const short NOT_TYPING = 0;
/* The remote buddy is currently typing */
const short TYPING = 1;
/* The remote buddy started typing, but has stopped typing */
const short TYPED = 2;
/* The typing state of the remote buddy.
The value is NOT_TYPING, TYPING or TYPED. */
readonly attribute short typingState;
};
/* This represents a participant in a chat room */
[scriptable, uuid(b0e9177b-40f6-420b-9918-04bbbb9ce44f)]
interface prplIConvChatBuddy: nsISupports {
/* The name of the buddy */
readonly attribute AUTF8String name;
/* The alias (FIXME: can this be non-null if buddy is null?) */
readonly attribute AUTF8String alias;
/* Indicates if this chat buddy corresponds to a buddy in our buddy list */
readonly attribute boolean buddy;
/* URI of the user icon for the buddy */
readonly attribute AUTF8String buddyIconFilename;
/* PurpleConvChatBuddyFlags flags; (ops, voice etc.) */
readonly attribute boolean noFlags;
readonly attribute boolean voiced;
readonly attribute boolean halfOp;
readonly attribute boolean op;
readonly attribute boolean founder;
readonly attribute boolean typing;
};
[scriptable, uuid(72c17398-639f-4141-a19c-78cbdeb39fba)]
interface prplIConvChat: prplIConversation {
/* Get the prplIConvChatBuddy if a participant with name aName (the
participant's nick in the conversation) exists, otherwise return null */
prplIConvChatBuddy getParticipant(in AUTF8String aName);
/* Get an nsISimpleEnumerator of prplIConvChatBuddy objects:
The list of people participating in this chat */
nsISimpleEnumerator getParticipants();
/* The normalized chat buddy name will be suitable for calling
createConversation to start a private conversation or calling
requestBuddyInfo. */
AUTF8String getNormalizedChatBuddyName(in AUTF8String aChatBuddyName);
/* The topic of this chat room */
attribute AUTF8String topic;
/* The name/nick of the person who set the topic */
readonly attribute AUTF8String topicSetter;
/* Whether the protocol plugin can set a topic. Doesn't check that
the user has the necessary rights in the current conversation. */
readonly attribute boolean topicSettable;
/* The nick seen by other people in the room */
readonly attribute AUTF8String nick;
/* This is true when we left the chat but kept the conversation open */
readonly attribute boolean left;
/* This is true if we are in the process of joining the channel */
readonly attribute boolean joining;
/* This stores the data required to join the chat with joinChat().
If null, the chat will not be rejoined automatically when the
account reconnects after a disconnect.
Should be set to null by the prpl if the user parts the chat. */
readonly attribute prplIChatRoomFieldValues chatRoomFields;
/* Observers will receive chat-buddy-add, chat-buddy-update,
chat-buddy-remove and chat-update-topic notifications.
aSubject will be of type:
nsISimpleEnumerator of prplIConvChatBuddy for chat-buddy-add,
nsISimpleEnumerator of nsISupportsString for chat-buddy-remove,
prplIConvChatBuddy for chat-buddy-update,
null for chat-update-topic.
aData will contain the old nick for chat-buddy-update if the name
has changed.
*/
};
|