# class Client

Class that runs the User Interface. More...

Contains pure virtuals
Full name | `TelEngine::Client`
Definition | `#include <yatecbase.h>`
Inherits | TelEngine::MessageReceiver [public ]
List of all Methods

Annotated List
Files
Globals
Hierarchy
Index

#### Public Types

- enum MsgID { CallCdr = 0, UiAction, UserLogin, UserNotify, ResourceNotify, ResourceSubscribe, ClientChanUpdate, UserRoster, ContactInfo, ChanNotify, MucRoom, MsgExecute, EngineStart, TransferNotify, UserData, MsgIdCount }
- enum ClientToggle { OptMultiLines = 0, OptAutoAnswer, OptRingIn, OptRingOut, OptActivateLastOutCall, OptActivateLastInCall, OptActivateCallOnSelect, OptKeypadVisible, OptOpenIncomingUrl, OptAddAccountOnStartup, OptDockedChat, OptDestroyChat, OptNotifyChatState, OptShowEmptyChat, OptSendEmptyChat, OptCount }
- enum TrayIconType { TrayIconMain = 0, TrayIconInfo = 1000, TrayIconIncomingChat = 3000, TrayIconNotification = 5000, TrayIconIncomingCall = 10000, }

#### Public Methods

- explicit Client (const char *name = 0)
- virtual ~Client ()
- virtual bool startup ()
- virtual void run ()
- virtual void cleanup ()
- virtual void main ()
- virtual void lock ()
- virtual void unlock ()
- inline void lockOther ()
- inline void unlockOther ()
- inline void setThread (Thread* th)
- virtual void allHidden ()
- void loadUI (const char* file = 0, bool init = true)
- virtual void quit ()
- bool openUrlSafe (const String& url)
- virtual bool openUrl (const String& url)
- virtual bool received (Message& msg, int id)
- virtual bool createWindowSafe (const String& name, const String& alias = String::empty())
- virtual bool createDialog (const String& name, Window* parent, const String& title, const String& alias = String::empty(), const NamedList* params = 0)
- virtual bool createObject (void** dest, const String& type, const char* name, NamedList* params = 0)
- virtual bool closeWindow (const String& name, bool hide = true)
- virtual bool closeDialog (const String& name, Window* wnd, Window* skip = 0)
- virtual bool debugHook (bool active)
- virtual bool addToLog (const String& text)
- virtual bool setStatus (const String& text, Window* wnd = 0)
- bool setStatusLocked (const String& text, Window* wnd = 0)
- bool setParams (const NamedList* params, Window* wnd = 0, Window* skip = 0)
- virtual bool action (Window* wnd, const String& name, NamedList* params = 0)
- virtual bool toggle (Window* wnd, const String& name, bool active)
- virtual bool select (Window* wnd, const String& name, const String& item, const String& text = String::empty())
- inline bool oneThread () const
- inline int line () const
- void line (int newLine)
- bool hasElement (const String& name, Window* wnd = 0, Window* skip = 0)
- bool setActive (const String& name, bool active, Window* wnd = 0, Window* skip = 0)
- bool setFocus (const String& name, bool select = false, Window* wnd = 0, Window* skip = 0)
- bool setShow (const String& name, bool visible, Window* wnd = 0, Window* skip = 0)
- bool setText (const String& name, const String& text, bool richText = false, Window* wnd = 0, Window* skip = 0)
- bool setCheck (const String& name, bool checked, Window* wnd = 0, Window* skip = 0)
- bool setSelect (const String& name, const String& item, Window* wnd = 0, Window* skip = 0)
- bool setUrgent (const String& name, bool urgent, Window* wnd = 0, Window* skip = 0)
- bool hasOption (const String& name, const String& item, Window* wnd = 0, Window* skip = 0)
- virtual bool getOptions (const String& name, NamedList* items, Window* wnd = 0, Window* skip = 0)
- bool addOption (const String& name, const String& item, bool atStart, const String& text = String::empty(), Window* wnd = 0, Window* skip = 0)
- bool delOption (const String& name, const String& item, Window* wnd = 0, Window* skip = 0)
- bool addLines (const String& name, const NamedList* lines, unsigned int max, bool atStart = false, Window* wnd = 0, Window* skip = 0)
- bool addTableRow (const String& name, const String& item, const NamedList* data = 0, bool atStart = false, Window* wnd = 0, Window* skip = 0)
- bool setMultipleRows (const String& name, const NamedList& data, const String& prefix = String::empty(), Window* wnd = 0, Window* skip = 0)
- bool insertTableRow (const String& name, const String& item, const String& before, const NamedList* data = 0, Window* wnd = 0, Window* skip = 0)
- bool delTableRow (const String& name, const String& item, Window* wnd = 0, Window* skip = 0)
- bool setTableRow (const String& name, const String& item, const NamedList* data, Window* wnd = 0, Window* skip = 0)
- bool getTableRow (const String& name, const String& item, NamedList* data = 0, Window* wnd = 0, Window* skip = 0)
- bool clearTable (const String& name, Window* wnd = 0, Window* skip = 0)
- bool updateTableRow (const String& name, const String& item, const NamedList* data = 0, bool atStart = false, Window* wnd = 0, Window* skip = 0)
- bool updateTableRows (const String& name, const NamedList* data, bool atStart = false, Window* wnd = 0, Window* skip = 0)
- bool getText (const String& name, String& text, bool richText = false, Window* wnd = 0, Window* skip = 0)
- bool getCheck (const String& name, bool& checked, Window* wnd = 0, Window* skip = 0)
- bool getSelect (const String& name, String& item, Window* wnd = 0, Window* skip = 0)
- bool buildMenu (const NamedList& params, Window* wnd = 0, Window* skip = 0)
- bool removeMenu (const NamedList& params, Window* wnd = 0, Window* skip = 0)
- virtual bool setImage (const String& name, const String& image, Window* wnd = 0, Window* skip = 0)
- virtual bool setImageFit (const String& name, const String& image, Window* wnd = 0, Window* skip = 0)
- virtual bool setProperty (const String& name, const String& item, const String& value, Window* wnd = 0, Window* skip = 0)
- virtual bool getProperty (const String& name, const String& item, String& value, Window* wnd = 0, Window* skip = 0)
- void moveRelated (const Window* wnd, int dx, int dy)
- inline bool initialized () const
- void idleActions ()
- bool postpone (const Message& msg, int id, bool copyUserData = false)
- virtual bool chooseFile (Window* parent, NamedList& params)
- virtual bool setClientParam (const String& param, const String& value, bool save, bool update)
- virtual bool backspace (const String& name, Window* wnd = 0)
- void installRelay (const char* name, int id, int prio)
- virtual bool callRouting (Message& msg)
- virtual bool imRouting (Message& msg)
- virtual bool imExecute (Message& msg)
- virtual bool buildIncomingChannel (Message& msg, const String& dest)
- virtual bool buildOutgoingChannel (NamedList& params)
- bool callIncoming (Message& msg, const String& dest)
- void callAnswer (const String& id, bool setActive = true)
- void callTerminate (const String& id, const char* reason = 0, const char* error = 0)
- ClientChannel* getActiveChannel ()
- virtual bool ringer (bool in, bool on)
- virtual bool createSound (const char* name, const char* file, const char* device = 0)
- bool emitDigits (const char* digits, const String& id = String::empty())
- inline bool emitDigit (char digit, const String& id = String::empty())
- inline bool getBoolOpt (ClientToggle toggle)
- bool setBoolOpt (ClientToggle toggle, bool value, bool updateUi = false)
- virtual bool formatDateTime (String& dest, unsigned int secs, const char* format, bool utc = false)

