Copyright © 2011 Collabora Ltd.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

version 1. This replaces the old-school Telepathy properties on Text.

Represents the configuration of a chatroom, some aspects of which may be modifiable by the user, depending on their privileges. This corresponds to the room configuration on XMPP, and various channel mode flags on IRC.

The “topic” (on IRC) or “subject” (on XMPP) is not part of this interface; it can be found on the Subject2 interface.

True if people may join the channel without other members being made aware of their identity. True if people may not join the channel until they have been invited. The limit to the number of members; or 0 if there is no limit. True if channel membership is not sufficient to allow participation. A human-visible name for the channel, if it differs from Room2.RoomName; the empty string, otherwise.

On XMPP, this represents the muc#roomconfig_roomname field of the muc#roomconfig form. So for jdev@conference.jabber.org, for example:

  • Room2.RoomName = "jdev";
  • Room2.Server = "conference.jabber.org";
  • Title = "General Jabber development discussion".

XEP-0045 is awful.

A human-readable description of the channel's overall purpose; if any. True if the channel will remain in existence on the server after all members have left it. True if the channel is not visible to non-members. True if contacts joining this channel must provide a password to be granted entry. Note that this property does not indicate that a password is required right now; see the Password interface for the API used to provide a password while joining a room. If PasswordProtected is True, the password required to enter the channel, if known. If the password is unknown, or PasswordProtected is False, the empty string. On XMPP—bless its cotton socks!—non-owners of a MUC cannot see its current password, even if they just provided the password in order to join the room…

If PasswordProtected is True, an optional hint for the password.

On protocols supporting PasswordHint (indicated by its presence in MutableProperties), Password and PasswordHint MUST be set in a single call to UpdateConfiguration.

Skype requires that the password and its hint be supplied together.
If True, the user may call UpdateConfiguration to change the values of the properties listed in MutableProperties.

A list of (unqualified) property names on this interface which may be modified using UpdateConfiguration (if CanUpdateConfiguration is True). Properties not listed here cannot be modified.

For example, IRC does not have the concept of joining a room without other participants knowing your true identity; so on IRC the Anonymous property will always be False, and MutableProperties will not include "Anonymous".

True once the initial room configuration has been retrieved, or False otherwise. On some services, this may take some time after you've joined a room to fetch the configuration. Once this property changes to True, the other properties on this interface can be assumed to be accurate; this property MUST not change to False after it becomes True.

An application's “configure this room” dialog might choose to display a spinner while this property is False, rather than allowing the user to edit probably-inaccurate configuration.

The new values of one or more properties on this interface, which must be listed in MutableProperties. For instance, to set up a channel for discussing top-secret corporate merge plans, this parameter might be:

{
  'Private': True,
  'InviteOnly': True,
  'Description': "The first rule of #inteltakeover is: do not talk about #inteltakeover",
}

If CanUpdateConfiguration is True, modifies the current values of one or more room properties. This method SHOULD NOT return until the change has been accepted or declined by the server.

Note that the server may ostensibly accept the changes (thus allowing this method to return success) but signal different values; for example, the server might truncate Title to some maximum length. Callers SHOULD continue to listen for the PropertiesChanged signal, and trust the values it signals over those provided to this method.

The user is not allowed to reconfigure this room. One or more of the specified properties is unknown, or ill-typed. One or more of the specified properties cannot be modified on this protocol. The room's current configuration has not yet been retrieved, so we cannot update it just yet. The application might like to try again once the ConfigurationRetrieved property becomes True.