class ClientLogic

# class ClientLogic | Base class for all client logics. More...
Full name | `TelEngine::ClientLogic`
Definition | `#include <yatecbase.h>`
Inherits | TelEngine::GenObject [public ]
Inherited by | DefaultLogic
List of all Methods
Annotated List
Files
Globals
Hierarchy
Index

#### Public Methods

- virtual ~ClientLogic ()
- inline const String& name () const
- inline int priority () const
- virtual const String& toString () const
- bool setParams (const NamedList& params)
- 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())
- virtual bool select (Window* wnd, const String& name, const NamedList& items)
- virtual bool setClientParam (const String& param, const String& value, bool save, bool update)
- virtual bool imIncoming (Message& msg)
- virtual bool callIncoming (Message& msg, const String& dest)
- virtual bool validateCall (NamedList& params, Window* wnd = 0)
- virtual bool callStart (NamedList& params, Window* wnd = 0, const String& cmd = String::empty())
- virtual bool line (const String& name, Window* wnd = 0)
- virtual bool display (NamedList& params, bool widget, Window* wnd = 0)
- virtual bool backspace (const String& name, Window* wnd = 0)
- virtual bool command (const String& name, Window* wnd = 0)
- virtual bool debug (const String& name, bool active, Window* wnd = 0)
- virtual bool editAccount (bool newAcc, NamedList* params, Window* wnd = 0)
- virtual bool acceptAccount (NamedList* params, Window* wnd = 0)
- virtual bool delAccount (const String& account, Window* wnd = 0)
- virtual bool updateAccount (const NamedList& account, bool login, bool save)
- virtual bool loginAccount (const NamedList& account, bool login)
- virtual bool updateContact (const NamedList& contact, bool save, bool update)
- virtual bool acceptContact (NamedList* params, Window* wnd = 0)
- virtual bool editContact (bool newCont, NamedList* params = 0, Window* wnd = 0)
- virtual bool delContact (const String& contact, Window* wnd = 0)
- virtual bool callContact (NamedList* params = 0, Window* wnd = 0)
- virtual bool updateProviders (const NamedList& provider, bool save, bool update)
- virtual bool callLogUpdate (const NamedList& params, bool save, bool update)
- virtual bool callLogDelete (const String& billid)
- virtual bool callLogClear (const String& table, const String& direction)
- virtual bool callLogCall (const String& billid, Window* wnd = 0)
- virtual bool callLogCreateContact (const String& billid)
- virtual bool help (const String& action, Window* wnd)
- virtual bool calltoLoaded ()
- virtual void loadedWindows ()
- virtual void initializedWindows ()
- virtual bool initializedClient ()
- virtual void exitingClient ()
- virtual bool handleUiAction (Message& msg, bool& stopLogic)
- virtual bool handleCallCdr (Message& msg, bool& stopLogic)
- virtual bool handleUserLogin (Message& msg, bool& stopLogic)
- virtual bool handleUserNotify (Message& msg, bool& stopLogic)
- virtual bool handleUserRoster (Message& msg, bool& stopLogic)
- virtual bool handleResourceNotify (Message& msg, bool& stopLogic)
- virtual bool handleResourceSubscribe (Message& msg, bool& stopLogic)
- virtual bool handleClientChanUpdate (Message& msg, bool& stopLogic)
- virtual bool handleContactInfo (Message& msg, bool& stopLogic)
- virtual bool defaultMsgHandler (Message& msg, int id, bool& stopLogic)
- virtual void engineStart (Message& msg)
- virtual bool addDurationUpdate (DurationUpdate* duration, bool autoDelete = false)
- virtual bool removeDurationUpdate (const String& name, bool delObj = false)
- virtual bool removeDurationUpdate (DurationUpdate* duration, bool delObj = false)
- virtual DurationUpdate* findDurationUpdate (const String& name, bool ref = true)
- virtual void clearDurationUpdate ()
- virtual void destruct ()

#### Public Static Methods

- static const String& cdrRemoteParty (const NamedList& params, bool outgoing)
- static const String& cdrRemoteParty (const NamedList& params)
- static void initStaticData ()
- static bool saveContact (Configuration& cfg, ClientContact* c, bool save = true)
- static bool clearContact (Configuration& cfg, ClientContact* c, bool save = true)

#### Public Members

- static ObjList s_accOptions
- static const char* s_provParams[]
- static ObjList s_protocols
- static Mutex s_protocolsMutex

#### Protected Methods

- ClientLogic (const char* name, int priority)
- virtual void idleTimerTick (Time& time)

#### Protected Members

- ObjList m_durationUpdate
- Mutex m_durationMutex

## Detailed Description

This class implements the logic behind different actions in the client. It specifies the way the graphical interface of the client will behave in different circumstances.

