# class ClientContact

A client contact. More...

Full name | `TelEngine::ClientContact`
Definition | `#include <yatecbase.h>`
Inherits | TelEngine::RefObject [public ]
Inherited by | MucRoom
List of all Methods

Annotated List
Files
Globals
Hierarchy
Index

#### Public Methods

- explicit ClientContact (ClientAccount* owner, const char* id, const char* name = 0, const char* uri = 0)
- explicit ClientContact (ClientAccount* owner, const NamedList& params, const char* id = 0, const char* uri = 0)
- inline ClientAccount* account ()
- inline const String& accountName () const
- inline const URI& uri () const
- inline void setUri (const char* u)
- inline ObjList& resources ()
- inline bool online () const
- inline void setOnline (bool on)
- inline ObjList& groups ()
- inline bool local (bool defVal = false) const
- inline void setLocal (bool on)
- inline bool remote (bool defVal = false) const
- inline void setRemote (bool on)
- inline void setDockedChat (bool on)
- inline void getContactSection (String& buf)
- virtual const String& toString () const
- virtual MucRoom* mucRoom ()
- inline String& buildInstanceId (String& dest, const String& inst = String::empty())
- inline void buildIdHash (String& buf, const String& prefix = String::empty())
- inline bool isChatWnd (Window* wnd)
- bool hasChat ()
- virtual void flashChat (bool on = true)
- virtual bool sendChat (const char* body, const String& res = String::empty(), const String& type = String::empty(), const char* state = "active")
- virtual void getChatInput (String& text, const String& name = "message")
- virtual void setChatInput (const String& text = String::empty(), const String& name = "message")
- virtual void getChatHistory (String& text, bool richText = false, const String& name = "history")
- virtual void setChatHistory (const String& text, bool richText = false, const String& name = "history")
- virtual void addChatHistory (const String& what, NamedList*& params, const String& name = "history")
- virtual void getChatProperty (const String& name, const String& prop, String& value)
- virtual void setChatProperty (const String& name, const String& prop, const String& value)
- inline bool isChatVisible ()
- virtual bool showChat (bool visible, bool active = false)
- Window* getChatWnd ()
- virtual void createChatWindow (bool force = false, const char* name = 0)
- virtual void updateChatWindow (const NamedList& params, const char* title = 0, const char* icon = 0)
- virtual bool isChatActive ()
- void destroyChatWindow ()
- virtual String* findGroup (const String& group)
- virtual bool appendGroup (const String& group)
- virtual bool removeGroup (const String& group)
- virtual bool setGroups (const NamedList& list, const String& param)
- virtual ClientResource* status (bool ref = false)
- virtual ClientResource* findResource (const String& id, bool ref = false)
- virtual ClientResource* findAudioResource (bool ref = false)
- virtual ClientResource* findFileTransferResource (bool ref = false)
- virtual ClientResource* appendResource (const String& id)
- virtual bool insertResource (ClientResource* res)
- virtual bool removeResource (const String& id)

#### Public Static Methods

- static inline String& buildContactId (String& dest, const String& account, const String& contact)
- static inline void splitContactId (const String& src, String& account)
- static void splitContactInstanceId (const String& src, String& account, String& contact, String* instance = 0)

#### Public Members

- static String s_chatPrefix
- static String s_dockedChatWnd
- static String s_dockedChatWidget
- static String s_mucsWnd
- static String s_chatInput
- String m_name
- String m_subscription
- NamedList m_params

#### Protected Methods

- explicit ClientContact (ClientAccount* owner, const char* id, bool mucRoom)
- void removeFromOwner ()
- virtual void destroyed ()

#### Protected Members

- ClientAccount* m_owner
- bool m_online
- String m_id
- URI m_uri
- ObjList m_resources
- ObjList m_groups
- bool m_dockedChat
- String m_chatWndName

## Detailed Description

A client contact The contact is using the owner's mutex to lock it's operations

explicit ClientContact (ClientAccount* owner, const char* id, const char* name = 0, const char* uri = 0)

### ClientContact

Constructor. Append itself to the owner's list

Parameters:

owner | The contact's owner
id | The contact's id
name | Optional display name. Defaults to the id's value if 0
uri | Optional contact URI

explicit ClientContact (ClientAccount* owner, const NamedList& params, const char* id = 0, const char* uri = 0)

### ClientContact

Constructor. Build a contact from a list of parameters. Append itself to the owner's list

Parameters:

owner | The contact's owner
params | The list of parameters used to build this contact
id | Optional contact id
uri | Optional contact URI

inline ClientAccount* account ()

### account

Get this contact's account

Returns: This contact's account

inline const String& accountName ()

### accountName

[const]

Get this contact account's name (id)

Returns: This contact account name (id) or an empty string if none

inline const URI& uri ()

### uri

[const]

Get this contact's URI

Returns: This contact's URI

inline void setUri (const char* u)

### setUri

Set this contact's URI

Parameters:

u | New contact URI

