Yate
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
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 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

Client boolean options mapped to UI toggles

enum MsgID

Message relays installed by this receiver.

Tray icon valuers used in stack

Constructor & Destructor Documentation

Client ( const char *  name = 0)
explicit

Constructor

Parameters
nameThe client's name
virtual ~Client ( )
virtual

Destructor

Member Function Documentation

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
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
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
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
virtual bool addToLog ( const String text)
virtual

Add a log line

Parameters
textText to add
Returns
True on success
static bool addToLogFormatted ( const char *  format,
  ... 
)
static

Add a formatted log line

Parameters
formatText format
Returns
True on success
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
virtual void allHidden ( )
pure virtual

Handle all windows closed event from UI

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
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
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
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
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().

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
virtual bool buildOutgoingChannel ( NamedList params)
virtual

Build an outgoing channel

Parameters
paramsCall parameters
Returns
True if a channel was created its router started
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
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
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
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
virtual bool callRouting ( Message msg)
inlinevirtual

Call routing handler called by the driver

Parameters
msgThe call.route message
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
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
virtual void cleanup ( )
virtual

Cleanup when thread terminates

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
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
virtual ClientLogic* createDefaultLogic ( )
protectedvirtual

Create the default logic The default implementation creates a DefaultLogic object

Returns
ClientLogic pointer or 0
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
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
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
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
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
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
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
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().

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().

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
static bool exiting ( )
inlinestatic

Check if the client is exiting

Returns
True if the client therad is exiting

Referenced by Client::valid().

static ClientLogic* findLogic ( const String name)
static

Convenience method to retrieve a logic

Parameters
nameThe logic's name
Returns
ClientLogic pointer or 0
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
static void fixPathSep ( String path)
static

Fix path separator. Set it to platform default

Parameters
pathThe path
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
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
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
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
ClientChannel* getActiveChannel ( )

Get the active channel if any

Returns
Referenced pointer to the active channel or 0
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().

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
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
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
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
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
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
virtual bool imExecute ( Message msg)
virtual

Process an IM message

Parameters
msgThe im.execute of chan.text message
virtual bool imRouting ( Message msg)
inlinevirtual

IM message routing handler called by the driver

Parameters
msgThe im.route message
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
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
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
int line ( ) const
inline

Get the currently selected line

Returns
The selected line
void line ( int  newLine)

Set the selected line

Parameters
newLineThe selected line
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
virtual void lock ( )
pure virtual

Lock the client

Referenced by Client::lockOther().

void lockOther ( )
inline

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

References Client::lock().

virtual void main ( )
pure virtual

Execute the client

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
virtual bool openUrl ( const String url)
pure virtual

Open an URL (link)

Parameters
urlThe URL to open
Returns
True on success
bool openUrlSafe ( const String url)

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

Parameters
urlThe URL to open
Returns
True on success
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
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
virtual void quit ( )
pure virtual

Terminate application

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.

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

Remove characters from a given string

Parameters
bufSource string
charsCharacters to remove from input string
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
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
static void removeLogic ( ClientLogic logic)
static

Remove a logic from the list without destroying it

Parameters
logicPointer to the logic to remove
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
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
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
virtual void run ( )
virtual

Run the client's main loop

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
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
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
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
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
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
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
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
static void setLogicsTick ( )
inlinestatic

Set the flag indicating that the client should tick the logics

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
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
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
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
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
void setThread ( Thread th)
inline

Set the client's thread

Parameters
thThe thread on which the client will run on
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
virtual bool startup ( )
virtual

Start up the client thread

Returns
True if the client thread is started, false otherwise
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().

virtual void unlock ( )
pure virtual

Unlock the client

Referenced by Client::unlockOther().

void unlockOther ( )
inline

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

References Client::unlock().

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
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
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
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 Engine::exiting(), and Client::exiting().


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