~ClientLogic () | ### ~ClientLogic

[virtual]

Destructor. Remove itself from the client's list

inline const String& name () | ### name

[const]

Get the name of this logic

Returns: This logic's name

inline int priority () | ### priority

[const]

Get the priority of this logic

Returns: This logic's priority

const String& toString () | ### toString

[const virtual]

Function that returns the name of the logic

Returns: The name of this client logic

Reimplemented from GenObject.

bool setParams (const NamedList& params) | ### setParams

Process a request to set client parameters

Parameters:

params | The parameter list

Returns: True on success

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

[virtual]

Handle actions from user interface

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

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

[virtual]

Handle actions from checkable widgets

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

Parameters:

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

Returns: True if the action was handled

bool select (Window* wnd, const String& name, const NamedList& items) | ### select

[virtual]

Handle 'select' with multiple items actions from user interface

Parameters:

wnd | The window in which the user did something
name | The object's name
items | List of selected items

Returns: True if the action was handled

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

[virtual]

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

bool imIncoming (Message& msg) | ### imIncoming

[virtual]

Process an IM message

Parameters:

msg | The im.execute or chan.text message

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

[virtual]

Call execute handler called by the client. The default logic ask the client to build an incoming channel

Parameters:

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

Returns: True if a channel was created and connected

bool validateCall (NamedList& params, Window* wnd = 0) | ### validateCall

[virtual]

Check presence of all necessary data to make a call

Parameters:

params | List of call parameters
wnd | Optional window containing the widget that triggered the action

Returns: True on success

bool callStart (NamedList& params, Window* wnd = 0, const String& cmd = String::empty()) | ### callStart

[virtual]

Called when the user trigger a call start action The default logic fill the parameter list and ask the client to create an outgoing channel

Parameters:

params | List of call parameters
wnd | Optional window containing the widget that triggered the action
cmd | Optional command (widget name)

Returns: True on success

bool line (const String& name, Window* wnd = 0) | ### line

[virtual]

Called when the user selected a line

Parameters:

name | The line name
wnd | Optional window containing the widget that triggered the action

Returns: True on success

bool display (NamedList& params, bool widget, Window* wnd = 0) | ### display

[virtual]

Show/hide widget(s) or window(s) on 'display'/'show' action.

Parameters:

params | Widget(s) or window(s) to show/hide
widget | True if the operation indicates widget(s), false otherwise
wnd | Optional window owning the widget(s) to show or hide

Returns: False if failed to show/hide all widgets/windows

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

[virtual]

Erase the last digit from the given widget and set focus on it

Parameters:

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

Returns: True on success

bool command (const String& name, Window* wnd = 0) | ### command

[virtual]

Enqueue an engine.command message

Parameters:

name | The command line
wnd | Optional window containing the widget that triggered the action

Returns: True on success

bool debug (const String& name, bool active, Window* wnd = 0) | ### debug

[virtual]

Enqueue an engine.debug message.

Parameters:

name | The debug action content (following the prefix). The format of this parameter must be 'module:active-true:active-false'. The line parameter of the message will be filled with 'active-true' if active is true and with 'active-false' if active is false
active | The widget's state
wnd | Optional window containing the widget that triggered the action

Returns: True on success

bool editAccount (bool newAcc, NamedList* params, Window* wnd = 0) | ### editAccount

[virtual]

Called when the user wants to add a new account or edit an existing one

Parameters:

newAcc | True to add a new account, false to edit an exisiting one
params | Initial parameters
wnd | Optional window containing the widget that triggered the action

Returns: True on success

bool acceptAccount (NamedList* params, Window* wnd = 0) | ### acceptAccount

[virtual]

Called when the user wants to save account data

Parameters:

params | Initial parameters
wnd | Optional window containing the widget that triggered the action

Returns: True on success

bool delAccount (const String& account, Window* wnd = 0) | ### delAccount

[virtual]

Called when the user wants to delete an existing account

Parameters:

account | The account's name. Set to empty to delete the current selection
wnd | Optional window containing the widget that triggered the action

Returns: True on success

bool updateAccount (const NamedList& account, bool login, bool save) | ### updateAccount

[virtual]

Add/set an account. Login if required

Parameters:

account | The account's parameters. The name of the list must be the account's name
login | True to login the account
save | True to save the accounts file. If true and file save fails the method will fail

Returns: True on success

bool loginAccount (const NamedList& account, bool login) | ### loginAccount

[virtual]

Login/logout an account

Parameters:

account | The account's parameters. The name of the list must be the account's name
login | True to login the account, false to logout

Returns: True on success

bool updateContact (const NamedList& contact, bool save, bool update) | ### updateContact

[virtual]

Add/set a contact

Parameters:

