class Client

Thread that runs the User Interface. More...

Contains pure virtuals
Full nameTelEngine::Client
Definition#include <yatecbase.h>
InheritsTelEngine::MessageReceiver [public ], TelEngine::Thread [public ]
List of all Methods
Annotated List
Files
Globals
Hierarchy
Index

Public Types

Public Methods

Public Static Methods

Public Members

Protected Methods

Protected Static Methods

Protected Members


Detailed Description

Singleton class that holds the User Interface's main thread and methods

enum MsgID { CallCdr = 0, UiAction = 1, UserLogin = 2, UserNotify = 3, ResourceNotify = 4, ResourceSubscribe = 5, ClientChanUpdate = 7, ChanNotify = 8, MsgIdCount = 9 }

MsgID

Message relays installed by this receiver.

enum ClientToggle { OptMultiLines = 0, OptAutoAnswer = 1, OptRingIn = 2, OptRingOut = 3, OptActivateLastOutCall = 4, OptActivateLastInCall = 5, OptActivateCallOnSelect = 6, OptKeypadVisible = 7, OptOpenIncomingUrl = 8, OptCount = 9 }

ClientToggle

Client boolean options mapped to UI toggles

 Client (const char *name = 0)

Client

Constructor

Parameters:
nameThe client's name

 ~Client ()

~Client

[virtual]

Destructor

void  run ()

run

[virtual]

Run the client's thread

Reimplemented from Runnable.

void  cleanup ()

cleanup

[virtual]

Cleanup when thread terminates

Reimplemented from Thread.

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

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:
fileThe resource file describing the windows. Set to 0 to use the default one
initTrue 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:
urlThe URL to open

Returns: True on success

bool  openUrl (const String& url)

openUrl

[pure virtual]

Open an URL (link)

Parameters:
urlThe 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:
msgReceived message
idMessage 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:
nameThe window's name
aliasWindow name alias after succesfully loaded. Set to empty string to use the given name

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:
destDestination to be filled with the newly create object's address
typeObject's type
nameObject's name
paramsOptional 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:
nameThe window's name
hideTrue to hide, false to close

Returns: True on success

bool  debugHook (bool active)

debugHook

[virtual]

Install/uninstall a debugger output hook

Parameters:
activeTrue to install, false to uninstall the hook

Returns: True on success

bool  addToLog (const String& text)

addToLog

[virtual]

Add a log line

Parameters:
textText to add

Returns: True on success

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

setStatus

[virtual]

Set the status text

Parameters:
textStatus text
wndOptional window owning the status control

Returns: True on success

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

setStatusLocked

Set the status text safely

Parameters:
textStatus text
wndOptional 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:
paramsThe parameter list
wndOptional window whose params are to be set
skipOptional 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:
wndThe window in which the user did something
nameThe action's name
paramsOptional 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:
wndThe window in which the user did something
nameThe object's name
activeObject'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:
wndThe window in which the user selected the object
nameThe action's name
itemItem identifying the selection
textSelection'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:
newLineThe 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:
nameName of the element to search for
itemsList to fill with element's items
wndOptional window owning the element
skipOptional 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:
nameThe name of the widget
linesList containing the lines
maxThe maximum number of lines allowed to be displayed. Set to 0 to ignore
atStartTrue to insert, false to append
wndOptional window owning the widget
skipOptional 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:
nameName of the element
dataParameters to initialize the rows with
prefixPrefix to match (and remove) in parameter names
wndOptional window owning the element
skipOptional 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:
nameName of the element
itemName of the item to insert
beforeName of the item to insert before
dataTable's columns to set
wndOptional window owning the element
skipOptional 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:
nameName of the element
itemTable item to set/add
dataOptional list of parameters used to set row data
atStartTrue to add item at start, false to add them to the end
wndOptional window owning the element
skipOptional 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:
nameName of the table
dataThe list of items to add/set/delete
atStartTrue to add new items at start, false to add them to the end
wndOptional window owning the element
skipOptional 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:
nameName of the element
textThe destination string
richTextTrue to get the element's roch text if supported.
wndOptional window owning the element
skipOptional 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  setProperty (const String& name, const String& item, const String& value, Window* wnd = 0, Window* skip = 0)

setProperty

[virtual]

Set a property

Parameters:
nameName of the element
itemProperty's name
valueProperty's value
wndOptional target window
skipOptional 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:
nameName of the element
itemProperty's name
valueProperty's value
wndOptional target window
skipOptional 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 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

inline bool  changing ()

changing

[static]

Window*  getWindow (const String& name)

getWindow

[static]

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

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:
msgMessage to be postponed
idIdentifier of the message to be used on dispatch
copyUserDataCopy 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:
parentDialog window's parent
paramsDialog 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:
paramParameter's name
valueThe value of the parameter
saveTrue to save the configuration file
updateTrue 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:
nameThe widget (it might be the window itself)
wndOptional 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:
nameMessage name
idRelay id
prioMessage priority

bool  callRouting (Message& msg)

callRouting

[virtual]

Call routing handler called by the driver

Parameters:
msgThe call.route message

bool  imRouting (Message& msg)

imRouting

[virtual]

IM message routing handler called by the driver

Parameters:
msgThe im.route message

bool  imExecute (Message& msg)

imExecute

[virtual]

Process an IM message

Parameters:
msgThe 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:
msgThe call.execute message
destThe destination (target)

Returns: True if a channel was created and connected

bool  buildOutgoingChannel (NamedList& params)

buildOutgoingChannel

[virtual]

Build an outgoing channel

Parameters:
paramsCall 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:
msgThe call.execute message
destThe 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:
idThe accepted channel's id
setActiveTrue 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:
idThe channel's id
reasonOptional termination reason
errorOptional 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:
inTrue if the request is for the incoming call alert, false if it is for the outgoing call ringing alert
onTrue 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:
nameThe name of sound object
fileThe file to play (should contain the whole path and the file name)
deviceOptional 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:
digitsThe digits to send
idThe 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:
digitThe digit to send
idThe 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:
toggleOptions'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:
toggleOptions's id to set
valueValue to set
updateUiTrue 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:
destDestination string
secsSeconds since EPOCH
formatFormat string used to build the destination
utcTrue to build UTC time instead of local time

Returns: True on success

void  engineStart (Message& msg)

engineStart

[virtual]

Engine start notification. Notify all registered logics

Parameters:
msgThe engine.start message

inline bool  exiting ()

exiting

[static]

Check if the client is exiting

Returns: True if the client therad is exiting

bool  addLogic (ClientLogic* logic)

addLogic

[static]

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

Parameters:
logicPointer 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:
logicPointer to the logic to remove

ClientLogic*  findLogic (const String& name)

findLogic

[static]

Convenience method to retrieve a logic

Parameters:
nameThe 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:
eventEvent's name
wndOptional window to add to message
nameOptional 'name' parameter value
paramsOther 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:
cfgThe configuration file to save
parentThe parent of the error window if needded
showErrTrue 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:
nameString 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

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 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]

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]

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]


Generated by: paulc on bussard on Wed Oct 21 01:57:30 2009, using kdoc 2.0a54.