Yate
Client Class Referenceabstract

Class that runs the User Interface. More...

#include <yatecbase.h>

Inheritance diagram for Client:
MessageReceiver GenObject

Public Types

enum  MsgID {
  CallCdr = 0 , UiAction , UserLogin , UserNotify ,
  ResourceNotify , ResourceSubscribe , ClientChanUpdate , UserRoster ,
  ContactInfo , ChanNotify , MucRoom , MsgExecute ,
  EngineStart , TransferNotify , UserData , FileInfo ,
  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 Member Functions

 Client (const char *name=0)
 
virtual ~Client ()
 
virtual bool startup ()
 
virtual void run ()
 
virtual void cleanup ()
 
virtual void main ()=0
 
virtual void lock ()=0
 
virtual void unlock ()=0
 
void lockOther ()
 
void unlockOther ()
 
void setThread (Thread *th)
 
virtual void allHidden ()=0
 
void loadUI (const char *file=0, bool init=true)
 
virtual void quit ()=0
 
bool openUrlSafe (const String &url)
 
virtual bool openUrl (const String &url)=0
 
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())
 
virtual bool select (Window *wnd, const String &name, const NamedList &items)
 
bool oneThread () const
 
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 setBusy (const String &name, bool on, 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 getSelect (const String &name, NamedList &items, 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)
 
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)
 
ClientChannelgetActiveChannel ()
 
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())
 
bool emitDigit (char digit, const String &id=String::empty())
 
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 Member Functions inherited from GenObject
 GenObject ()
 
virtual ~GenObject ()
 
virtual bool alive () const
 
virtual void destruct ()
 
virtual const StringtoString () const
 
virtual const StringtraceId () const
 
virtual void * getObject (const String &name) const
 
NamedCountergetObjCounter () const
 
NamedCountersetObjCounter (NamedCounter *counter)
 

Static Public Member Functions

static Clientself ()
 
static void setSelf (Client *client)
 
static bool valid ()
 
static bool isClientMsg (Message &msg)
 
static bool changing ()
 