#### Public Static Methods

- static inline Client* self ()
- static inline void setSelf (Client* client)
- static inline bool valid ()
- static bool isClientMsg (Message& msg)
- static inline bool changing ()
- static Window* getWindow (const String& name)
- static bool setVisible (const String& name, bool show = true, bool activate = false)
- static bool getVisible (const String& name)
- static bool openPopup (const String& name, const NamedList* params = 0, const Window* parent = 0)
- static bool openMessage (const char* text, const Window* parent = 0, const char* context = 0)
- static bool openConfirm (const char* text, const Window* parent = 0, const char* context = 0)
- static ObjList* listWindows ()
- static inline bool exiting ()
- static bool getActive (const String& name)
- static Message* buildMessage (const char* msg, const String& account, const char* oper = 0)
- static Message* buildNotify (bool online, const String& account, const ClientResource* from = 0)
- static Message* buildSubscribe (bool request, bool ok, const String& account, const String& contact, const char* proto = 0)
- static Message* buildUserRoster (bool update, const String& account, const String& contact, const char* proto = 0)
- static bool addLogic (ClientLogic* logic)
- static void removeLogic (ClientLogic* logic)
- static ClientLogic* findLogic (const String& name)
- static Message* eventMessage (const String& event, Window* wnd = 0, const char* name = 0, NamedList* params = 0)
- static bool save (Configuration& cfg, Window* parent = 0, bool showErr = true)
- static ClientToggle getBoolOpt (const String& name)
- static inline void setLogicsTick ()
- static void appendEscape (String& buf, ObjList& list, char sep = ',', bool force = false)
- static ObjList* splitUnescape (const String& buf, char sep = ',', bool emptyOk = false)
- static void removeChars (String& buf, const char* chars)
- static void fixPhoneNumber (String& number, const char* chars = 0)
- static bool addTrayIcon (const String& wndName, int prio, NamedList* params)
- static bool removeTrayIcon (const String& wndName, const String& name)
- static bool updateTrayIcon (const String& wndName)
- static void generateGuid (String& buf, const String& extra = String::empty())
- static void plain2html (String& buf, bool spaceEol = false)

#### Public Members