contact | The contact's parameters. The name of the list must be the contacts's id (name). If it starts with 'client/' this is a contact updated from server: it can't be changed
save | True to save data to contacts file
update | True to update the interface

Returns: True on success

bool acceptContact (NamedList* params, Window* wnd = 0) | ### acceptContact

[virtual]

Called when the user wants to save account data

Parameters:

params | Initial parameters
wnd | Optional window containing the widget that triggered the action

Returns: True on success

bool editContact (bool newCont, NamedList* params = 0, Window* wnd = 0) | ### editContact

[virtual]

Called when the user wants to add a new contact or edit an existing one

Parameters:

newCont | True to add a new contact, false to edit an existing one
params | Optional initial parameters
wnd | Optional window containing the widget that triggered the action

Returns: True on success

bool delContact (const String& contact, Window* wnd = 0) | ### delContact

[virtual]

Called when the user wants to delete an existing contact

Parameters:

contact | The contact's id. Set to empty to delete the current selection
wnd | Optional window containing the widget that triggered the action

Returns: True on success

bool callContact (NamedList* params = 0, Window* wnd = 0) | ### callContact

[virtual]

Called when the user wants to call an existing contact

Parameters:

params | Optional parameters
wnd | Optional window containing the widget that triggered the action

Returns: True on success

bool updateProviders (const NamedList& provider, bool save, bool update) | ### updateProviders

[virtual]

Add/set account providers data

Parameters:

provider | The provider's parameters. The name of the list must be the provider's id (name)
save | True to save data to providers file
update | True to update the interface

Returns: True on success

bool callLogUpdate (const NamedList& params, bool save, bool update) | ### callLogUpdate

[virtual]

Update the call log history

Parameters:

params | Call log data
save | True to save data to history file
update | True to update the interface

Returns: True

bool callLogDelete (const String& billid) | ### callLogDelete

[virtual]

Remove a call log item

Parameters:

billid | The bill id of the call

Returns: True on success

bool callLogClear (const String& table, const String& direction) | ### callLogClear

[virtual]

Clear the specified log and the entries from the history file and save the history file

Parameters:

table | Tebale to clear
direction | The call direction to clear (incoming,outgoing). Note that the direction is the value saved from call.cdr messages. If empty, all log entries will be cleared

Returns: True

bool callLogCall (const String& billid, Window* wnd = 0) | ### callLogCall

[virtual]

Make an outgoing call to a target picked from the call log

Parameters:

billid | The bill id of the call
wnd | Optional window starting the action

Returns: True on success (call initiated)

bool callLogCreateContact (const String& billid) | ### callLogCreateContact

[virtual]

Create a contact from a call log entry

Parameters:

billid | The bill id of the call

Returns: True on success (address book popup window was displayed)

bool help (const String& action, Window* wnd) | ### help

[virtual]

Process help related actions

Parameters:

action | The action's name
wnd | The window owning the control

Returns: True on success

bool calltoLoaded () | ### calltoLoaded

[virtual]

Called by the client after loaded the callto history file

Returns: True to tell the client to stop notifying other logics

void loadedWindows () | ### loadedWindows

[virtual]

Called by the client after loaded the windows

void initializedWindows () | ### initializedWindows

[virtual]

Called by the client after loaded and intialized the windows

bool initializedClient () | ### initializedClient

[virtual]

Called by the client after loaded and intialized the windows and loaded configuration files. The default logic update client settings

Returns: True to stop processing this notification

void exitingClient () | ### exitingClient

[virtual]

Called by the client before exiting. The default logic save client settings

bool handleUiAction (Message& msg, bool& stopLogic) | ### handleUiAction

[virtual]

Process ui.action message

Parameters:

msg | Received message
stopLogic | Set to true on exit to tell the client to stop asking other logics

Returns: True to stop further processing by the engine

bool handleCallCdr (Message& msg, bool& stopLogic) | ### handleCallCdr

[virtual]

Process call.cdr message

Parameters:

msg | Received message
stopLogic | Set to true on exit to tell the client to stop asking other logics

Returns: True to stop further processing by the engine

bool handleUserLogin (Message& msg, bool& stopLogic) | ### handleUserLogin

[virtual]

Process user.login message

Parameters:

msg | Received message
stopLogic | Set to true on exit to tell the client to stop asking other logics

Returns: True to stop further processing by the engine

bool handleUserNotify (Message& msg, bool& stopLogic) | ### handleUserNotify

[virtual]

Process user.notify message

Parameters:

msg | Received message
stopLogic | Set to true on exit to tell the client to stop asking other logics

Returns: True to stop further processing by the engine

bool handleUserRoster (Message& msg, bool& stopLogic) | ### handleUserRoster

[virtual]

Process user.roster message

Parameters:

msg | Received message
stopLogic | Set to true on exit to tell the client to stop asking other logics