static WindowgetWindow (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 ObjListlistWindows ()
 
static bool exiting ()
 
static bool getActive (const String &name)
 
static MessagebuildMessage (const char *msg, const String &account, const char *oper=0)
 
static MessagebuildNotify (bool online, const String &account, const ClientResource *from=0)
 
static MessagebuildSubscribe (bool request, bool ok, const String &account, const String &contact, const char *proto=0)
 
static MessagebuildUserRoster (bool update, const String &account, const String &contact, const char *proto=0)
 
static bool addLogic (ClientLogic *logic)
 
static void removeLogic (ClientLogic *logic)
 
static ClientLogicfindLogic (const String &name)
 
static MessageeventMessage (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 void setLogicsTick ()
 
static void appendEscape (String &buf, ObjList &list, char sep=',', bool force=false)
 
static ObjListsplitUnescape (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)
 
static NamedStringfindParamByValue (NamedList &list, const String &value, NamedString *skip=0)
 
static int decodeFlags (const TokenDict *dict, const NamedList &params, const String &prefix=String::empty())
 
static int decodeFlags (const TokenDict *dict, const String &flags, int defVal=0)
 
static void addPathSep (String &dest, const String &path, char sep=0)
 
static void fixPathSep (String &path)
 
static bool removeEndsWithPathSep (String &dest, const String &path, char sep=0)
 
static bool getLastNameInPath (String &dest, const String &path, char sep=0)
 
static bool removeLastNameInPath (String &dest, const String &path, char sep=0, const String &equalOnly=String::empty())
 
static bool addToLogFormatted (const char *format,...)
 
- Static Public Member Functions inherited from GenObject
static void * getObject (const String &name, const GenObject *obj)
 
static bool getObjCounting ()
 
static void setObjCounting (bool enable)
 
static NamedCountergetObjCounter (const String &name, bool create=true)
 
static ObjListgetObjCounters ()
 

Static Public Attributes

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 Member Functions

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

Static Protected Member Functions

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

Protected Attributes

ObjList m_windows
 
bool m_initialized
 
int m_line
 
bool m_oneThread
 
bool m_toggles [OptCount]
 
ObjList m_relays
 
ClientLogicm_defaultLogic
 
Threadm_clientThread
 

Static Protected Attributes

static bool s_exiting
 
static Clients_client
 
static int s_changing
 
static ObjList s_logics
 
static bool s_idleLogicsTick
 

Friends

class Window
 
class ClientChannel
 
class ClientDriver
 
class ClientLogic
 

Detailed Description

Class that runs the User Interface.

Singleton class that holds the User Interface's main methods

Member Enumeration Documentation

◆ ClientToggle

Client boolean options mapped to UI toggles

◆ MsgID

enum MsgID

Message relays installed by this receiver.

◆ TrayIconType

Tray icon valuers used in stack

Constructor & Destructor Documentation

◆ Client()

Client ( const char * name = 0)
explicit

Constructor

Parameters
nameThe client's name

◆ ~Client()

virtual ~Client ( )
virtual

Destructor

Member Function Documentation

◆ action()

virtual bool action ( Window * wnd,
const String & name,
NamedList * params = 0 )
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

◆ addLines()

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

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

◆ addLogic()

static bool addLogic ( ClientLogic * logic)
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

◆ addPathSep()

static void addPathSep ( String & dest,
const String & path,
char sep = 0 )
static

Add path separator at string end. Set destination string. Source and dstination may be the same string

Parameters
destDestination string
pathSource string
sepPath separator, use Engine::pathSeparator() if 0

◆ addToLog()

virtual bool addToLog ( const String & text)
virtual

Add a log line

Parameters
textText to add
Returns
True on success

◆ addToLogFormatted()

static bool addToLogFormatted ( const char * format,
... )
static

Add a formatted log line

Parameters
formatText format
Returns
True on success

◆ addTrayIcon()

static bool addTrayIcon ( const String & wndName,
int prio,
NamedList * params )
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
wndNameThe window owning the icon
prioTray icon priority. The list is kept in ascending order
paramsTray icon parameters. It will be consumed
Returns
True on success

◆ allHidden()

virtual void allHidden ( )
pure virtual

Handle all windows closed event from UI

◆ appendEscape()

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

Append URI escaped String items to a String buffer

Parameters
bufDestination string
listSource list
sepDestination list separator. It will be escaped in each added string
forceTrue to allow appending empty strings

◆ backspace()

virtual bool backspace ( const String & name,
Window * wnd = 0 )
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

◆ buildIncomingChannel()

virtual bool buildIncomingChannel ( Message & msg,
const String & dest )
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

◆ buildMenu()

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

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

Parameters
paramsMenu 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
wndOptional target window
skipOptional window to skip if wnd is 0
Returns
True on success

◆ buildMessage()

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

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

Parameters
msgMessage name
accountThe account sending the message
operOptional operation parameter
Returns
Message pointer

Referenced by MucRoom::buildMucRoom().

◆ buildNotify()

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

Build a resource.notify message

Parameters
onlineTrue to build an 'online' message, false to build an 'offline' one
accountThe account sending the message
fromOptional resource to add to message
Returns
Message pointer

◆ buildOutgoingChannel()

virtual bool buildOutgoingChannel ( NamedList & params)
virtual

Build an outgoing channel

Parameters
paramsCall parameters
Returns
True if a channel was created its router started

◆ buildSubscribe()

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

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

Parameters
requestTrue to build a request, false to build a response
okTrue to build a subscribe(d) message, false to build an unsubscribe(d) message
accountThe account to use for the message
contactThe destination contact
protoOptional protocol
Returns
Valid Message pointer

◆ buildUserRoster()

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

Build an user.roster message

Parameters
updateTrue to build an update, false to build a delete request
accountThe account to use for the message
contactThe contact to update or delete
protoOptional protocol
Returns
Valid Message pointer

◆ callAnswer()

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

Answer an incoming call

Parameters
idThe accepted channel's id
setActiveTrue to activate the answered channel
Returns
True on success

◆ callIncoming()

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

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

◆ callRouting()

virtual bool callRouting ( Message & msg)
inlinevirtual

Call routing handler called by the driver

Parameters
msgThe call.route message

◆ callTerminate()

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

Terminate a call

Parameters
idThe channel's id
reasonOptional termination reason
errorOptional termination error
Returns
True on success

◆ chooseFile()

virtual bool chooseFile ( Window * parent,
NamedList & params )
inlinevirtual

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

◆ cleanup()

virtual void cleanup ( )
virtual

Cleanup when thread terminates

◆ closeDialog()

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

Destroy a modal dialog

Parameters
nameDialog name
wndWindow owning the dialog
skipOptional window to skip if wnd is null
Returns
True on success

◆ closeWindow()

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

Hide/destroy a window with a given name

Parameters
nameThe window's name
hideTrue to hide, false to close
Returns
True on success

◆ createDefaultLogic()

virtual ClientLogic * createDefaultLogic ( )
protectedvirtual

Create the default logic The default implementation creates a DefaultLogic object

Returns
ClientLogic pointer or 0

◆ createDialog()

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

Create a modal dialog owned by a given window

Parameters
nameDialog name (resource config section)
parentParent window
titleDialog title
aliasOptional dialog alias (used as dialog object name)
paramsOptional dialog parameters
Returns
True on success

◆ createObject()

virtual bool createObject ( void ** dest,
const String & type,
const char * name,
NamedList * params = 0 )
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

◆ createSound()

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

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

◆ createWindowSafe()

virtual bool createWindowSafe ( const String & name,
const String & alias = String::empty() )
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

◆ debugHook()

virtual bool debugHook ( bool active)
virtual

Install/uninstall a debugger output hook

Parameters
activeTrue to install, false to uninstall the hook
Returns
True on success

◆ decodeFlags() [1/2]

static int decodeFlags ( const TokenDict * dict,
const NamedList & params,
const String & prefix = String::empty() )
static

Decode flags from dictionary values found in a list of parameters Flags are allowed to begin with '!' to reset

Parameters
dictThe dictionary containing the flags
paramsThe list of parameters used to update the flags
prefixOptional parameter prefix
Returns
Decoded flags

◆ decodeFlags() [2/2]

static int decodeFlags ( const TokenDict * dict,
const String & flags,
int defVal = 0 )
static

Decode flags from dictionary values and comma separated list. Flags are allowed to begin with '!' to reset

Parameters
dictThe dictionary containing the flags
flagsThe list of flags
defValDefault value to return if empty or no non 0 value is found in dictionary
Returns
Decoded flags

◆ emitDigit()

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

Send a digit on selected channel

Parameters
digitThe digit to send
idThe channel id. Use the active one if empty
Returns
True on success

References Client::emitDigits().

◆ emitDigits()

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

Send digits on selected channel

Parameters
digitsThe digits to send
idThe channel id. Use the active one if empty
Returns
True on success

Referenced by Client::emitDigit().

◆ eventMessage()

static Message * eventMessage ( const String & event,
Window * wnd = 0,
const char * name = 0,
NamedList * params = 0 )
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

◆ exiting()

static bool exiting ( )
inlinestatic

Check if the client is exiting

Returns
True if the client therad is exiting

Referenced by Client::valid().

◆ findLogic()

static ClientLogic * findLogic ( const String & name)
static

Convenience method to retrieve a logic

Parameters
nameThe logic's name
Returns
ClientLogic pointer or 0

◆ findParamByValue()

static NamedString * findParamByValue ( NamedList & list,
const String & value,
NamedString * skip = 0 )
static

Find a list parameter by its value

Parameters
listThe list
valueParameter value
skipOptional parameter to skip
Returns
NamedString pointer, 0 if not found

◆ fixPathSep()

static void fixPathSep ( String & path)
static

Fix path separator. Set it to platform default

Parameters
pathThe path

◆ fixPhoneNumber()

static void fixPhoneNumber ( String & number,
const char * chars = 0 )
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
numberPhone number to fix
charsOptional characters to remove from number

◆ formatDateTime()

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

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

◆ generateGuid()

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

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

Parameters
bufDestination string
extraOptional string whose hash will be inserted in the GUID

◆ getActive()

static bool getActive ( const String & name)
static

Retrieve the active state of a window

Parameters
nameWindow name
Returns
True if the window is found and it's active

◆ getActiveChannel()

ClientChannel * getActiveChannel ( )

Get the active channel if any

Returns
Referenced pointer to the active channel or 0

◆ getBoolOpt() [1/2]

bool getBoolOpt ( ClientToggle toggle)
inline

Get a boolean option of this client

Parameters
toggleOptions's id to retrieve
Returns
True on success

References Client::toggle().

◆ getBoolOpt() [2/2]

static ClientToggle getBoolOpt ( const String & name)
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

◆ getLastNameInPath()

static bool getLastNameInPath ( String & dest,
const String & path,
char sep = 0 )
static

Set destination from last item in path. Source and dstination may be the same string

Parameters
destDestination string
pathSource string
sepPath separator, use Engine::pathSeparator() if 0
Returns
True if destination string is not empty

◆ getOptions()

virtual bool getOptions ( const String & name,
NamedList * items,
Window * wnd = 0,
Window * skip = 0 )
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

◆ getProperty()

virtual bool getProperty ( const String & name,
const String & item,
String & value,
Window * wnd = 0,
Window * skip = 0 )
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

◆ getSelect()

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

Retrieve an element's multiple selection

Parameters
nameName of the element
itemsList to be to filled with selection's contents
wndOptional window owning the element
skipOptional window to skip if wnd is 0
Returns
True if the operation was successfull

◆ getText()

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

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

◆ imExecute()

virtual bool imExecute ( Message & msg)
virtual

Process an IM message

Parameters
msgThe im.execute of chan.text message

◆ imRouting()

virtual bool imRouting ( Message & msg)
inlinevirtual

IM message routing handler called by the driver

Parameters
msgThe im.route message

◆ insertTableRow()

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

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

◆ installRelay()

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

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

◆ isClientMsg()

static bool isClientMsg ( Message & msg)
static

Check if a message is sent by the client

Parameters
msgThe message to check
Returns
True if the message has a 'module' parameter with the client driver's name

◆ line() [1/2]

int line ( ) const
inline

Get the currently selected line

Returns
The selected line

◆ line() [2/2]

void line ( int newLine)

Set the selected line

Parameters
newLineThe selected line

◆ loadUI()

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

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

◆ lock()

virtual void lock ( )
pure virtual

Lock the client

Referenced by Client::lockOther().

◆ lockOther()

void lockOther ( )
inline

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

References Client::lock().

◆ main()

virtual void main ( )
pure virtual

Execute the client

◆ oneThread()

bool oneThread ( ) const
inline

Check if the client is using more then 1 thread

Returns
True if the client is using more then 1 thread

◆ openUrl()

virtual bool openUrl ( const String & url)
pure virtual

Open an URL (link)

Parameters
urlThe URL to open
Returns
True on success

◆ openUrlSafe()

bool openUrlSafe ( const String & url)

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

Parameters
urlThe URL to open
Returns
True on success

◆ plain2html()

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

Replace plain text chars with HTML escape or markup

Parameters
bufDestination string
spaceEolTrue to replace end of line with space instead of html markup

◆ postpone()

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

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

◆ quit()

virtual void quit ( )
pure virtual

Terminate application

◆ received()

virtual bool received ( Message & msg,
int id )
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)

Implements MessageReceiver.

◆ removeChars()

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

Remove characters from a given string

Parameters
bufSource string
charsCharacters to remove from input string

◆ removeEndsWithPathSep()

static bool removeEndsWithPathSep ( String & dest,
const String & path,
char sep = 0 )
static

Remove path separator from string end. Set destination string. Source and dstination may be the same string

Parameters
destDestination string
pathSource string
sepPath separator, use Engine::pathSeparator() if 0
Returns
True if destination string is not empty

◆ removeLastNameInPath()

static bool removeLastNameInPath ( String & dest,
const String & path,
char sep = 0,
const String & equalOnly = String::empty() )
static

Remove last name in path, set destination from remaining. If the path ends with 'sep', only 'sep' is removed If the path don't contain 'sep' dest is set to empty. Source and dstination may be the same string

Parameters
destDestination string
pathSource string
sepPath separator, use Engine::pathSeparator() if 0
equalOnlyOptional string to match last item. Don't remove (set destination to empty) if not equal
Returns
True if removed

◆ removeLogic()

static void removeLogic ( ClientLogic * logic)
static

Remove a logic from the list without destroying it

Parameters
logicPointer to the logic to remove

◆ removeMenu()

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

Remove a menu (from UI and memory)

Parameters
paramsMenu 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)
wndOptional target window
skipOptional window to skip if wnd is 0
Returns
True on success