- static Configuration s_settings
- static Configuration s_actions
- static Configuration s_accounts
- static Configuration s_contacts
- static Configuration s_providers
- static Configuration s_history
- static Configuration s_calltoHistory
- static Regexp s_notSelected
- static Regexp s_guidRegexp
- static String s_skinPath
- static String s_soundPath
- static String s_ringInName
- static String s_ringOutName
- static String s_statusWidget
- static String s_debugWidget
- static String s_toggles[OptCount]
- static int s_maxConfPeers
- static bool s_engineStarted

#### Protected Methods

- virtual ClientLogic* createDefaultLogic ()
- virtual bool createWindow (const String& name, const String& alias = String::empty())
- virtual void loadWindows (const char* file = 0)
- virtual void initWindows ()
- virtual void initClient ()
- virtual void exitClient ()
- virtual bool isUIThread ()
- inline bool needProxy () const
- bool driverLockLoop ()

#### Protected Static Methods

- static bool driverLock (long maxwait = 0)
- static void driverUnlock ()

#### Protected Members

- static bool s_exiting
- ObjList m_windows
- bool m_initialized
- int m_line
- bool m_oneThread
- bool m_toggles[OptCount]
- ObjList m_relays
- ClientLogic* m_defaultLogic
- static Client* s_client
- static int s_changing
- static ObjList s_logics
- static bool s_idleLogicsTick
- Thread* m_clientThread

## Detailed Description

Singleton class that holds the User Interface's main methods

enum MsgID { CallCdr = 0, UiAction, UserLogin, UserNotify, ResourceNotify, ResourceSubscribe, ClientChanUpdate, UserRoster, ContactInfo, ChanNotify, MucRoom, MsgExecute, EngineStart, TransferNotify, UserData, MsgIdCount }

### MsgID

Message relays installed by this receiver.

enum ClientToggle { OptMultiLines = 0, OptAutoAnswer, OptRingIn, OptRingOut, OptActivateLastOutCall, OptActivateLastInCall, OptActivateCallOnSelect, OptKeypadVisible, OptOpenIncomingUrl, OptAddAccountOnStartup, OptDockedChat, OptDestroyChat, OptNotifyChatState, OptShowEmptyChat, OptSendEmptyChat, OptCount }

### ClientToggle

Client boolean options mapped to UI toggles

enum TrayIconType { TrayIconMain = 0, TrayIconInfo = 1000, TrayIconIncomingChat = 3000, TrayIconNotification = 5000, TrayIconIncomingCall = 10000, }

### TrayIconType

Tray icon valuers used in stack

explicit Client (const char *name = 0)

### Client

Constructor

Parameters:

name | The client's name

~Client ()

### ~Client

[virtual]

Destructor

bool startup ()

### startup

[virtual]

Start up the client thread

Returns: True if the client thread is started, false otherwise

void run ()

### run

[virtual]

Run the client's main loop

void cleanup ()

### cleanup

[virtual]

Cleanup when thread terminates

void main ()

### main

[pure virtual]

Execute the client

void lock ()

### lock

[pure virtual]

Lock the client

void unlock ()

### unlock

[pure virtual]

Unlock the client

inline void lockOther ()

### lockOther

Lock the client only if we are using more then 1 thread

inline void unlockOther ()

### unlockOther

Unlock the client only if we are using more then 1 thread

inline void setThread (Thread* th)

### setThread

Set the client's thread

Parameters:

th | The thread on which the client will run on

void allHidden ()

### allHidden

[pure virtual]

Handle all windows closed event from UI

void loadUI (const char* file = 0, bool init = true)

### loadUI

Load windows and optionally (re)initialize the client's options.

Parameters:

file | The resource file describing the windows. Set to 0 to use the default one
init | True to (re)initialize the client

void quit ()

### quit

[pure virtual]

Terminate application

bool openUrlSafe (const String& url)

### openUrlSafe

Open an URL (link) in the client's thread

Parameters:

url | The URL to open

Returns: True on success

bool openUrl (const String& url)

### openUrl

[pure virtual]

Open an URL (link)

Parameters:

url | The URL to open

Returns: True on success

bool received (Message& msg, int id)

### received

[virtual]

Process a received message. Check for a logic to process it

Parameters:

msg | Received message
id | Message id

Returns: True if a logic processed the message (stop dispatching it)

Reimplemented from MessageReceiver.

bool createWindowSafe (const String& name, const String& alias = String::empty())

### createWindowSafe

[virtual]

Create a window with a given name

Parameters:

name | The window's name
alias | Window name alias after succesfully loaded. Set to empty string to use the given name

Returns: True on success

bool createDialog (const String& name, Window* parent, const String& title, const String& alias = String::empty(), const NamedList* params = 0)

### createDialog

[virtual]

Create a modal dialog owned by a given window

Parameters:

name | Dialog name (resource config section)
parent | Parent window
title | Dialog title
alias | Optional dialog alias (used as dialog object name)
params | Optional dialog parameters

Returns: True on success

bool createObject (void** dest, const String& type, const char* name, NamedList* params = 0)

### createObject

[virtual]

Ask to an UI factory to create an object in the UI's thread

Parameters:

dest | Destination to be filled with the newly create object's address
type | Object's type
name | Object's name
params | Optional object parameters

Returns: True on success

bool closeWindow (const String& name, bool hide = true)

### closeWindow

[virtual]

Hide/destroy a window with a given name

Parameters:

name | The window's name
hide | True to hide, false to close

Returns: True on success

bool closeDialog (const String& name, Window* wnd, Window* skip = 0)

### closeDialog

[virtual]

Destroy a modal dialog

Parameters:

name | Dialog name
wnd | Window owning the dialog
skip | Optional window to skip if wnd is null

Returns: True on success

bool debugHook (bool active)

### debugHook

[virtual]

Install/uninstall a debugger output hook

Parameters:

active | True to install, false to uninstall the hook

Returns: True on success

bool addToLog (const String& text)

### addToLog

[virtual]

Add a log line

Parameters:

text | Text to add

Returns: True on success

bool setStatus (const String& text, Window* wnd = 0)

### setStatus

[virtual]

Set the status text

Parameters:

text | Status text
wnd | Optional window owning the status control

Returns: True on success

bool setStatusLocked (const String& text, Window* wnd = 0)

### setStatusLocked

Set the status text safely

Parameters:

text | Status text
wnd | Optional window owning the status control

Returns: True on success

bool setParams (const NamedList* params, Window* wnd = 0, Window* skip = 0)

### setParams

Set multiple window parameters

Parameters:

params | The parameter list
wnd | Optional window whose params are to be set
skip | Optional window to skip if wnd is 0

Returns: True on success

bool action (Window* wnd, const String& name, NamedList* params = 0)

### action

[virtual]

Handle actions from user interface. Enqueue an ui.event message if the action is not handled by a client logic

Parameters:

wnd | The window in which the user did something
name | The action's name
params | Optional action parameters

Returns: True if the action was handled by a client logic

bool toggle (Window* wnd, const String& name, bool active)

### toggle

[virtual]

Handle actions from checkable widgets. Enqueue an ui.event message if the action is not handled by a client logic

Parameters:

wnd | The window in which the user did something
name | The object's name
active | Object's state

Returns: True if the action was handled by a client logic

bool select (Window* wnd, const String& name, const String& item, const String& text = String::empty())

### select

[virtual]

Handle 'select' actions from user interface. Enqueue an ui.event message if the action is not handled by a client logic

Parameters:

wnd | The window in which the user selected the object
name | The action's name
item | Item identifying the selection
text | Selection's text

Returns: True if the action was handled by a client logic

inline bool oneThread ()

### oneThread

[const]

Check if the client is using more then 1 thread

Returns: True if the client is using more then 1 thread

inline int line ()

### line

[const]

Get the currently selected line

Returns: The selected line

void line (int newLine)

### line

Set the selected line

Parameters:

newLine | The selected line

bool hasElement (const String& name, Window* wnd = 0, Window* skip = 0)

### hasElement

bool setActive (const String& name, bool active, Window* wnd = 0, Window* skip = 0)

### setActive

bool setFocus (const String& name, bool select = false, Window* wnd = 0, Window* skip = 0)

### setFocus

bool setShow (const String& name, bool visible, Window* wnd = 0, Window* skip = 0)

### setShow

bool setText (const String& name, const String& text, bool richText = false, Window* wnd = 0, Window* skip = 0)

### setText

bool setCheck (const String& name, bool checked, Window* wnd = 0, Window* skip = 0)

### setCheck

bool setSelect (const String& name, const String& item, Window* wnd = 0, Window* skip = 0)

### setSelect

bool setUrgent (const String& name, bool urgent, Window* wnd = 0, Window* skip = 0)

### setUrgent

bool hasOption (const String& name, const String& item, Window* wnd = 0, Window* skip = 0)

### hasOption

bool getOptions (const String& name, NamedList* items, Window* wnd = 0, Window* skip = 0)

### getOptions

[virtual]

Get an element's items

Parameters:

name | Name of the element to search for
items | List to fill with element's items
wnd | Optional window owning the element
skip | Optional window to skip when searching for the element

Returns: True if the element exists

bool addOption (const String& name, const String& item, bool atStart, const String& text = String::empty(), Window* wnd = 0, Window* skip = 0)

### addOption

bool delOption (const String& name, const String& item, Window* wnd = 0, Window* skip = 0)

### delOption

bool addLines (const String& name, const NamedList* lines, unsigned int max, bool atStart = false, Window* wnd = 0, Window* skip = 0)

### addLines

Append or insert text lines to a widget

Parameters:

name | The name of the widget
lines | List containing the lines
max | The maximum number of lines allowed to be displayed. Set to 0 to ignore
atStart | True to insert, false to append
wnd | Optional window owning the widget
skip | Optional window to skip if wnd is 0

Returns: True on success

bool addTableRow (const String& name, const String& item, const NamedList* data = 0, bool atStart = false, Window* wnd = 0, Window* skip = 0)

### addTableRow