Returns: True to stop further processing by the engine

bool handleResourceNotify (Message& msg, bool& stopLogic) | ### handleResourceNotify

[virtual]

Process resource.notify message

Parameters:

msg | Received message
stopLogic | Set to true on exit to tell the client to stop asking other logics

Returns: True to stop further processing by the engine

bool handleResourceSubscribe (Message& msg, bool& stopLogic) | ### handleResourceSubscribe

[virtual]

Process resource.subscribe message

Parameters:

msg | Received message
stopLogic | Set to true on exit to tell the client to stop asking other logics

Returns: True to stop further processing by the engine

bool handleClientChanUpdate (Message& msg, bool& stopLogic) | ### handleClientChanUpdate

[virtual]

Process clientchan.update message

Parameters:

msg | Received message
stopLogic | Set to true on exit to tell the client to stop asking other logics

Returns: True to stop further processing by the engine

bool handleContactInfo (Message& msg, bool& stopLogic) | ### handleContactInfo

[virtual]

Process contact.info message

Parameters:

msg | Received message
stopLogic | Set to true on exit to tell the client to stop asking other logics

Returns: True to stop further processing by the engine

bool defaultMsgHandler (Message& msg, int id, bool& stopLogic) | ### defaultMsgHandler

[virtual]

Default message processor called for id's not defined in client. Descendants may override it to process custom messages installed by them and relayed through the client

Parameters:

msg | Received message
id | Message id
stopLogic | Set to true on exit to tell the client to stop asking other logics

Returns: True to stop further processing by the engine

void engineStart (Message& msg) | ### engineStart

[virtual]

Engine start notification

Parameters:

msg | The engine.start message

bool addDurationUpdate (DurationUpdate* duration, bool autoDelete = false) | ### addDurationUpdate

[virtual]

Add a duration object to this client's list

Parameters:

duration | The object to add
autoDelete | True to delete the object when the list is cleared

Returns: True on success

bool removeDurationUpdate (const String& name, bool delObj = false) | ### removeDurationUpdate

[virtual]

Remove a duration object from list

Parameters:

name | The name of the object to remove
delObj | True to destroy the object, false to remove it

Returns: True on success

bool removeDurationUpdate (DurationUpdate* duration, bool delObj = false) | ### removeDurationUpdate

[virtual]

Remove a duration object from list

Parameters:

duration | The object to remove
delObj | True to destroy the object, false to remove it

Returns: True on success

DurationUpdate* findDurationUpdate (const String& name, bool ref = true) | ### findDurationUpdate

[virtual]

Find a duration update by its name

Parameters:

name | The name of the object to find
ref | True to increase its reference counter before returning

Returns: DurationUpdate pointer or 0

void clearDurationUpdate () | ### clearDurationUpdate

[virtual]

Remove all duration objects

void destruct () | ### destruct

[virtual]

Release memory. Remove from client's list

Reimplemented from GenObject.

const String& cdrRemoteParty (const NamedList& params, bool outgoing) | ### cdrRemoteParty

[static]

Retrieve the remote party from CDR parameters

Parameters:

params | CDR parameters
outgoing | True if the call was an outgoing one

Returns: The remote party (may be empty)

const String& cdrRemoteParty (const NamedList& params) | ### cdrRemoteParty

[static]

Retrieve the remote party from CDR parameters

Parameters:

params | CDR parameters

Returns: The remote party (may be empty)

void initStaticData () | ### initStaticData

[static]

Init static logic lists. Called by the client when start running

bool saveContact (Configuration& cfg, ClientContact* c, bool save = true) | ### saveContact

[static]

Save a contact into a configuration file

Parameters:

cfg | The configuration file
c | The contact to save
save | True to save the file

Returns: True on success

bool clearContact (Configuration& cfg, ClientContact* c, bool save = true) | ### clearContact

[static]

Delete a contact from a configuration file

Parameters:

cfg | The configuration file
c | The contact to delete
save | True to save the file

Returns: True on success

static ObjList s_accOptions | ### s_accOptions

static const char* s_provParams[] | ### s_provParams[]

static ObjList s_protocols | ### s_protocols

static Mutex s_protocolsMutex | ### s_protocolsMutex

ClientLogic (const char* name, int priority) | ### ClientLogic

[protected]

Constructor. Append itself to the client's list

Parameters:

name | The name of this logic (module)
priority | The priority of this logic

void idleTimerTick (Time& time) | ### idleTimerTick

[protected virtual]

Method called by the client when idle. This method is called in the UI's thread

Parameters:

time | The current time

ObjList m_durationUpdate | ### m_durationUpdate

[protected]

Mutex m_durationMutex | ### m_durationMutex

[protected]

Generated by: paulc on bussard on Fri May 8 12:37:22 2015, using kdoc 2.0a54.