◆ removeTrayIcon()

static bool removeTrayIcon ( const String & wndName,
const String & name )
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
wndNameThe window owning the icon
nameTray icon name
Returns
True on success

◆ ringer()

virtual bool ringer ( bool in,
bool on )
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

◆ run()

virtual void run ( )
virtual

Run the client's main loop

◆ save()

static bool save ( Configuration & cfg,
Window * parent = 0,
bool showErr = true )
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

◆ select() [1/2]

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

Handle 'select' with multiple items 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
itemsList containing the selection
Returns
True if the action was handled by a client logic

◆ select() [2/2]

virtual bool select ( Window * wnd,
const String & name,
const String & item,
const String & text = String::empty() )
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

◆ setBoolOpt()

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

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

◆ setBusy()

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

Show or hide control busy state

Parameters
nameName of the element
onTrue to show, false to hide
wndOptional window owning the element
skipOptional window to skip if wnd is 0
Returns
True if all the operations were successfull

◆ setClientParam()

virtual bool setClientParam ( const String & param,
const String & value,
bool save,
bool update )
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

◆ setImage()

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

Set an element's image

Parameters
nameName of the element
imageImage to set
wndOptional target window
skipOptional window to skip if wnd is 0
Returns
True on success

◆ setImageFit()

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

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