bool setMultipleRows (const String& name, const NamedList& data, const String& prefix = String::empty(), Window* wnd = 0, Window* skip = 0)

### setMultipleRows

Append or update several table rows at once

Parameters:

name | Name of the element
data | Parameters to initialize the rows with
prefix | Prefix to match (and remove) in parameter names
wnd | Optional window owning the element
skip | Optional window to skip if wnd is 0

Returns: True if all the operations were successfull

bool insertTableRow (const String& name, const String& item, const String& before, const NamedList* data = 0, Window* wnd = 0, Window* skip = 0)

### insertTableRow

Insert a row into a table owned by this window

Parameters:

name | Name of the element
item | Name of the item to insert
before | Name of the item to insert before
data | Table's columns to set
wnd | Optional window owning the element
skip | Optional window to skip if wnd is 0

Returns: True if the operation was successfull

bool delTableRow (const String& name, const String& item, Window* wnd = 0, Window* skip = 0)

### delTableRow

bool setTableRow (const String& name, const String& item, const NamedList* data, Window* wnd = 0, Window* skip = 0)

### setTableRow

bool getTableRow (const String& name, const String& item, NamedList* data = 0, Window* wnd = 0, Window* skip = 0)

### getTableRow

bool clearTable (const String& name, Window* wnd = 0, Window* skip = 0)

### clearTable

bool updateTableRow (const String& name, const String& item, const NamedList* data = 0, bool atStart = false, Window* wnd = 0, Window* skip = 0)

### updateTableRow

Set a table row or add a new one if not found

Parameters:

name | Name of the element
item | Table item to set/add
data | Optional list of parameters used to set row data
atStart | True to add item at start, false to add them to the end
wnd | Optional window owning the element
skip | Optional window to skip if wnd is 0

Returns: True if the operation was successfull

bool updateTableRows (const String& name, const NamedList* data, bool atStart = false, Window* wnd = 0, Window* skip = 0)

### updateTableRows

Add or set one or more table row(s). Screen update is locked while changing the table. Each data list element is a NamedPointer carrying a NamedList with item parameters. The name of an element is the item to update. Set element's value to boolean value 'true' to add a new item if not found or 'false' to set an existing one. Set it to empty string to delete the item

Parameters:

name | Name of the table
data | The list of items to add/set/delete
atStart | True to add new items at start, false to add them to the end
wnd | Optional window owning the element
skip | Optional window to skip if wnd is 0

Returns: True if the operation was successfull

bool getText (const String& name, String& text, bool richText = false, Window* wnd = 0, Window* skip = 0)

### getText

Get an element's text

Parameters:

name | Name of the element
text | The destination string
richText | True to get the element's roch text if supported.
wnd | Optional window owning the element
skip | Optional window to skip if wnd is 0

Returns: True if the operation was successfull

bool getCheck (const String& name, bool& checked, Window* wnd = 0, Window* skip = 0)

### getCheck

bool getSelect (const String& name, String& item, Window* wnd = 0, Window* skip = 0)

### getSelect

bool buildMenu (const NamedList& params, Window* wnd = 0, Window* skip = 0)

### buildMenu

Build a menu from a list of parameters and add it to a target.

Parameters:

params

Menu build parameters (list name is the menu name). Each menu item is indicated by a parameter item:[item_name]=[display_text]. A separator will be added if 'item_name' is empty. A new item will be created if 'display_text' is not empty. Set 'display_text' to empty string to use an existing item. Item image can be set by an 'image:item_name' parameter. If the item parameter is a NamedPointer carrying a NamedList a submenu will be created. Menu item properties can be set from parameters with format property:item_name:property_name=value. The following parameters can be set: - title: menu display text (defaults to menu name) - owner: optional menu owner (the window building the menu is assumed to be the owner if this parameter is empty) - target: optional menu target (defaults to owner) - before: optional item to insert before if the target is a menu container (another menu or a menu bar) - before_separator: check if a separator already exists before the item 'before' and insert the menu before the separator

wnd | Optional target window
skip | Optional window to skip if wnd is 0

Returns: True on success

bool removeMenu (const NamedList& params, Window* wnd = 0, Window* skip = 0)

### removeMenu

Remove a menu (from UI and memory)

Parameters:

params | Menu remove parameters. The following parameters can be set: - owner: optional menu owner (the window building the menu is assumed to be the owner if this parameter is empty)
wnd | Optional target window
skip | Optional window to skip if wnd is 0

Returns: True on success

bool setImage (const String& name, const String& image, Window* wnd = 0, Window* skip = 0)

### setImage

[virtual]

Set an element's image

Parameters:

name | Name of the element
image | Image to set
wnd | Optional target window
skip | Optional window to skip if wnd is 0

Returns: True on success

bool setImageFit (const String& name, const String& image, Window* wnd = 0, Window* skip = 0)

### setImageFit

[virtual]

Set an element's image. Request to fit the image in element

Parameters:

name | Name of the element
image | Image to set
wnd | Optional target window
skip | Optional window to skip if wnd is 0

Returns: True on success

bool setProperty (const String& name, const String& item, const String& value, Window* wnd = 0, Window* skip = 0)

### setProperty

[virtual]

Set a property

Parameters:

name | Name of the element
item | Property's name
value | Property's value
wnd | Optional target window
skip | Optional window to skip if wnd is 0

Returns: True on success

bool getProperty (const String& name, const String& item, String& value, Window* wnd = 0, Window* skip = 0)

### getProperty

[virtual]

Get a property

Parameters:

name | Name of the element
item | Property's name
value | Property's value
wnd | Optional target window
skip | Optional window to skip if wnd is 0

Returns: True on success

void moveRelated (const Window* wnd, int dx, int dy)

### moveRelated

inline bool initialized ()

### initialized

[const]

inline Client* self ()

### self

[static]

inline void setSelf (Client* client)

### setSelf

[static]

inline bool valid ()

### valid

[static]

Check if the client object still exists and the client or engine is not exiting

Returns: True if the client is valid (running) or the method is called from client's thread

bool isClientMsg (Message& msg)

### isClientMsg

[static]

Check if a message is sent by the client

Parameters:

msg | The message to check

Returns: True if the message has a 'module' parameter with the client driver's name

inline bool changing ()

### changing

[static]

Window* getWindow (const String& name)

### getWindow

[static]

bool setVisible (const String& name, bool show = true, bool activate = false)

### setVisible

[static]

bool getVisible (const String& name)

### getVisible

[static]

bool openPopup (const String& name, const NamedList* params = 0, const Window* parent = 0)

### openPopup

[static]

bool openMessage (const char* text, const Window* parent = 0, const char* context = 0)

### openMessage

[static]

bool openConfirm (const char* text, const Window* parent = 0, const char* context = 0)

### openConfirm

[static]

ObjList* listWindows ()

### listWindows

[static]

void idleActions ()

### idleActions

bool postpone (const Message& msg, int id, bool copyUserData = false)

### postpone

Postpone a copy of a message to be dispatched from the UI thread

Parameters:

msg | Message to be postponed
id | Identifier of the message to be used on dispatch
copyUserData | Copy source user data in postponed message

Returns: True if the UI thread was not current so the message was postponed

bool chooseFile (Window* parent, NamedList& params)

### chooseFile

[virtual]

Show a file open/save dialog window This method isn't using the proxy thread since it's usually called on UI action

Parameters:

parent | Dialog window's parent
params | Dialog window's params. Parameters that can be specified include 'caption', 'dir', 'filters', 'selectedfilter', 'confirmoverwrite', 'choosedir'.

Returns: True on success

bool setClientParam (const String& param, const String& value, bool save, bool update)

### setClientParam

[virtual]

Request to a logic to set a client's parameter. Save the settings file and/or update interface

Parameters:

param | Parameter's name
value | The value of the parameter
save | True to save the configuration file
update | True to update the interface

Returns: True on success, false if the parameter doesn't exist, the value is incorrect or failed to save the file

bool backspace (const String& name, Window* wnd = 0)

### backspace

[virtual]

Remove the last character of the given widget

Parameters:

name | The widget (it might be the window itself)
wnd | Optional window containing the widget that triggered the action

Returns: True on success

void installRelay (const char* name, int id, int prio)

### installRelay

Create and install a message relay owned by this client. The new relay will be unistalled when the client is terminated

Parameters:

name | Message name
id | Relay id
prio | Message priority

bool callRouting (Message& msg)

### callRouting

[virtual]

Call routing handler called by the driver

Parameters:

msg | The call.route message

bool imRouting (Message& msg)

### imRouting

[virtual]

IM message routing handler called by the driver

Parameters:

msg | The im.route message

bool imExecute (Message& msg)

### imExecute

[virtual]

Process an IM message

Parameters:

msg | The im.execute of chan.text message

bool buildIncomingChannel (Message& msg, const String& dest)

### buildIncomingChannel

[virtual]

Build an incoming channel. Answer it if succesfully connected and auto answer is set. Reject it if multiline is false and the driver is busy. Set the active one if requested by config and there is no active channel. Start the ringer if there is no active channel

Parameters:

msg | The call.execute message
dest | The destination (target)

Returns: True if a channel was created and connected

bool buildOutgoingChannel (NamedList& params)

### buildOutgoingChannel

[virtual]

Build an outgoing channel

Parameters:

params | Call parameters

Returns: True if a channel was created its router started

bool callIncoming (Message& msg, const String& dest)

### callIncoming

Call execute handler called by the driver. Ask the logics to create the channel

Parameters:

msg | The call.execute message
dest | The destination (target)

Returns: True if a channel was created and connected

void callAnswer (const String& id, bool setActive = true)

### callAnswer

Answer an incoming call

Parameters:

id | The accepted channel's id
setActive | True to activate the answered channel

Returns: True on success

void callTerminate (const String& id, const char* reason = 0, const char* error = 0)

### callTerminate

Terminate a call

Parameters:

id | The channel's id
reason | Optional termination reason
error | Optional termination error

Returns: True on success

ClientChannel* getActiveChannel ()

### getActiveChannel

Get the active channel if any

Returns: Referenced pointer to the active channel or 0

bool ringer (bool in, bool on)

### ringer

[virtual]

Start/stop ringer. The ringer is started only if not disabled

Parameters:

in | True if the request is for the incoming call alert, false if it is for the outgoing call ringing alert
on | True to start, false to stop the sound

Returns: True on success

bool createSound (const char* name, const char* file, const char* device = 0)

### createSound

[virtual]

Create a sound object. Append it to the global list

Parameters:

name | The name of sound object
file | The file to play (should contain the whole path and the file name)
device | Optional device used to play the file. Set to 0 to use the default one

Returns: True on success, false if a sound with the given name already exists

bool emitDigits (const char* digits, const String& id = String::empty())

### emitDigits

Send digits on selected channel

Parameters:

digits | The digits to send
id | The channel id. Use the active one if empty

Returns: True on success

inline bool emitDigit (char digit, const String& id = String::empty())

### emitDigit

Send a digit on selected channel

Parameters:

digit | The digit to send
id | The channel id. Use the active one if empty

Returns: True on success

inline bool getBoolOpt (ClientToggle toggle)

### getBoolOpt

Get a boolean option of this client

Parameters:

toggle | Options's id to retrieve

Returns: True on success

bool setBoolOpt (ClientToggle toggle, bool value, bool updateUi = false)

### setBoolOpt

Set a boolean option of this client

Parameters:

toggle | Options's id to set
value | Value to set
updateUi | True to update UI

Returns: True if the option's value changed

bool formatDateTime (String& dest, unsigned int secs, const char* format, bool utc = false)

### formatDateTime

[virtual]

Build a date/time string from UTC time

Parameters:

dest | Destination string
secs | Seconds since EPOCH
format | Format string used to build the destination
utc | True to build UTC time instead of local time

Returns: True on success

inline bool exiting ()

### exiting

[static]

Check if the client is exiting

Returns: True if the client therad is exiting

bool getActive (const String& name)

### getActive

[static]

Retrieve the active state of a window

Parameters:

name | Window name

Returns: True if the window is found and it's active

Message* buildMessage (const char* msg, const String& account, const char* oper = 0)

### buildMessage

[static]

Build a message to be sent by the client. Add module, line and operation parameters

Parameters:

msg | Message name
account | The account sending the message
oper | Optional operation parameter

Returns: Message pointer

Message* buildNotify (bool online, const String& account, const ClientResource* from = 0)

### buildNotify

[static]

Build a resource.notify message

Parameters:

online | True to build an 'online' message, false to build an 'offline' one
account | The account sending the message
from | Optional resource to add to message

Returns: Message pointer

Message* buildSubscribe (bool request, bool ok, const String& account, const String& contact, const char* proto = 0)

### buildSubscribe

[static]

Build a resource.subscribe or resource.notify message to request a subscription or respond to a request

Parameters:

request | True to build a request, false to build a response
ok | True to build a subscribe(d) message, false to build an unsubscribe(d) message
account | The account to use for the message
contact | The destination contact
proto | Optional protocol

Returns: Valid Message pointer

Message* buildUserRoster (bool update, const String& account, const String& contact, const char* proto = 0)

### buildUserRoster

[static]

Build an user.roster message

Parameters:

update | True to build an update, false to build a delete request
account | The account to use for the message
contact | The contact to update or delete
proto | Optional protocol

Returns: Valid Message pointer

bool addLogic (ClientLogic* logic)

### addLogic

[static]

Add a logic to the list. The added object is not owned by the client

Parameters:

logic | Pointer to the logic to add

Returns: True on success. False if the pointer is 0 or already added

void removeLogic (ClientLogic* logic)

### removeLogic

[static]

Remove a logic from the list without destroying it

Parameters:

logic | Pointer to the logic to remove

ClientLogic* findLogic (const String& name)

### findLogic

[static]

Convenience method to retrieve a logic

Parameters:

name | The logic's name

Returns: ClientLogic pointer or 0

Message* eventMessage (const String& event, Window* wnd = 0, const char* name = 0, NamedList* params = 0)

### eventMessage

[static]

Build an 'ui.event' message

Parameters:

event | Event's name
wnd | Optional window to add to message
name | Optional 'name' parameter value
params | Other optional parameters to be added to the message

Returns: Valid Message pointer

bool save (Configuration& cfg, Window* parent = 0, bool showErr = true)

### save

[static]

Save a configuration file. Call openMessage() on failure

Parameters:

cfg | The configuration file to save
parent | The parent of the error window if needded
showErr | True to open a message popup on failure

Returns: True on success

ClientToggle getBoolOpt (const String& name)

### getBoolOpt

[static]

Check if a string names a client's boolean option

Parameters:

name | String to check

Returns: Valid client option index or OptCount if not found

inline void setLogicsTick ()

### setLogicsTick

[static]

Set the flag indicating that the client should tick the logics

void appendEscape (String& buf, ObjList& list, char sep = ',', bool force = false)

### appendEscape

[static]

Append URI escaped String items to a String buffer

Parameters:

buf | Destination string
list | Source list
sep | Destination list separator. It will be escaped in each added string
force | True to allow appending empty strings

ObjList* splitUnescape (const String& buf, char sep = ',', bool emptyOk = false)

### splitUnescape

[static]

Splits a string at a delimiter character. URI unescape each string in result

Parameters:

buf | Source string
sep | Character where to split the string. It will be unescaped in each string
emptyOk | True if empty strings should be inserted in list

Returns: A newly allocated list of strings, must be deleted after use

void removeChars (String& buf, const char* chars)

### removeChars

[static]

Remove characters from a given string

Parameters:

buf | Source string
chars | Characters to remove from input string

void fixPhoneNumber (String& number, const char* chars = 0)

### fixPhoneNumber

[static]

Fix a phone number. Remove extra '+' from begining. Remove requested characters. Adding '+' to characters to remove won't remove the plus sign from the begining. Clear the number if a non digit char is found

Parameters:

number | Phone number to fix
chars | Optional characters to remove from number

bool addTrayIcon (const String& wndName, int prio, NamedList* params)

### addTrayIcon

[static]

Add a tray icon to a window's stack. Update it if already there. Show it if it's the first one and the client is started. This method must be called from client's thread

Parameters:

wndName | The window owning the icon
prio | Tray icon priority. The list is kept in ascending order
params | Tray icon parameters. It will be consumed

Returns: True on success

bool removeTrayIcon (const String& wndName, const String& name)

### removeTrayIcon

[static]

Remove a tray icon from a window's stack. Show the next one if it's the first This method must be called from client's thread

Parameters:

wndName | The window owning the icon
name | Tray icon name

Returns: True on success

bool updateTrayIcon (const String& wndName)

### updateTrayIcon

[static]

Update the first tray icon in a window's stack. Remove any existing icon the the stack is empty This method must be called from client's thread

Parameters:

wndName | The window owning the icon

Returns: True on success

void generateGuid (String& buf, const String& extra = String::empty())

### generateGuid

[static]

Generate a GUID string in the format 8*HEX-4*HEX-4*HEX-4*HEX-12*HEX

Parameters:

buf | Destination string
extra | Optional string whose hash will be inserted in the GUID

void plain2html (String& buf, bool spaceEol = false)

### plain2html

[static]

Replace plain text chars with HTML escape or markup

Parameters:

buf | Destination string
spaceEol | True to replace end of line with space instead of html markup

static Configuration s_settings

### s_settings

static Configuration s_actions

### s_actions

static Configuration s_accounts

### s_accounts

static Configuration s_contacts

### s_contacts

static Configuration s_providers

### s_providers

static Configuration s_history

### s_history

static Configuration s_calltoHistory

### s_calltoHistory

static Regexp s_notSelected

### s_notSelected

static Regexp s_guidRegexp

### s_guidRegexp

static String s_skinPath

### s_skinPath

static String s_soundPath

### s_soundPath

static String s_ringInName

### s_ringInName

static String s_ringOutName

### s_ringOutName

static String s_statusWidget

### s_statusWidget

static String s_debugWidget

### s_debugWidget

static String s_toggles[OptCount]

### s_toggles[OptCount]

static int s_maxConfPeers

### s_maxConfPeers

static bool s_engineStarted

### s_engineStarted

ClientLogic* createDefaultLogic ()

### createDefaultLogic

[protected virtual]

Create the default logic The default implementation creates a DefaultLogic object

Returns: ClientLogic pointer or 0

bool createWindow (const String& name, const String& alias = String::empty())

### createWindow

[protected pure virtual]

void loadWindows (const char* file = 0)

### loadWindows

[protected pure virtual]

void initWindows ()

### initWindows

[protected virtual]

void initClient ()

### initClient

[protected virtual]

void exitClient ()

### exitClient

[protected virtual]

bool isUIThread ()

### isUIThread

[protected virtual]

inline bool needProxy ()

### needProxy

[protected const]

bool driverLockLoop ()

### driverLockLoop

[protected]

bool driverLock (long maxwait = 0)

### driverLock

[protected static]

void driverUnlock ()

### driverUnlock

[protected static]

static bool s_exiting

### s_exiting

[protected]

ObjList m_windows

### m_windows

[protected]

bool m_initialized

### m_initialized

[protected]

int m_line

### m_line

[protected]

bool m_oneThread

### m_oneThread

[protected]

bool m_toggles[OptCount]

### m_toggles[OptCount]

[protected]

ObjList m_relays

### m_relays

[protected]

ClientLogic* m_defaultLogic

### m_defaultLogic

[protected]

static Client* s_client

### s_client

[protected]

static int s_changing

### s_changing

[protected]

static ObjList s_logics

### s_logics

[protected]

static bool s_idleLogicsTick

### s_idleLogicsTick

[protected]

Thread* m_clientThread

### m_clientThread

[protected]

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