inline ObjList& resources ()

### resources

Get the resource list of this contact

Returns: The resource list of this contact

inline bool online ()

### online

[const]

Check if the contact is online (the online flag is set or has at least 1 resource in list)

Returns: True if the contact is online

inline void setOnline (bool on)

### setOnline

Set the online flag

Parameters:

on | The new value for online flag

inline ObjList& groups ()

### groups

Get the group list of this contact

Returns: The group list of this contact

inline bool local (bool defVal = false)

### local

[const]

Check if the contact is locally saved

Parameters:

defVal | Default value to return if parameter is invalid

Returns: True if the contact is locally saved

inline void setLocal (bool on)

### setLocal

Set contact locally saved flag

Parameters:

on | The new value for locally saved flag

inline bool remote (bool defVal = false)

### remote

[const]

Check if the contact is saved on server

Parameters:

defVal | Default value to return if parameter is invalid

Returns: True if the contact is saved on server

inline void setRemote (bool on)

### setRemote

Set contact server saved flag

Parameters:

on | The new value for server saved flag

inline void setDockedChat (bool on)

### setDockedChat

Set/reset the docked chat flag for non MucRoom contact

Parameters:

on | The new value for docked chat flag

inline void getContactSection (String& buf)

### getContactSection

Remove account prefix from contact id and URI unescape the result

Parameters:

buf | Destination buffer

const String& toString ()

### toString

[const virtual]

Get a string representation of this object

Returns: The contact's id

Reimplemented from GenObject.

MucRoom* mucRoom ()

### mucRoom

[virtual]

Return a MucRoom contact from this one

Returns: MucRoom pointer or 0

inline String& buildInstanceId (String& dest, const String& inst = String::empty())

### buildInstanceId

Build a contact instance id to be used in UI

Parameters:

dest | Destination string
inst | Instance name

Returns: Destination string

inline void buildIdHash (String& buf, const String& prefix = String::empty())

### buildIdHash

Build a string from prefix and contact id hash

Parameters:

buf | Destination string
prefix | Optional prefix

inline bool isChatWnd (Window* wnd)

### isChatWnd

Check if a window is this contact's chat

Parameters:

wnd | The window to check

Returns: True if the given window is this contact's chat

bool hasChat ()

### hasChat

Check if this contact has a chat widget (window or docked item)

Returns: True if this contact has a chat window or docked item

void flashChat (bool on = true)

### flashChat

[virtual]

Flash chat window/item to notify the user

Parameters:

on | True to start, false to stop flashing

bool sendChat (const char* body, const String& res = String::empty(), const String& type = String::empty(), const char* state = "active")

### sendChat

[virtual]

Send chat to contact (enqueue a msg.execute message)

Parameters:

body | Chat body
res | Optional target instance
type | Optional message type parameter
state | Optional chat state

Returns: True on success

void getChatInput (String& text, const String& name = "message")

### getChatInput

[virtual]

Retrieve the contents of the chat input widget

Parameters:

text | Chat input text
name | Chat input widget name

void setChatInput (const String& text = String::empty(), const String& name = "message")

### setChatInput

[virtual]

Set the chat input widget text

Parameters:

text | Chat input text
name | Chat input widget name

void getChatHistory (String& text, bool richText = false, const String& name = "history")

### getChatHistory

[virtual]

Retrieve the contents of the chat history widget

Parameters:

text | Chat history text
richText | Retrieve rich/plain text flag
name | Chat history widget name

void setChatHistory (const String& text, bool richText = false, const String& name = "history")

### setChatHistory

[virtual]

Set the contents of the chat history widget

Parameters:

text | Chat history text
richText | Set rich/plain text flag
name | Chat history widget name

void addChatHistory (const String& what, NamedList*& params, const String& name = "history")

### addChatHistory

[virtual]

Add an entry to chat history

Parameters:

what | Item to add (chat_in, chat_out, ...)
params | Chat history item parameters (it will be consumed and zeroed)
name | Chat history widget name

void getChatProperty (const String& name, const String& prop, String& value)

### getChatProperty

[virtual]

Retrieve a chat widget' property

Parameters:

name | Widget name
prop | Property name
value | Destination buffer

void setChatProperty (const String& name, const String& prop, const String& value)

### setChatProperty

[virtual]

Set a chat widget' property

Parameters:

name | Widget name
prop | Property name
value | Property value

inline bool isChatVisible ()

### isChatVisible

Check if this contact's chat window is visible

Returns: True if this contact's chat window is visible

bool showChat (bool visible, bool active = false)

### showChat

[virtual]

Show or hide this contact's chat window or docked item

Parameters:

visible | True to show, false to hide the window or destroy the docked item
active | True to activate the window or select the docked item if shown

Returns: True on success

Window* getChatWnd ()

### getChatWnd

Get the chat window

Returns: Valid Window pointer or 0

void createChatWindow (bool force = false, const char* name = 0)

### createChatWindow

[virtual]

Create the chat window

Parameters:

force | True to destroy the current one if any
name | The window's name. Defaults to global name if empty

void updateChatWindow (const NamedList& params, const char* title = 0, const char* icon = 0)

### updateChatWindow

[virtual]

Update contact parameters in chat window

Parameters:

params | Parameters to set
title | Optional window title to set (ignored if docked)
icon | Optional window icon to set (ignored if docked)

bool isChatActive ()

### isChatActive

[virtual]

Check if the contact chat is active

Returns: True if the contact's chat window/page is active

void destroyChatWindow ()

### destroyChatWindow

Close the chat window or destroy docked chat item

String* findGroup (const String& group)

### findGroup

[virtual]

Find a group this contact might belong to

Parameters:

group | The name of the group to find

Returns: String pointer or 0 if not found

bool appendGroup (const String& group)

### appendGroup

[virtual]

Append a group to this contact

Parameters:

group | Group's name

Returns: False if the group already exists

bool removeGroup (const String& group)

### removeGroup

[virtual]

Remove a contact's group

Parameters:

group | Group's name

Returns: False if the group was not found

bool setGroups (const NamedList& list, const String& param)

### setGroups

[virtual]

Replace contact's groups from a list of parameters

Parameters:

list | The list of parameters
param | The parameter name to handle

Returns: True if the list changed

ClientResource* status (bool ref = false)

### status

[virtual]

Find the resource with the lowest status

Parameters:

ref | True to obtain a referenced pointer

Returns: ClientResource pointer or 0 if not found

ClientResource* findResource (const String& id, bool ref = false)

### findResource

[virtual]

Find a resource having a given id

Parameters:

id | The id of the desired resource
ref | True to obtain a referenced pointer

Returns: ClientResource pointer or 0 if not found

ClientResource* findAudioResource (bool ref = false)

### findAudioResource

[virtual]

Get the first resource with audio capability

Parameters:

ref | True to obtain a referenced pointer

Returns: ClientResource pointer or 0 if not found

ClientResource* findFileTransferResource (bool ref = false)

### findFileTransferResource

[virtual]

Get the first resource with file transfer capability capability

Parameters:

ref | True to obtain a referenced pointer

Returns: ClientResource pointer or 0 if not found

ClientResource* appendResource (const String& id)

### appendResource

[virtual]

Append a resource having a given id

Parameters:

id | The id of the desired resource

Returns: ClientResource pointer or 0 if a resource with the given name already exists

bool insertResource (ClientResource* res)

### insertResource

[virtual]

Insert a resource in the list by its priority. If the resource is already there it will be extracted and re-inserted

Parameters:

res | The resource to insert

Returns: True on success, false a resource with the same name already exists

bool removeResource (const String& id)

### removeResource

[virtual]

Remove a resource having a given id

Parameters:

id | The id of the desired resource

Returns: True if the resource was removed

inline String& buildContactId (String& dest, const String& account, const String& contact)

### buildContactId

[static]

Build a contact id to be used in UI (all strings are URI escaped using extra '|' character)

Parameters:

dest | Destination string
account | Account owning the contact
contact | The contact's id

Returns: Destination string

inline void splitContactId (const String& src, String& account)

### splitContactId

[static]

Retrieve the account part of a contact id

Parameters:

src | Source string
account | Account id (URI unescaped)

void splitContactInstanceId (const String& src, String& account, String& contact, String* instance = 0)

### splitContactInstanceId

[static]

Split a contact instance id in account/contact/instance parts

Parameters:

src | Source string
account | Account id (URI unescaped)
contact | Contact id
instance | Optional pointer to a String to be filled with instance id (URI unescaped)

static String s_chatPrefix

### s_chatPrefix

static String s_dockedChatWnd

### s_dockedChatWnd

static String s_dockedChatWidget

### s_dockedChatWidget

static String s_mucsWnd

### s_mucsWnd

static String s_chatInput

### s_chatInput

String m_name

### m_name

String m_subscription

### m_subscription

NamedList m_params

### m_params

explicit ClientContact (ClientAccount* owner, const char* id, bool mucRoom)

### ClientContact

[protected]

Constructor. Append itself to the owner's list

Parameters:

owner | The contact's owner
id | The contact's id
mucRoom | True if this contact is a MUC room

void removeFromOwner ()

### removeFromOwner

[protected]

Remove from owner

void destroyed ()

### destroyed

[protected virtual]

Remove from owner. Destroy the chat window. Release data

Reimplemented from RefObject.

ClientAccount* m_owner

### m_owner

[protected]

bool m_online

### m_online

[protected]

String m_id

### m_id

[protected]

URI m_uri

### m_uri

[protected]

ObjList m_resources

### m_resources

[protected]

ObjList m_groups

### m_groups

[protected]

bool m_dockedChat

### m_dockedChat

[protected]

String m_chatWndName

### m_chatWndName

[protected]

Generated by: paulc on bussard on Fri Dec 21 16:28:34 2012, using kdoc 2.0a54.