Parameters
nameName of the element
imageImage to set
wndOptional target window
skipOptional window to skip if wnd is 0
Returns
True on success

◆ setLogicsTick()

static void setLogicsTick ( )
inlinestatic

Set the flag indicating that the client should tick the logics

◆ setMultipleRows()

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

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

◆ setParams()

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

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

◆ setProperty()

virtual bool setProperty ( const String & name,
const String & item,
const String & value,
Window * wnd = 0,
Window * skip = 0 )
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

◆ setStatus()

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

Set the status text

Parameters
textStatus text
wndOptional window owning the status control
Returns
True on success

◆ setStatusLocked()

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

Set the status text safely

Parameters
textStatus text
wndOptional window owning the status control
Returns
True on success

◆ setThread()

void setThread ( Thread * th)
inline

Set the client's thread

Parameters
thThe thread on which the client will run on

◆ splitUnescape()

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

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

Parameters
bufSource string
sepCharacter where to split the string. It will be unescaped in each string
emptyOkTrue if empty strings should be inserted in list
Returns
A newly allocated list of strings, must be deleted after use

◆ startup()

virtual bool startup ( )
virtual

Start up the client thread

Returns
True if the client thread is started, false otherwise

◆ toggle()

virtual bool toggle ( Window * wnd,
const String & name,
bool active )
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

Referenced by Client::getBoolOpt().

◆ unlock()

virtual void unlock ( )
pure virtual

Unlock the client

Referenced by Client::unlockOther().

◆ unlockOther()

void unlockOther ( )
inline

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

References Client::unlock().

◆ updateTableRow()

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

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

◆ updateTableRows()

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

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

◆ updateTrayIcon()

static bool updateTrayIcon ( const String & wndName)
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
wndNameThe window owning the icon
Returns
True on success

◆ valid()

static bool valid ( )
inlinestatic

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

References Client::exiting(), and Engine::exiting().


The documentation for this class was generated from the following file: