Yate: yatecbase.h Source File

Yate

yatecbase.h
1
22#ifndef __YATECBASE_H
23#define __YATECBASE_H
24
25#ifndef __cplusplus
26#error C++ is required
27#endif
28
29#include <yatephone.h>
30
34namespace TelEngine {
35
36class Flags32; // Keeps a 32bit length flag mask
37class NamedInt; // A named integer value
38class Window; // A generic window
39class UIWidget; // A custom widget
40class UIFactory; // Base factory used to build custom widgets
41class Client; // The client
42class ClientChannel; // A client telephony channel
43class ClientDriver; // The client telephony driver
44class ClientLogic; // Base class for all client logics
45class DefaultLogic; // The client's default logic
46class ClientWizard; // A client wizard
47class ClientAccount; // A client account
48class ClientAccountList; // A client account list
49class ClientContact; // A client contact
50class ClientResource; // A client contact's resource
51class MucRoomMember; // A MUC room member
52class MucRoom; // An account's MUC room contact
53class DurationUpdate; // Class used to update UI durations
54class ClientSound; // A sound file
55class ClientFileItem; // Base class for file/dir items
56class ClientDir; // A directory
57class ClientFile; // A file
58
59
64 class YATE_API Flags32
65{
66public:
70 inline Flags32()
71 : m_flags(0)
72 {}
73
78 inline Flags32(u_int32_t value)
79 : m_flags(value)
80 {}
81
86 inline u_int32_t flags() const
87 { return m_flags; }
88
93 inline void set(u_int32_t mask)
94 { m_flags = m_flags | mask; }
95
100 inline void reset(u_int32_t mask)
101 { m_flags = m_flags & ~mask; }
102
108 inline u_int32_t flag(u_int32_t mask) const
109 { return (m_flags & mask); }
110
116 inline void changeFlag(u_int32_t mask, bool on) {
117 if (on)
118 set(mask);
119 else
120 reset(mask);
121 }
122
129 inline bool changeFlagCheck(u_int32_t mask, bool ok) {
130 if ((0 != flag(mask)) == ok)
131 return false;
132 changeFlag(mask,ok);
133 return true;
134 }
135
140 inline void change(u_int32_t value)
141 { m_flags = value; }
142
146 inline operator u_int32_t() const
147 { return m_flags; }
148
152 inline const Flags32& operator=(int value)
153 { m_flags = value; return *this; }
154
155protected:
156 u_int32_t m_flags;
157};
158
163 class YATE_API NamedInt: public String
164{
165 YCLASS(NamedInt,String)
166public:
172 inline NamedInt(const char* name, int val = 0)
173 : String(name), m_value(val)
174 {}
175
180 inline NamedInt(const NamedInt& other)
181 : String(other), m_value(other.value())
182 {}
183
188 inline int value() const
189 { return m_value; }
190
195 inline void setValue(int val)
196 { m_value = val; }
197
203 static void addToListUniqueName(ObjList& list, NamedInt* obj);
204
210 static void clearValue(ObjList& list, int val);
211
219 static inline int lookup(const ObjList& list, const String& name, int defVal = 0) {
220 ObjList* o = list.find(name);
221 return o ? (static_cast<NamedInt*>(o->get()))->value() : defVal;
222 }
223
231 static inline const String& lookupName(const ObjList& list, int val,
232 const String& defVal = String::empty()) {
233 for (ObjList* o = list.skipNull(); o; o = o->skipNext()) {
234 NamedInt* ni = static_cast<NamedInt*>(o->get());
235 if (ni->value() == val)
236 return *ni;
237 }
238 return defVal;
239 }
240
241protected:
242 int m_value;
243
244private:
245 NamedInt() {}
246};
247
253 class YATE_API Window : public GenObject
254{
255 YCLASS(Window,GenObject)
256 friend class Client;
257 YNOCOPY(Window); // no automatic copies please
258public:
263 explicit Window(const char* id = 0);
264
268 virtual ~Window();
269
274 virtual const String& toString() const;
275
276 /*
277 * Get the window's title (may not be displayed on screen)
278 * @return Title of this window
279 */
280 virtual void title(const String& text);
281
286 virtual void context(const String& text);
287
293 virtual bool setParams(const NamedList& params);
294
299 virtual void setOver(const Window* parent) = 0;
300
306 virtual bool hasElement(const String& name) = 0;
307
314 virtual bool setActive(const String& name, bool active) = 0;
315
322 virtual bool setFocus(const String& name, bool select = false) = 0;
323
330 virtual bool setShow(const String& name, bool visible) = 0;
331
339 virtual bool setText(const String& name, const String& text,
340 bool richText = false) = 0;
341
348 virtual bool setCheck(const String& name, bool checked) = 0;
349
356 virtual bool setSelect(const String& name, const String& item) = 0;
357
364 virtual bool setUrgent(const String& name, bool urgent) = 0;
365
372 virtual bool hasOption(const String& name, const String& item) = 0;
373
382 virtual bool addOption(const String& name, const String& item, bool atStart = false,
383 const String& text = String::empty()) = 0;
384
391 virtual bool getOptions(const String& name, NamedList* items) = 0;
392
399 virtual bool delOption(const String& name, const String& item) = 0;
400
409 virtual bool addLines(const String& name, const NamedList* lines, unsigned int max,
410 bool atStart = false);
411
420 virtual bool addTableRow(const String& name, const String& item,
421 const NamedList* data = 0, bool atStart = false);
422
430 virtual bool setMultipleRows(const String& name, const NamedList& data, const String& prefix = String::empty());
431
440 virtual bool insertTableRow(const String& name, const String& item,
441 const String& before, const NamedList* data = 0);
442
449 virtual bool delTableRow(const String& name, const String& item);
450
458 virtual bool setTableRow(const String& name, const String& item, const NamedList* data);
459
468 virtual bool updateTableRow(const String& name, const String& item,
469 const NamedList* data = 0, bool atStart = false);
470
482 virtual bool updateTableRows(const String& name, const NamedList* data,
483 bool atStart = false);
484
492 virtual bool getTableRow(const String& name, const String& item, NamedList* data = 0);
493
499 virtual bool clearTable(const String& name);
500
507 virtual bool setBusy(const String& name, bool on) = 0;
508
516 virtual bool getText(const String& name, String& text, bool richText = false) = 0;
517
524 virtual bool getCheck(const String& name, bool& checked) = 0;
525
532 virtual bool getSelect(const String& name, String& item) = 0;
533
540 virtual bool getSelect(const String& name, NamedList& items) = 0;
541
548 virtual bool buildMenu(const NamedList& params) = 0;
549
556 virtual bool removeMenu(const NamedList& params) = 0;
557
565 virtual bool setImage(const String& name, const String& image, bool fit = false) = 0;
566
574 virtual bool setProperty(const String& name, const String& item, const String& value)
575 { return false; }
576
584 virtual bool getProperty(const String& name, const String& item, String& value)
585 { return false; }
586
590 inline void populate() {
591 if (m_populated)
592 return;
593 doPopulate();
594 m_populated = true;
595 }
596
600 inline void init() {
601 if (m_initialized)
602 return;
603 doInit();
604 m_initialized = true;
605 }
606
610 virtual void show() = 0;
611
615 virtual void hide() = 0;
616
622 virtual void size(int width, int height) = 0;
623
629 virtual void move(int x, int y) = 0;
630
636 virtual void moveRel(int dx, int dy) = 0;
637
643 virtual bool related(const Window* wnd) const;
644
645 virtual void menu(int x, int y) = 0;
646
651 virtual bool canClose()
652 { return true; }
653
658 inline const String& id() const
659 { return m_id; }
660
661 /*
662 * Get the window's title (may not be displayed on screen)
663 * @return Title of this window
664 */
665 inline const String& title() const
666 { return m_title; }
667
672 inline const String& context() const
673 { return m_context; }
674
679 inline bool visible() const
680 { return m_visible; }
681
686 inline void visible(bool yes)
687 { if (yes) show(); else hide(); }
688
693 inline bool active() const
694 { return m_active; }
695
700 inline bool master() const
701 { return m_master; }
702
707 inline bool popup() const
708 { return m_popup; }
709
718 virtual bool createDialog(const String& name, const String& title,
719 const String& alias = String::empty(), const NamedList* params = 0) = 0;
720
726 virtual bool closeDialog(const String& name) = 0;
727
734 static bool isValidParamPrefix(const String& prefix);
735
736protected:
737 virtual void doPopulate() = 0;
738 virtual void doInit() = 0;
739
740 String m_id;
741 String m_title;
742 String m_context;
743 bool m_visible;
744 bool m_active;
745 bool m_master;
746 bool m_popup;
747 bool m_saveOnClose; // Save window's data when destroyed
748
749private:
750 bool m_populated; // Already populated flag
751 bool m_initialized; // Already initialized flag
752};
753
754 class YATE_API UIWidget : public String
755{
756 YCLASS(UIWidget,String)
757 YNOCOPY(UIWidget); // no automatic copies please
758public:
763 inline explicit UIWidget(const char* name = 0)
764 : String(name)
765 { }
766
770 virtual ~UIWidget()
771 { }
772
777 inline const String& name() const
778 { return toString(); }
779
785 virtual bool setParams(const NamedList& params)
786 { return false; }
787
793 virtual bool getOptions(NamedList& items)
794 { return false; }
795
803 virtual bool addTableRow(const String& item, const NamedList* data = 0,
804 bool atStart = false)
805 { return false; }
806
812 virtual bool setMultipleRows(const NamedList& data, const String& prefix = String::empty())
813 { return false; }
814
825 virtual bool updateTableRows(const NamedList* data, bool atStart = false)
826 { return false; }
827
835 virtual bool insertTableRow(const String& item, const String& before,
836 const NamedList* data = 0)
837 { return false; }
838
844 virtual bool delTableRow(const String& item)
845 { return false; }
846
853 virtual bool setTableRow(const String& item, const NamedList* data)
854 { return false; }
855
862 virtual bool getTableRow(const String& item, NamedList* data = 0)
863 { return false; }
864
869 virtual bool clearTable()
870 { return false; }
871
877 virtual bool setSelect(const String& item)
878 { return false; }
879
885 virtual bool getSelect(String& item)
886 { return false; }
887
893 virtual bool getSelect(NamedList& items)
894 { return false; }
895
903 virtual bool addLines(const NamedList& lines, unsigned int max, bool atStart = false)
904 { return false; }
905
912 virtual bool setText(const String& text, bool richText = false)
913 { return false; }
914
921 virtual bool getText(String& text, bool richText = false)
922 { return false; }
923
929 virtual bool setBusy(bool on)
930 { return false; }
931};
932
938 class YATE_API UIFactory : public String
939{
940 YCLASS(UIFactory,String)
941 YNOCOPY(UIFactory); // no automatic copies please
942public:
946 explicit UIFactory(const char* name);
947
951 virtual ~UIFactory();
952
958 inline bool canBuild(const String& type)
959 { return 0 != m_types.find(type); }
960
968 virtual void* create(const String& type, const char* name, NamedList* params = 0) = 0;
969
979 static void* build(const String& type, const char* name, NamedList* params = 0,
980 const char* factory = 0);
981
982protected:
983 ObjList m_types; // List of object types this factory can build
984
985private:
986 static ObjList s_factories; // Registered factories list
987};
988
993 class YATE_API Client : public MessageReceiver
994{
995 YCLASS(Client,MessageReceiver)
996 friend class Window;
997 friend class ClientChannel;
998 friend class ClientDriver;
999 friend class ClientLogic;
1000public:
1004 enum MsgID {
1005 CallCdr = 0,
1006 UiAction,
1007 UserLogin,
1008 UserNotify,
1009 ResourceNotify,
1010 ResourceSubscribe,
1011 ClientChanUpdate,
1012 UserRoster,
1013 ContactInfo,
1014 // Handlers not automatically installed
1015 ChanNotify,
1016 MucRoom,
1017 // IDs used only to postpone messages
1018 MsgExecute,
1019 EngineStart,
1020 TransferNotify,
1021 UserData,
1022 FileInfo,
1023 // Starting value for custom relays
1024 MsgIdCount
1025 };
1026
1030 enum ClientToggle {
1031 OptMultiLines = 0, // Accept incoming calls
1032 OptAutoAnswer, // Auto answer incoming calls
1033 OptRingIn, // Enable/disable incoming ringer
1034 OptRingOut, // Enable/disable outgoing ringer
1035 OptActivateLastOutCall, // Set the last outgoing call active
1036 OptActivateLastInCall, // Set the last incoming call active
1037 OptActivateCallOnSelect, // Set the active call when selected in channel
1038 // list (don't require double click)
1039 OptKeypadVisible, // Show/hide keypad
1040 OptOpenIncomingUrl, // Open an incoming URL in call.execute message
1041 OptAddAccountOnStartup, // Open account add window on startup
1042 OptDockedChat, // Show all contacts chat in the same window
1043 OptDestroyChat, // Destroy contact chat when contact is removed/destroyed
1044 OptNotifyChatState, // Notify chat states
1045 OptShowEmptyChat, // Display received empty chat in chat history
1046 OptSendEmptyChat, // Send empty chat
1047 OptCount
1048 };
1049
1053 enum TrayIconType {
1054 TrayIconMain = 0,
1055 TrayIconInfo = 1000,
1056 TrayIconIncomingChat = 3000,
1057 TrayIconNotification = 5000,
1058 TrayIconIncomingCall = 10000,
1059 };
1060
1065 explicit Client(const char *name = 0);
1066
1070 virtual ~Client();
1071
1076 virtual bool startup();
1077
1081 virtual void run();
1082
1086 virtual void cleanup();
1087
1091 virtual void main() = 0;
1092
1096 virtual void lock() = 0;
1097
1101 virtual void unlock() = 0;
1102
1106 inline void lockOther()
1107 { if (!m_oneThread) lock(); }
1108
1112 inline void unlockOther()
1113 { if (!m_oneThread) unlock(); }
1114
1119 inline void setThread(Thread* th)
1120 { m_clientThread = th; }
1121
1125 virtual void allHidden() = 0;
1126
1132 void loadUI(const char* file = 0, bool init = true);
1133
1137 virtual void quit() = 0;
1138
1144 bool openUrlSafe(const String& url);
1145
1151 virtual bool openUrl(const String& url) = 0;
1152
1159 virtual bool received(Message& msg, int id);
1160
1168 virtual bool createWindowSafe(const String& name,
1169 const String& alias = String::empty());
1170
1180 virtual bool createDialog(const String& name, Window* parent, const String& title,
1181 const String& alias = String::empty(), const NamedList* params = 0);
1182
1191 virtual bool createObject(void** dest, const String& type, const char* name,
1192 NamedList* params = 0);
1193
1200 virtual bool closeWindow(const String& name, bool hide = true);
1201
1209 virtual bool closeDialog(const String& name, Window* wnd, Window* skip = 0);
1210
1216 virtual bool debugHook(bool active);
1217
1223 virtual bool addToLog(const String& text);
1224
1231 virtual bool setStatus(const String& text, Window* wnd = 0);
1232
1239 bool setStatusLocked(const String& text, Window* wnd = 0);
1240
1248 bool setParams(const NamedList* params, Window* wnd = 0, Window* skip = 0);
1249
1258 virtual bool action(Window* wnd, const String& name, NamedList* params = 0);
1259
1268 virtual bool toggle(Window* wnd, const String& name, bool active);
1269
1279 virtual bool select(Window* wnd, const String& name, const String& item, const String& text = String::empty());
1280
1289 virtual bool select(Window* wnd, const String& name, const NamedList& items);
1290
1295 inline bool oneThread() const
1296 { return m_oneThread; }
1297
1302 inline int line() const
1303 { return m_line; }
1304
1309 void line(int newLine);
1310
1311 bool hasElement(const String& name, Window* wnd = 0, Window* skip = 0);
1312 bool setActive(const String& name, bool active, Window* wnd = 0, Window* skip = 0);
1313 bool setFocus(const String& name, bool select = false, Window* wnd = 0, Window* skip = 0);
1314 bool setShow(const String& name, bool visible, Window* wnd = 0, Window* skip = 0);
1315 bool setText(const String& name, const String& text, bool richText = false,
1316 Window* wnd = 0, Window* skip = 0);
1317 bool setCheck(const String& name, bool checked, Window* wnd = 0, Window* skip = 0);
1318 bool setSelect(const String& name, const String& item, Window* wnd = 0, Window* skip = 0);
1319 bool setUrgent(const String& name, bool urgent, Window* wnd = 0, Window* skip = 0);
1320 bool hasOption(const String& name, const String& item, Window* wnd = 0, Window* skip = 0);
1321
1330 virtual bool getOptions(const String& name, NamedList* items,
1331 Window* wnd = 0, Window* skip = 0);
1332
1333 bool addOption(const String& name, const String& item, bool atStart,
1334 const String& text = String::empty(), Window* wnd = 0, Window* skip = 0);
1335 bool delOption(const String& name, const String& item, Window* wnd = 0, Window* skip = 0);
1336
1347 bool addLines(const String& name, const NamedList* lines, unsigned int max,
1348 bool atStart = false, Window* wnd = 0, Window* skip = 0);
1349
1350 bool addTableRow(const String& name, const String& item, const NamedList* data = 0,
1351 bool atStart = false, Window* wnd = 0, Window* skip = 0);
1352
1362 bool setMultipleRows(const String& name, const NamedList& data, const String& prefix = String::empty(), Window* wnd = 0, Window* skip = 0);
1363
1374 bool insertTableRow(const String& name, const String& item,
1375 const String& before, const NamedList* data = 0,
1376 Window* wnd = 0, Window* skip = 0);
1377
1378 bool delTableRow(const String& name, const String& item, Window* wnd = 0, Window* skip = 0);
1379 bool setTableRow(const String& name, const String& item, const NamedList* data,
1380 Window* wnd = 0, Window* skip = 0);
1381 bool getTableRow(const String& name, const String& item, NamedList* data = 0,
1382 Window* wnd = 0, Window* skip = 0);
1383 bool clearTable(const String& name, Window* wnd = 0, Window* skip = 0);
1384
1395 bool updateTableRow(const String& name, const String& item, const NamedList* data = 0,
1396 bool atStart = false, Window* wnd = 0, Window* skip = 0);
1397
1411 bool updateTableRows(const String& name, const NamedList* data, bool atStart = false,
1412 Window* wnd = 0, Window* skip = 0);
1413
1422 bool setBusy(const String& name, bool on, Window* wnd = 0, Window* skip = 0);
1423
1433 bool getText(const String& name, String& text, bool richText = false, Window* wnd = 0, Window* skip = 0);
1434
1435 bool getCheck(const String& name, bool& checked, Window* wnd = 0, Window* skip = 0);
1436 bool getSelect(const String& name, String& item, Window* wnd = 0, Window* skip = 0);
1437
1446 bool getSelect(const String& name, NamedList& items, Window* wnd = 0, Window* skip = 0);
1447
1472 bool buildMenu(const NamedList& params, Window* wnd = 0, Window* skip = 0);
1473
1484 bool removeMenu(const NamedList& params, Window* wnd = 0, Window* skip = 0);
1485
1494 virtual bool setImage(const String& name, const String& image,
1495 Window* wnd = 0, Window* skip = 0);
1496
1505 virtual bool setImageFit(const String& name, const String& image,
1506 Window* wnd = 0, Window* skip = 0);
1507
1517 virtual bool setProperty(const String& name, const String& item, const String& value,
1518 Window* wnd = 0, Window* skip = 0);
1519
1529 virtual bool getProperty(const String& name, const String& item, String& value,
1530 Window* wnd = 0, Window* skip = 0);
1531
1532 void moveRelated(const Window* wnd, int dx, int dy);
1533 inline bool initialized() const
1534 { return m_initialized; }
1535 inline static Client* self()
1536 { return s_client; }
1537 inline static void setSelf(Client* client)
1538 { s_client = client; }
1539
1544 static inline bool valid()
1545 { return self() && (self()->isUIThread() || !(exiting() || Engine::exiting())); }
1546
1552 static bool isClientMsg(Message& msg);
1553
1554 inline static bool changing()
1555 { return (s_changing > 0); }
1556 static Window* getWindow(const String& name);
1557 static bool setVisible(const String& name, bool show = true, bool activate = false);
1558 static bool getVisible(const String& name);
1559 static bool openPopup(const String& name, const NamedList* params = 0, const Window* parent = 0);
1560 static bool openMessage(const char* text, const Window* parent = 0, const char* context = 0);
1561 static bool openConfirm(const char* text, const Window* parent = 0, const char* context = 0);
1562 static ObjList* listWindows();
1563 void idleActions();
1564
1572 bool postpone(const Message& msg, int id, bool copyUserData = false);
1573
1582 virtual bool chooseFile(Window* parent, NamedList& params)
1583 { return false; }
1584
1595 virtual bool setClientParam(const String& param, const String& value,
1596 bool save, bool update);
1597
1604 virtual bool backspace(const String& name, Window* wnd = 0);
1605
1613 void installRelay(const char* name, int id, int prio);
1614
1619 virtual bool callRouting(Message& msg)
1620 { return true;}
1621
1626 virtual bool imRouting(Message& msg)
1627 { return true;}
1628
1633 virtual bool imExecute(Message& msg);
1634
1645 virtual bool buildIncomingChannel(Message& msg, const String& dest);
1646
1652 virtual bool buildOutgoingChannel(NamedList& params);
1653
1661 bool callIncoming(Message& msg, const String& dest);
1662
1669 void callAnswer(const String& id, bool setActive = true);
1670
1678 void callTerminate(const String& id, const char* reason = 0, const char* error = 0);
1679
1684 ClientChannel* getActiveChannel();
1685
1693 virtual bool ringer(bool in, bool on);
1694
1702 virtual bool createSound(const char* name, const char* file, const char* device = 0)
1703 { return false; }
1704
1711 bool emitDigits(const char* digits, const String& id = String::empty());
1712
1719 inline bool emitDigit(char digit, const String& id = String::empty()) {
1720 char s[2] = {digit,0};
1721 return emitDigits(s,id);
1722 }
1723
1729 inline bool getBoolOpt(ClientToggle toggle)
1730 { return toggle < OptCount ? m_toggles[toggle] : false; }
1731
1739 bool setBoolOpt(ClientToggle toggle, bool value, bool updateUi = false);
1740
1749 virtual bool formatDateTime(String& dest, unsigned int secs, const char* format,
1750 bool utc = false)
1751 { return false; }
1752
1757 static inline bool exiting()
1758 { return s_exiting; }
1759
1765 static bool getActive(const String& name);
1766
1775 static Message* buildMessage(const char* msg, const String& account,
1776 const char* oper = 0);
1777
1785 static Message* buildNotify(bool online, const String& account,
1786 const ClientResource* from = 0);
1787
1798 static Message* buildSubscribe(bool request, bool ok, const String& account,
1799 const String& contact, const char* proto = 0);
1800
1809 static Message* buildUserRoster(bool update, const String& account,
1810 const String& contact, const char* proto = 0);
1811
1817 static bool addLogic(ClientLogic* logic);
1818
1823 static void removeLogic(ClientLogic* logic);
1824
1830 static ClientLogic* findLogic(const String& name);
1831
1840 static Message* eventMessage(const String& event, Window* wnd = 0,
1841 const char* name = 0, NamedList* params = 0);
1842
1850 static bool save(Configuration& cfg, Window* parent = 0, bool showErr = true);
1851
1857 static ClientToggle getBoolOpt(const String& name);
1858
1862 static inline void setLogicsTick()
1863 { s_idleLogicsTick = true; }
1864
1872 static void appendEscape(String& buf, ObjList& list, char sep = ',', bool force = false);
1873
1881 static ObjList* splitUnescape(const String& buf, char sep = ',', bool emptyOk = false);
1882
1888 static void removeChars(String& buf, const char* chars);
1889
1898 static void fixPhoneNumber(String& number, const char* chars = 0);
1899
1909 static bool addTrayIcon(const String& wndName, int prio, NamedList* params);
1910
1919 static bool removeTrayIcon(const String& wndName, const String& name);
1920
1928 static bool updateTrayIcon(const String& wndName);
1929
1935 static void generateGuid(String& buf, const String& extra = String::empty());
1936
1942 static void plain2html(String& buf, bool spaceEol = false);
1943
1951 static NamedString* findParamByValue(NamedList& list, const String& value,
1952 NamedString* skip = 0);
1953
1962 static int decodeFlags(const TokenDict* dict, const NamedList& params,
1963 const String& prefix = String::empty());
1964
1973 static int decodeFlags(const TokenDict* dict, const String& flags, int defVal = 0);
1974
1982 static void addPathSep(String& dest, const String& path, char sep = 0);
1983
1988 static void fixPathSep(String& path);
1989
1998 static bool removeEndsWithPathSep(String& dest, const String& path, char sep = 0);
1999
2008 static bool getLastNameInPath(String& dest, const String& path, char sep = 0);
2009
2022 static bool removeLastNameInPath(String& dest, const String& path, char sep = 0,
2023 const String& equalOnly = String::empty());
2024
2030 static bool addToLogFormatted(const char* format, ...);
2031
2032 static Configuration s_settings; // Client settings
2033 static Configuration s_actions; // Logic preferrences
2034 static Configuration s_accounts; // Accounts
2035 static Configuration s_contacts; // Contacts
2036 static Configuration s_providers; // Provider settings
2037 static Configuration s_history; // Call log
2038 static Configuration s_calltoHistory; // Dialed destinations history
2039 // Holds a not selected/set value match
2040 static Regexp s_notSelected;
2041 // Regexp used to check if a string is a GUID in the format
2042 // 8*HEX-4*HEX-4*HEX-4*HEX-12*HEX
2043 static Regexp s_guidRegexp;
2044 // Paths
2045 static String s_skinPath;
2046 static String s_soundPath;
2047 // Ring name for incoming channels
2048 static String s_ringInName;
2049 // Ring name for outgoing channels
2050 static String s_ringOutName;
2051 // Status widget's name
2052 static String s_statusWidget;
2053 // Widget displaying the debug text
2054 static String s_debugWidget;
2055 // The list of cient's toggles
2056 static String s_toggles[OptCount];
2057 // Maximum remote users allowed to enter in conference
2058 static int s_maxConfPeers;
2059 // Engine started flag
2060 static bool s_engineStarted;
2061
2062protected:
2068 virtual ClientLogic* createDefaultLogic();
2069 virtual bool createWindow(const String& name,
2070 const String& alias = String::empty()) = 0;
2071 virtual void loadWindows(const char* file = 0) = 0;
2072 virtual void initWindows();
2073 virtual void initClient();
2074 virtual void exitClient()
2075 {}
2076 virtual bool isUIThread()
2077 { return Thread::current() == m_clientThread; }
2078 inline bool needProxy() const
2079 { return m_oneThread && !(Client::self() && Client::self()->isUIThread()); }
2080 bool driverLockLoop();
2081 static bool driverLock(long maxwait = 0);
2082 static void driverUnlock();
2083
2084 static bool s_exiting; // Exiting flag
2085
2086 ObjList m_windows;
2087 bool m_initialized;
2088 int m_line;
2089 bool m_oneThread;
2090 bool m_toggles[OptCount];
2091 ObjList m_relays; // Message relays installed by this receiver
2092 ClientLogic* m_defaultLogic; // The default logic
2093 static Client* s_client;
2094 static int s_changing;
2095 static ObjList s_logics;
2096 static bool s_idleLogicsTick; // Call logics' timerTick()
2097 Thread* m_clientThread;
2098};
2099
2104 class YATE_API ClientChannel : public Channel
2105{
2106 YCLASS(ClientChannel,Channel)
2107 friend class ClientDriver;
2108 YNOCOPY(ClientChannel); // no automatic copies please
2109public:
2113 enum Notification {
2114 Startup,
2115 Destroyed,
2116 Active,
2117 OnHold,
2118 Mute,
2119 Noticed,
2120 AddrChanged,
2121 Routed,
2122 Accepted,
2123 Rejected,
2124 Progressing,
2125 Ringing,
2126 Answered,
2127 Transfer,
2128 Conference,
2129 AudioSet,
2130 Unknown
2131 };
2132
2136 enum SlaveType {
2137 SlaveNone = 0,
2138 SlaveTransfer,
2139 SlaveConference,
2140 };
2141
2147 ClientChannel(const Message& msg, const String& peerid);
2148
2156 ClientChannel(const String& target, const NamedList& params, int st = SlaveNone,
2157 const String& masterChan = String::empty());
2158
2163 explicit ClientChannel(const String& soundId);
2164
2165 virtual ~ClientChannel();
2166
2173 bool start(const String& target, const NamedList& params);
2174
2175 virtual bool msgProgress(Message& msg);
2176 virtual bool msgRinging(Message& msg);
2177 virtual bool msgAnswered(Message& msg);
2178 virtual bool msgDrop(Message& msg, const char* reason);
2179 virtual bool callRouted(Message& msg);
2180 virtual void callAccept(Message& msg);
2181 virtual void callRejected(const char* error, const char* reason, const Message* msg);
2182
2187 void callAnswer(bool setActive = true);
2188
2193 inline int slave() const
2194 { return m_slave; }
2195
2201 inline ObjList& slaves()
2202 { return m_slaves; }
2203
2208 inline unsigned int slavesCount() const {
2209 Lock lock(m_mutex);
2210 return m_slaves.count();
2211 }
2212
2217 inline void addSlave(const String& sid) {
2218 Lock lock(m_mutex);
2219 if (!m_slaves.find(sid))
2220 m_slaves.append(new String(sid));
2221 }
2222
2227 inline void removeSlave(const String& sid) {
2228 Lock lock(m_mutex);
2229 m_slaves.remove(sid);
2230 }
2231
2236 inline const String& master() const
2237 { return m_master; }
2238
2243 inline const NamedList& clientParams() const
2244 { return m_clientParams; }
2245
2250 inline const String& party() const
2251 { return m_party; }
2252
2257 inline const String& partyName() const
2258 { return m_partyName ? m_partyName : m_party; }
2259
2264 inline bool conference() const
2265 { return m_conference; }
2266
2271 inline const String& transferId() const
2272 { return m_transferId; }
2273
2278 inline RefObject* clientData() const
2279 { return m_clientData; }
2280
2286 inline void setClientData(RefObject* obj = 0) {
2287 TelEngine::destruct(m_clientData);
2288 if (obj && obj->ref())
2289 m_clientData = obj;
2290 }
2291
2298 bool setMedia(bool open = false, bool replace = false);
2299
2306 bool setActive(bool active, bool update = true);
2307
2314 bool setMuted(bool on, bool update = true);
2315
2321 void setTransfer(const String& target = String::empty());
2322
2328 void setConference(const String& target = String::empty());
2329
2334 inline const String& peerOutFormat() const
2335 { return m_peerOutFormat; }
2336
2341 inline const String& peerInFormat() const
2342 { return m_peerInFormat; }
2343
2348 inline bool active() const
2349 { return m_active; }
2350
2355 inline bool muted() const
2356 { return m_muted; }
2357
2362 inline bool isNoticed() const
2363 { return m_noticed; }
2364
2368 void noticed();
2369
2374 inline int line() const
2375 { return m_line; }
2376
2381 void line(int newLine);
2382
2393 void update(int notif, bool chan = true,
2394 bool updatePeer = true, const char* engineMsg = 0,
2395 bool minimal = false, bool data = false);
2396
2401 inline void getReconnPeer(String& buf) {
2402 Lock lck(m_mutex);
2403 buf = m_peerId;
2404 }
2409 inline bool hasReconnPeer()
2410 { return 0 != getReconnPeer(false); }
2411
2417 CallEndpoint* getReconnPeer(bool ref = true);
2418
2422 void dropReconnPeer(const char* reason = 0);
2423
2430 static int lookup(const char* notif, int def = Unknown)
2431 { return TelEngine::lookup(notif,s_notification,def); }
2432
2439 static const char* lookup(int notif, const char* def = 0)
2440 { return TelEngine::lookup(notif,s_notification,def); }
2441
2448 static int lookupSlaveType(const char* notif, int def = SlaveNone)
2449 { return TelEngine::lookup(notif,s_slaveTypes,def); }
2450
2454 static const TokenDict s_notification[];
2455
2459 static const TokenDict s_slaveTypes[];
2460
2461protected:
2462 virtual void destroyed();
2463 virtual void connected(const char* reason);
2464 virtual void disconnected(bool final, const char* reason);
2465 // Check for a source in channel's peer or a received message's user data
2466 inline bool peerHasSource(Message& msg) {
2467 CallEndpoint* ch = getPeer();
2468 if (!ch)
2469 ch = static_cast<CallEndpoint*>(msg.userObject(YATOM("CallEndpoint")));
2470 return ch && ch->getSource();
2471 }
2472 // Check if our consumer's source sent any data
2473 // Don't set the silence flag is already reset
2474 void checkSilence();
2475
2476 int m_slave; // Slave type
2477 String m_master; // Master channel id
2478 String m_party; // Remote party
2479 String m_partyName; // Remote party name
2480 String m_peerOutFormat; // Peer consumer's data format
2481 String m_peerInFormat; // Peer source's data format
2482 String m_reason; // Termination reason
2483 String m_peerId; // Peer's id (used to re-connect)
2484 bool m_noticed; // Incoming channel noticed flag
2485 int m_line; // Channel's line (address)
2486 bool m_active; // Channel active flag
2487 bool m_silence; // True if the peer did't sent us any audio data
2488 bool m_conference; // True if this channel is in conference
2489 bool m_muted; // True if this channel is muted (no data source))
2490 String m_transferId; // Transferred id or empty if not transferred
2491 RefObject* m_clientData; // Obscure data used by client logics
2492 bool m_utility; // Regular client channel flag
2493 String m_soundId; // The id of the sound to play
2494 ObjList m_slaves; // Data managed by the default logic
2495 NamedList m_clientParams; // Channel client parameters
2496};
2497
2502 class YATE_API ClientDriver : public Driver
2503{
2504 YCLASS(ClientDriver,Driver)
2505 friend class ClientChannel; // Reset active channel's id
2506 YNOCOPY(ClientDriver); // No automatic copies please
2507public:
2508 ClientDriver();
2509 virtual ~ClientDriver();
2510 virtual void initialize() = 0;
2511 virtual bool msgExecute(Message& msg, String& dest);
2512 virtual void msgTimer(Message& msg);
2513 virtual bool msgRoute(Message& msg);
2514 virtual bool received(Message& msg, int id);
2515
2520 inline const String& activeId() const
2521 { return m_activeId; }
2522
2531 bool setActive(const String& id = String::empty());
2532
2538 ClientChannel* findLine(int line);
2539
2544 inline static ClientDriver* self()
2545 { return s_driver; }
2546
2551 inline static const String& device()
2552 { return s_device; }
2553
2558 static void dropCalls(const char* reason = 0);
2559
2566 static bool setAudioTransfer(const String& id, const String& target = String::empty());
2567
2577 static bool setConference(const String& id, bool in, const String* confName = 0,
2578 bool buildFromChan = false);
2579
2585 static ClientChannel* findChan(const String& id);
2586
2592 static ClientChannel* findChanByPeer(const String& peer);
2593
2598 static inline ClientChannel* findActiveChan()
2599 { return self() ? findChan(self()->activeId()) : 0; }
2600
2607 static void dropChan(const String& chan, const char* reason = 0, bool peer = false);
2608
2612 static String s_confName;
2613
2618 static bool s_dropConfPeer;
2619
2620protected:
2621 void setup();
2622 static ClientDriver* s_driver;
2623 static String s_device;
2624 String m_activeId; // The active channel's id
2625};
2626
2633 class YATE_API ClientLogic : public GenObject
2634{
2635 YCLASS(ClientLogic,GenObject)
2636 friend class Client;
2637 YNOCOPY(ClientLogic); // no automatic copies please
2638public:
2642 virtual ~ClientLogic();
2643
2648 inline const String& name() const
2649 { return m_name; }
2650
2655 inline int priority() const
2656 { return m_prio; }
2657
2662 virtual const String& toString() const;
2663
2669 bool setParams(const NamedList& params);
2670
2678 virtual bool action(Window* wnd, const String& name, NamedList* params = 0)
2679 { return false; }
2680
2688 virtual bool toggle(Window* wnd, const String& name, bool active)
2689 { return false; }
2690
2699 virtual bool select(Window* wnd, const String& name, const String& item,
2700 const String& text = String::empty())
2701 { return false; }
2702
2710 virtual bool select(Window* wnd, const String& name, const NamedList& items)
2711 { return false; }
2712
2721 virtual bool setClientParam(const String& param, const String& value,
2722 bool save, bool update)
2723 { return false; }
2724
2729 virtual bool imIncoming(Message& msg)
2730 { return false; }
2731
2739 virtual bool callIncoming(Message& msg, const String& dest)
2740 { return false; }
2741
2748 virtual bool validateCall(NamedList& params, Window* wnd = 0)
2749 { return true; }
2750
2759 virtual bool callStart(NamedList& params, Window* wnd = 0,
2760 const String& cmd = String::empty())
2761 { return false; }
2762
2769 virtual bool line(const String& name, Window* wnd = 0);
2770
2778 virtual bool display(NamedList& params, bool widget, Window* wnd = 0);
2779
2786 virtual bool backspace(const String& name, Window* wnd = 0);
2787
2794 virtual bool command(const String& name, Window* wnd = 0);
2795
2806 virtual bool debug(const String& name, bool active, Window* wnd = 0);
2807
2815 virtual bool editAccount(bool newAcc, NamedList* params, Window* wnd = 0)
2816 { return false; }
2817
2824 virtual bool acceptAccount(NamedList* params, Window* wnd = 0)
2825 { return false; }
2826
2833 virtual bool delAccount(const String& account, Window* wnd = 0)
2834 { return false; }
2835
2843 virtual bool updateAccount(const NamedList& account, bool login, bool save)
2844 { return false; }
2845
2852 virtual bool loginAccount(const NamedList& account, bool login)
2853 { return false; }
2854
2863 virtual bool updateContact(const NamedList& contact, bool save, bool update)
2864 { return false; }
2865
2872 virtual bool acceptContact(NamedList* params, Window* wnd = 0)
2873 { return false; }
2874
2882 virtual bool editContact(bool newCont, NamedList* params = 0, Window* wnd = 0)
2883 { return false; }
2884
2891 virtual bool delContact(const String& contact, Window* wnd = 0)
2892 { return false; }
2893
2900 virtual bool callContact(NamedList* params = 0, Window* wnd = 0)
2901 { return false; }
2902
2910 virtual bool updateProviders(const NamedList& provider, bool save, bool update)
2911 { return false; }
2912
2920 virtual bool callLogUpdate(const NamedList& params, bool save, bool update)
2921 { return false; }
2922
2928 virtual bool callLogDelete(const String& billid)
2929 { return false; }
2930
2939 virtual bool callLogClear(const String& table, const String& direction)
2940 { return false; }
2941
2948 virtual bool callLogCall(const String& billid, Window* wnd = 0)
2949 { return false; }
2950
2956 virtual bool callLogCreateContact(const String& billid)
2957 { return false; }
2958
2965 virtual bool help(const String& action, Window* wnd)
2966 { return false; }
2967
2972 virtual bool calltoLoaded()
2973 { return false; }
2974
2978 virtual void loadedWindows()
2979 {}
2980
2984 virtual void initializedWindows()
2985 {}
2986
2993 virtual bool initializedClient()
2994 { return false; }
2995
3000 virtual void exitingClient()
3001 {}
3002
3009 virtual bool handleUiAction(Message& msg, bool& stopLogic)
3010 { return false; }
3011
3018 virtual bool handleCallCdr(Message& msg, bool& stopLogic)
3019 { return false; }
3020
3027 virtual bool handleUserLogin(Message& msg, bool& stopLogic)
3028 { return false; }
3029
3036 virtual bool handleUserNotify(Message& msg, bool& stopLogic)
3037 { return false; }
3038
3045 virtual bool handleUserRoster(Message& msg, bool& stopLogic)
3046 { return false; }
3047
3054 virtual bool handleResourceNotify(Message& msg, bool& stopLogic)
3055 { return false; }
3056
3063 virtual bool handleResourceSubscribe(Message& msg, bool& stopLogic)
3064 { return false; }
3065
3072 virtual bool handleClientChanUpdate(Message& msg, bool& stopLogic)
3073 { return false; }
3074
3081 virtual bool handleContactInfo(Message& msg, bool& stopLogic)
3082 { return false; }
3083
3093 virtual bool defaultMsgHandler(Message& msg, int id, bool& stopLogic)
3094 { return false; }
3095
3100 virtual void engineStart(Message& msg)
3101 {}
3102
3109 virtual bool addDurationUpdate(DurationUpdate* duration, bool autoDelete = false);
3110
3117 virtual bool removeDurationUpdate(const String& name, bool delObj = false);
3118
3125 virtual bool removeDurationUpdate(DurationUpdate* duration, bool delObj = false);
3126
3133 virtual DurationUpdate* findDurationUpdate(const String& name, bool ref = true);
3134
3138 virtual void clearDurationUpdate();
3139
3143 virtual void destruct();
3144
3151 static const String& cdrRemoteParty(const NamedList& params, bool outgoing)
3152 { return outgoing ? params[YSTRING("called")] : params[YSTRING("caller")]; }
3153
3159 static const String& cdrRemoteParty(const NamedList& params) {
3160 const String& dir = params[YSTRING("direction")];
3161 if (dir == YSTRING("incoming"))
3162 return cdrRemoteParty(params,true);
3163 if (dir == YSTRING("outgoing"))
3164 return cdrRemoteParty(params,false);
3165 return String::empty();
3166 }
3167
3172 static void initStaticData();
3173
3181 static bool saveContact(Configuration& cfg, ClientContact* c, bool save = true);
3182
3190 static bool clearContact(Configuration& cfg, ClientContact* c, bool save = true);
3191
3192 // Account options string list
3193 static ObjList s_accOptions;
3194 // Parameters that are applied from provider template
3195 static const char* s_provParams[];
3196 // The list of protocols supported by the client
3197 static ObjList s_protocols;
3198 // Mutext used to lock protocol list
3199 static Mutex s_protocolsMutex;
3200
3201protected:
3207 ClientLogic(const char* name, int priority);
3208
3214 virtual void idleTimerTick(Time& time)
3215 {}
3216
3217 ObjList m_durationUpdate; // Duration updates
3218 Mutex m_durationMutex; // Lock duration operations
3219
3220private:
3221 ClientLogic() {} // No default constructor
3222
3223 String m_name; // Logic's name
3224 int m_prio; // Logics priority
3225};
3226
3227class FtManager;
3228
3233 class YATE_API DefaultLogic : public ClientLogic
3234{
3235 YCLASS(DefaultLogic,ClientLogic)
3236 YNOCOPY(DefaultLogic); // no automatic copies please
3237public:
3243 explicit DefaultLogic(const char* name = "default", int prio = -100);
3244
3248 ~DefaultLogic();
3249
3257 virtual bool action(Window* wnd, const String& name, NamedList* params = 0);
3258
3266 virtual bool toggle(Window* wnd, const String& name, bool active);
3267
3276 virtual bool select(Window* wnd, const String& name, const String& item,
3277 const String& text = String::empty());
3278
3286 virtual bool select(Window* wnd, const String& name, const NamedList& items);
3287
3296 virtual bool setClientParam(const String& param, const String& value,
3297 bool save, bool update);
3298
3303 virtual bool imIncoming(Message& msg);
3304
3312 virtual bool callIncoming(Message& msg, const String& dest);
3313
3320 virtual bool validateCall(NamedList& params, Window* wnd = 0);
3321
3330 virtual bool callStart(NamedList& params, Window* wnd = 0,
3331 const String& cmd = String::empty());
3332
3340 virtual bool digitPressed(NamedList& params, Window* wnd = 0);
3341
3349 virtual bool editAccount(bool newAcc, NamedList* params, Window* wnd = 0);
3350
3357 virtual bool acceptAccount(NamedList* params, Window* wnd = 0);
3358
3365 virtual bool delAccount(const String& account, Window* wnd = 0);
3366
3374 virtual bool updateAccount(const NamedList& account, bool login, bool save);
3375
3382 virtual bool loginAccount(const NamedList& account, bool login);
3383
3392 virtual bool updateContact(const NamedList& contact, bool save, bool update);
3393
3400 virtual bool acceptContact(NamedList* params, Window* wnd = 0);
3401
3409 virtual bool editContact(bool newCont, NamedList* params = 0, Window* wnd = 0);
3410
3417 virtual bool delContact(const String& contact, Window* wnd = 0);
3418
3425 virtual bool callContact(NamedList* params = 0, Window* wnd = 0);
3426
3434 virtual bool updateProviders(const NamedList& provider, bool save, bool update);
3435
3443 virtual bool callLogUpdate(const NamedList& params, bool save, bool update);
3444
3450 virtual bool callLogDelete(const String& billid);
3451
3460 virtual bool callLogClear(const String& table, const String& direction);
3461
3468 virtual bool callLogCall(const String& billid, Window* wnd = 0);
3469
3475 virtual bool callLogCreateContact(const String& billid);
3476
3483 virtual bool help(const String& action, Window* wnd);
3484
3489 virtual bool calltoLoaded();
3490
3494 virtual void loadedWindows()
3495 {}
3496
3500 virtual void initializedWindows();
3501
3508 virtual bool initializedClient();
3509
3514 virtual void exitingClient();
3515
3522 virtual bool handleUiAction(Message& msg, bool& stopLogic);
3523
3530 virtual bool handleCallCdr(Message& msg, bool& stopLogic);
3531
3538 virtual bool handleUserLogin(Message& msg, bool& stopLogic);
3539
3546 virtual bool handleUserNotify(Message& msg, bool& stopLogic);
3547
3554 virtual bool handleUserRoster(Message& msg, bool& stopLogic);
3555
3562 virtual bool handleResourceNotify(Message& msg, bool& stopLogic);
3563
3570 virtual bool handleResourceSubscribe(Message& msg, bool& stopLogic);
3571
3578 virtual bool handleClientChanUpdate(Message& msg, bool& stopLogic);
3579
3586 virtual bool handleContactInfo(Message& msg, bool& stopLogic);
3587
3597 virtual bool defaultMsgHandler(Message& msg, int id, bool& stopLogic);
3598
3604 virtual void updateSelectedChannel(const String* item = 0);
3605
3610 virtual void engineStart(Message& msg);
3611
3616 virtual void showInCallNotification(ClientChannel* chan);
3617
3622 virtual void closeInCallNotification(const String& id);
3623
3632 static inline String& buildAccountId(String& accId, const String& proto,
3633 const String& user, const String& host) {
3634 accId = proto + ":" + user + "@" + host;
3635 return accId;
3636 }
3637
3638protected:
3644 virtual void idleTimerTick(Time& time);
3645
3651 virtual bool enableCallActions(const String& id);
3652
3659 virtual bool fillCallStart(NamedList& p, Window* wnd = 0);
3660
3666 virtual void channelSelectionChanged(const String& old);
3667
3675 virtual void fillContactEditActive(NamedList& list, bool active, const String* item = 0,
3676 bool del = true);
3677
3684 virtual void fillLogContactActive(NamedList& list, bool active, const String* item = 0);
3685
3693 virtual bool clearList(const String& action, Window* wnd);
3694
3703 virtual bool deleteItem(const String& list, const String& item, Window* wnd,
3704 bool confirm);
3705
3714 virtual bool deleteCheckedItems(const String& list, Window* wnd, bool confirm);
3715
3725 virtual bool deleteSelectedItem(const String& action, Window* wnd, bool checked = false);
3726
3733 virtual bool handleTextChanged(NamedList* params, Window* wnd);
3734
3742 virtual bool handleFileTransferAction(const String& name, Window* wnd, NamedList* params = 0);
3743
3751 virtual bool handleFileTransferNotify(Message& msg, bool& stopLogic);
3752
3759 virtual bool handleUserData(Message& msg, bool& stopLogic);
3760
3767 virtual bool handleFileInfo(Message& msg, bool& stopLogic);
3768
3776 virtual void notifyGenericError(const String& text,
3777 const String& account = String::empty(),
3778 const String& contact = String::empty(),
3779 const char* title = "Error");
3780
3788 virtual void notifyNoAudio(bool show, bool micOk = false, bool speakerOk = false,
3789 ClientChannel* chan = 0);
3790
3797 virtual void updateChatRoomsContactList(bool load, ClientAccount* acc,
3798 MucRoom* room = 0);
3799
3805 virtual void joinRoom(MucRoom* room, bool force = false);
3806
3807 String m_selectedChannel; // The currently selected channel
3808 String m_transferInitiated; // Tranfer initiated id
3809
3810private:
3811 // Add/set an account changed in UI
3812 // replace: Optional editing account to replace
3813 bool updateAccount(const NamedList& account, bool save,
3814 const String& replace = String::empty(), bool loaded = false);
3815 // Add/edit an account
3816 bool internalEditAccount(bool newAcc, const String* account, NamedList* params, Window* wnd);
3817 // Handle dialog actions. Return true if handled
3818 bool handleDialogAction(const String& name, bool& retVal, Window* wnd);
3819 // Handle chat and contact related actions. Return true if handled
3820 bool handleChatContactAction(const String& name, Window* wnd);
3821 // Handle chat contact edit ok button press. Return true if handled
3822 bool handleChatContactEditOk(const String& name, Window* wnd);
3823 // Handle chat room contact edit ok button press. Return true if handled
3824 bool handleChatRoomEditOk(const String& name, Window* wnd);
3825 // Handle actions from MUCS window. Return true if handled
3826 bool handleMucsAction(const String& name, Window* wnd, NamedList* params);
3827 // Handle ok button in muc invite window. Return true if handled
3828 bool handleMucInviteOk(Window* wnd);
3829 // Handle select from MUCS window. Return true if handled
3830 bool handleMucsSelect(const String& name, const String& item, Window* wnd,
3831 const String& text = String::empty());
3832 // Handle resource.notify messages from MUC rooms
3833 // The account was already checked
3834 bool handleMucResNotify(Message& msg, ClientAccount* acc, const String& contact,
3835 const String& instance, const String& operation);
3836 // Show/hide the notification area (messages).
3837 // Update rows if requested. Add/remove tray notification/info icon
3838 bool showNotificationArea(bool show, Window* wnd, NamedList* upd = 0,
3839 const char* notif = "notification");
3840 // Show a roster change or failure notification
3841 void showUserRosterNotification(ClientAccount* a, const String& oper,
3842 Message& msg, const String& contactUri = String::empty(),
3843 bool newContact = true);
3844 // Handle actions from notification area. Return true if handled
3845 bool handleNotificationAreaAction(const String& action, Window* wnd);
3846 // Save a contact to config. Save chat rooms if the contact is a chat room
3847 bool storeContact(ClientContact* c);
3848 // Handle ok from account password/credentials input window
3849 bool handleAccCredInput(Window* wnd, const String& name, bool inputPwd);
3850 // Handle channel show/hide transfer/conference toggles
3851 bool handleChanShowExtra(Window* wnd, bool show, const String& chan, bool conf);
3852 // Handle conf/transfer start actions in channel item
3853 bool handleChanItemConfTransfer(bool conf, const String& name, Window* wnd);
3854 // Handle file share(d) related action
3855 bool handleFileShareAction(Window* wnd, const String& name, NamedList* params);
3856 // Handle file share(d) related select
3857 bool handleFileShareSelect(Window* wnd, const String& name, const String& item,
3858 const String& text, const NamedList* items);
3859 // Handle file share(d) item changes from UI
3860 bool handleFileShareItemChanged(Window* wnd, const String& name, const String& item,
3861 const NamedList& params);
3862 // Handle file share(d) drop events
3863 bool handleFileShareDrop(bool askOnly, Window* wnd, const String& name,
3864 NamedList& params, bool& retVal);
3865 // Handle list item change action
3866 bool handleListItemChanged(Window* wnd, const String& list, const String& item,
3867 const NamedList& params);
3868 // Handle drop events
3869 bool handleDrop(bool askOnly, Window* wnd, const String& name,
3870 NamedList& params);
3871 // Handle file share info changed notification
3872 void handleFileSharedChanged(ClientAccount* a, const String& contact,
3873 const String& inst);
3874
3875 ClientAccountList* m_accounts; // Accounts list (always valid)
3876 FtManager* m_ftManager; // Private file manager
3877};
3878
3879
3884 class YATE_API ClientAccount : public RefObject, public Mutex
3885{
3886 friend class ClientContact;
3887 friend class MucRoom;
3888 YCLASS(ClientAccount,RefObject)
3889 YNOCOPY(ClientAccount); // no automatic copies please
3890public:
3899 explicit ClientAccount(const char* proto, const char* user, const char* host,
3900 bool startup, ClientContact* contact = 0);
3901
3908 explicit ClientAccount(const NamedList& params, ClientContact* contact = 0);
3909
3914 inline const NamedList& params() const
3915 { return m_params; }
3916
3921 inline ObjList& contacts()
3922 { return m_contacts; }
3923
3928 inline ObjList& mucs()
3929 { return m_mucs; }
3930
3935 inline ClientContact* contact() const
3936 { return m_contact; }
3937
3942 void setContact(ClientContact* contact);
3943
3948 inline const String& protocol() const
3949 { return m_params[YSTRING("protocol")]; }
3950
3955 inline bool hasChat() const
3956 { return protocol() == YSTRING("jabber"); }
3957
3962 inline bool hasPresence() const
3963 { return protocol() == YSTRING("jabber"); }
3964
3969 inline bool startup() const
3970 { return m_params.getBoolValue(YSTRING("enabled"),true); }
3971
3976 inline void startup(bool ok)
3977 { m_params.setParam("enabled",String::boolText(ok)); }
3978
3983 virtual const String& toString() const
3984 { return m_params; }
3985
3990 ClientResource* resource(bool ref);
3991
3996 inline ClientResource& resource() const
3997 { return *m_resource; }
3998
4003 void setResource(ClientResource* res);
4004
4012 bool save(bool ok = true, bool savePwd = true);
4013
4020 virtual ClientContact* findContact(const String& id, bool ref = false);
4021
4030 virtual ClientContact* findContact(const String* name = 0, const String* uri = 0,
4031 const String* skipId = 0, bool ref = false);
4032
4040 virtual ClientContact* findContact(const String& id, const String& resid,
4041 bool ref = false);
4042
4049 virtual ClientContact* findContactByUri(const String& uri, bool ref = false);
4050
4057 virtual MucRoom* findRoom(const String& id, bool ref = false);
4058
4065 virtual MucRoom* findRoomByUri(const String& uri, bool ref = false);
4066
4073 virtual ClientContact* findAnyContact(const String& id, bool ref = false);
4074
4082 virtual ClientContact* appendContact(const String& id, const char* name,
4083 const char* uri = 0);
4084
4090 virtual ClientContact* appendContact(const NamedList& params);
4091
4098 virtual ClientContact* removeContact(const String& id, bool delObj = true);
4099
4105 virtual void clearRooms(bool saved, bool temp);
4106
4113 virtual Message* userlogin(bool login, const char* msg = "user.login");
4114
4123 virtual Message* userData(bool update, const String& data,
4124 const char* msg = "user.data");
4125
4130 virtual void fillItemParams(NamedList& list);
4131
4136 inline const String& dataDir() const
4137 { return m_params[YSTRING("datadirectory")]; }
4138
4146 virtual bool setupDataDir(String* errStr = 0, bool saveAcc = true);
4147
4155 virtual bool loadDataDirCfg(Configuration* cfg = 0,
4156 const char* file = "account.conf");
4157
4163 virtual void loadContacts(Configuration* cfg = 0);
4164
4170 virtual bool clearDataDir(String* errStr = 0);
4171
4172 NamedList m_params; // Account parameters
4173 Configuration m_cfg; // Account conf file
4174
4175protected:
4176 // Remove from owner. Release data
4177 virtual void destroyed();
4178 // Method used by the contact to append itself to this account's list
4179 virtual void appendContact(ClientContact* contact, bool muc = false);
4180
4181 ObjList m_contacts; // Account's contacts
4182 ObjList m_mucs; // Account's MUC contacts
4183
4184private:
4185 ClientResource* m_resource; // Account's resource
4186 ClientContact* m_contact; // Account's contact data
4187};
4188
4193 class YATE_API ClientAccountList : public String, public Mutex
4194{
4195 YCLASS(ClientAccountList,String)
4196 YNOCOPY(ClientAccountList); // no automatic copies please
4197public:
4203 inline explicit ClientAccountList(const char* name, ClientAccount* localContacts = 0)
4204 : String(name), Mutex(true,"ClientAccountList"),
4205 m_localContacts(localContacts)
4206 { }
4207
4211 ~ClientAccountList();
4212
4217 inline ObjList& accounts()
4218 { return m_accounts; }
4219
4224 inline ClientAccount* localContacts() const
4225 { return m_localContacts; }
4226
4232 bool isLocalContact(ClientContact* c) const;
4233
4239 inline bool isLocalContact(const String& id) const
4240 { return m_localContacts && m_localContacts->findContact(id); }
4241
4248 virtual ClientAccount* findAccount(const String& id, bool ref = false);
4249
4257 virtual ClientContact* findContactByUri(const String& account, const String& uri,
4258 bool ref = false);
4259
4267 virtual ClientContact* findContact(const String& account, const String& id, bool ref = false);
4268
4275 virtual ClientContact* findContact(const String& builtId, bool ref = false);
4276
4284 virtual ClientContact* findContactByInstance(const String& id, String* instance = 0,
4285 bool ref = false);
4286
4293 virtual MucRoom* findRoom(const String& id, bool ref = false);
4294
4301 virtual MucRoom* findRoomByMember(const String& id, bool ref = false);
4302
4309 virtual ClientContact* findAnyContact(const String& id, bool ref = false);
4310
4317 virtual ClientAccount* findSingleRegAccount(const String* skipProto = 0,
4318 bool ref = false);
4319
4325 virtual bool appendAccount(ClientAccount* account);
4326
4331 virtual void removeAccount(const String& id);
4332
4333protected:
4334 ObjList m_accounts;
4335
4336private:
4337 ClientAccountList() {} // Avoid using the default constructor
4338 ClientAccount* m_localContacts; // Account owning locally stored contacts
4339};
4340
4346 class YATE_API ClientContact : public RefObject
4347{
4348 friend class ClientAccount;
4349 YCLASS(ClientContact,RefObject)
4350 YNOCOPY(ClientContact); // no automatic copies please
4351public:
4355 enum Subscription {
4356 SubFrom = 0x01,
4357 SubTo = 0x02,
4358 };
4359
4367 explicit ClientContact(ClientAccount* owner, const char* id, const char* name = 0,
4368 const char* uri = 0);
4369
4378 explicit ClientContact(ClientAccount* owner, const NamedList& params, const char* id = 0,
4379 const char* uri = 0);
4380
4385 inline ClientAccount* account()
4386 { return m_owner; }
4387
4392 inline const String& accountName() const
4393 { return m_owner ? m_owner->toString() : String::empty(); }
4394
4399 inline const URI& uri() const
4400 { return m_uri; }
4401
4406 inline void setUri(const char* u)
4407 { m_uri = u; }
4408
4413 inline const String& subscriptionStr() const
4414 { return m_subscription; }
4415
4420 inline bool subscriptionFrom() const
4421 { return 0 != m_sub.flag(SubFrom); }
4422
4427 inline bool subscriptionTo() const
4428 { return 0 != m_sub.flag(SubTo); }
4429
4435 bool setSubscription(const String& value);
4436
4441 inline ObjList& resources()
4442 { return m_resources; }
4443
4448 inline bool online() const
4449 { return m_online || 0 != m_resources.skipNull(); }
4450
4455 inline void setOnline(bool on)
4456 { m_online = on; }
4457
4462 inline ObjList& groups()
4463 { return m_groups; }
4464
4470 inline bool local(bool defVal = false) const
4471 { return m_params.getBoolValue(YSTRING("local"),defVal); }
4472
4477 inline void setLocal(bool on)
4478 { m_params.setParam("local",String::boolText(on)); }
4479
4485 inline bool remote(bool defVal = false) const
4486 { return m_params.getBoolValue(YSTRING("remote"),defVal); }
4487
4492 inline void setRemote(bool on)
4493 { m_params.setParam("remote",String::boolText(on)); }
4494
4499 inline void setDockedChat(bool on) {
4500 if (!mucRoom())
4501 m_dockedChat = on;
4502 }
4503
4508 inline void getContactSection(String& buf) {
4509 String pref;
4510 buf = toString();
4511 buf.startSkip(buildContactId(pref,accountName(),String::empty()),false);
4512 buf = buf.uriUnescape();
4513 }
4514
4519 virtual const String& toString() const
4520 { return m_id; }
4521
4526 virtual MucRoom* mucRoom()
4527 { return 0; }
4528
4535 inline String& buildInstanceId(String& dest, const String& inst = String::empty())
4536 { return buildContactInstanceId(dest,m_id,inst); }
4537
4543 inline void buildIdHash(String& buf, const String& prefix = String::empty()) {
4544 MD5 md5(m_id);
4545 buf = prefix + md5.hexDigest();
4546 }
4547
4553 inline bool isChatWnd(Window* wnd)
4554 { return wnd && wnd->toString() == m_chatWndName; }
4555
4560 bool hasChat();
4561
4566 virtual void flashChat(bool on = true);
4567
4576 virtual bool sendChat(const char* body, const String& res = String::empty(),
4577 const String& type = String::empty(), const char* state = "active");
4578
4584 virtual void getChatInput(String& text, const String& name = "message");
4585
4591 virtual void setChatInput(const String& text = String::empty(),
4592 const String& name = "message");
4593
4600 virtual void getChatHistory(String& text, bool richText = false,
4601 const String& name = "history");
4602
4609 virtual void setChatHistory(const String& text, bool richText = false,
4610 const String& name = "history");
4611
4618 virtual void addChatHistory(const String& what, NamedList*& params,
4619 const String& name = "history");
4620
4627 virtual void getChatProperty(const String& name, const String& prop, String& value);
4628
4635 virtual void setChatProperty(const String& name, const String& prop, const String& value);
4636
4641 inline bool isChatVisible()
4642 { return Client::self() && Client::self()->getVisible(m_chatWndName); }
4643
4650 virtual bool showChat(bool visible, bool active = false);
4651
4656 Window* getChatWnd();
4657
4663 virtual void createChatWindow(bool force = false, const char* name = 0);
4664
4671 virtual void updateChatWindow(const NamedList& params, const char* title = 0,
4672 const char* icon = 0);
4673
4678 virtual bool isChatActive();
4679
4683 void destroyChatWindow();
4684
4690 virtual String* findGroup(const String& group);
4691
4697 virtual bool appendGroup(const String& group);
4698
4704 virtual bool removeGroup(const String& group);
4705
4712 virtual bool setGroups(const NamedList& list, const String& param);
4713
4719 virtual ClientResource* status(bool ref = false);
4720
4727 virtual ClientResource* findResource(const String& id, bool ref = false);
4728
4734 virtual ClientResource* findAudioResource(bool ref = false);
4735
4741 virtual ClientResource* findFileTransferResource(bool ref = false);
4742
4748 virtual ClientResource* appendResource(const String& id);
4749
4756 virtual bool insertResource(ClientResource* res);
4757
4763 virtual bool removeResource(const String& id);
4764
4769 inline NamedList& share()
4770 { return m_share; }
4771
4776 inline bool haveShare() const
4777 { return 0 != m_share.getParam(0); }
4778
4782 virtual void updateShare();
4783
4787 virtual void saveShare();
4788
4792 virtual void clearShare();
4793
4802 virtual bool setShareDir(const String& name, const String& path, bool save = true);
4803
4810 virtual bool removeShare(const String& name, bool save = true);
4811
4816 inline ObjList& shared()
4817 { return m_shared; }
4818
4823 bool haveShared() const;
4824
4831 virtual ClientDir* getShared(const String& name, bool create = false);
4832
4839 virtual bool removeShared(const String& name = String::empty(), ClientDir** removed = 0);
4840
4848 static inline String& buildContactId(String& dest, const String& account,
4849 const String& contact) {
4850 dest << account.uriEscape('|') << "|" << String::uriEscape(contact,'|').toLower();
4851 return dest;
4852 }
4853
4859 static inline void splitContactId(const String& src, String& account) {
4860 int pos = src.find('|');
4861 if (pos >= 0)
4862 account = src.substr(0,pos).uriUnescape();
4863 else
4864 account = src.uriUnescape();
4865 }
4866
4874 static void splitContactInstanceId(const String& src, String& account,
4875 String& contact, String* instance = 0);
4876
4884 static inline String& buildContactInstanceId(String& dest, const String& cId,
4885 const String& inst = String::empty()) {
4886 dest << cId << "|" << inst.uriEscape('|');
4887 return dest;
4888 }
4889
4890 // Chat window prefix
4891 static String s_chatPrefix;
4892 // Docked chat window name
4893 static String s_dockedChatWnd;
4894 // Docked chat widget name
4895 static String s_dockedChatWidget;
4896 // MUC rooms window name
4897 static String s_mucsWnd;
4898 // Chat input widget name
4899 static String s_chatInput;
4900
4901 String m_name; // Contact's display name
4902 NamedList m_params; // Optional contact extra params
4903
4904protected:
4911 explicit ClientContact(ClientAccount* owner, const char* id, bool mucRoom);
4912
4916 void removeFromOwner();
4917
4921 virtual void destroyed();
4922
4923 ClientAccount* m_owner; // The account owning this contact
4924 bool m_online; // Online flag
4925 String m_id; // The contact's id
4926 String m_subscription; // Presence subscription state
4927 Flags32 m_sub; // Subscription flags
4928 URI m_uri; // The contact's URI
4929 ObjList m_resources; // The contact's resource list
4930 ObjList m_groups; // The group(s) this contact belongs to
4931 bool m_dockedChat; // Docked chat flag
4932 String m_chatWndName; // Chat window name if any
4933 NamedList m_share; // List of files and folders we share
4934 ObjList m_shared; // List of shared. Each entry is a ClientDir whose name is the resource
4935};
4936
4941 class YATE_API ClientResource : public RefObject
4942{
4943 YCLASS(ClientResource,RefObject)
4944 YNOCOPY(ClientResource); // no automatic copies please
4945public:
4949 enum Status {
4950 Unknown = 0,
4951 Offline = 1,
4952 Connecting = 2,
4953 Online = 3,
4954 Busy = 4,
4955 Dnd = 5,
4956 Away = 6,
4957 Xa = 7,
4958 };
4959
4963 enum Capability {
4964 CapAudio = 0x00000001, // Audio
4965 CapFileTransfer = 0x00000002, // File transfer support
4966 CapFileInfo = 0x00000004, // File info share support
4967 CapRsm = 0x00000008, // Result set management support
4968 };
4969
4976 inline explicit ClientResource(const char* id, const char* name = 0, bool audio = true)
4977 : m_id(id), m_name(name ? name : id), m_caps(audio ? CapAudio : 0),
4978 m_priority(0), m_status(Offline)
4979 { }
4980
4985 virtual const String& toString() const
4986 { return m_id; }
4987
4992 inline bool online() const
4993 { return m_status > Connecting; }
4994
4999 inline bool offline() const
5000 { return m_status == Offline; }
5001
5006 inline const char* statusName() const
5007 { return lookup(m_status,s_statusName); }
5008
5013 inline const char* text() const
5014 { return m_text ? m_text.c_str() : statusDisplayText(m_status); }
5015
5020 inline Flags32& caps()
5021 { return m_caps; }
5022
5028 inline bool setAudio(bool ok)
5029 { return m_caps.changeFlagCheck(CapAudio,ok); }
5030
5036 inline bool setFileTransfer(bool ok)
5037 { return m_caps.changeFlagCheck(CapFileTransfer,ok); }
5038
5044 inline bool setPriority(int prio) {
5045 if (m_priority == prio)
5046 return false;
5047 m_priority = prio;
5048 return true;
5049 }
5050
5056 inline bool setStatus(int stat) {
5057 if (m_status == stat)
5058 return false;
5059 m_status = stat;
5060 return true;
5061 }
5062
5068 inline bool setStatusText(const String& text = String::empty()) {
5069 if (m_text == text)
5070 return false;
5071 m_text = text;
5072 return true;
5073 }
5074
5081 static inline const char* statusDisplayText(int status, const char* defVal = 0)
5082 { return lookup(status,s_statusName,defVal); }
5083
5087 static const TokenDict s_statusName[];
5088
5092 static const TokenDict s_resNotifyCaps[];
5093
5094 String m_id; // The resource id
5095 String m_name; // Resource display name
5096 Flags32 m_caps; // Resource capabilities
5097 int m_priority; // Resource priority
5098 int m_status; // Resource status
5099 String m_text; // Resource status text
5100};
5101
5107 class YATE_API MucRoomMember : public ClientResource
5108{
5109 YCLASS(MucRoomMember,ClientResource)
5110 YNOCOPY(MucRoomMember); // no automatic copies please
5111public:
5115 enum Affiliation {
5116 AffUnknown = 0,
5117 AffNone,
5118 Outcast,
5119 Member,
5120 Admin,
5121 Owner
5122 };
5123
5127 enum Role {
5128 RoleUnknown = 0,
5129 RoleNone, // No role (out of room)
5130 Visitor, // Can view room chat
5131 Participant, // Can only send chat
5132 Moderator // Room moderator: can kick members
5133 };
5134
5141 inline explicit MucRoomMember(const char* id, const char* nick, const char* uri = 0)
5142 : ClientResource(id,nick),
5143 m_uri(uri), m_affiliation(AffNone), m_role(RoleNone)
5144 {}
5145
5149 static const TokenDict s_affName[];
5150
5154 static const TokenDict s_roleName[];
5155
5156 String m_uri; // Member uri, if known
5157 String m_instance; // Member instance, if known
5158 int m_affiliation; // Member affiliation to the room
5159 int m_role; // Member role when present in room ('none' means not present)
5160};
5161
5171 class YATE_API MucRoom : public ClientContact
5172{
5173 YCLASS(MucRoom,ClientContact)
5174 YNOCOPY(MucRoom); // no automatic copies please
5175public:
5184 explicit MucRoom(ClientAccount* owner, const char* id, const char* name, const char* uri,
5185 const char* nick = 0);
5186
5191 inline MucRoomMember& resource()
5192 { return *m_resource; }
5193
5199 inline bool ownMember(MucRoomMember* item) const
5200 { return m_resource == item; }
5201
5207 inline bool ownMember(const String& item) const
5208 { return m_resource->toString() == item; }
5209
5214 inline bool available() const {
5215 return m_resource->online() &&
5216 m_resource->m_role > MucRoomMember::RoleNone;
5217 }
5218
5223 inline bool canChat() const
5224 { return available() && m_resource->m_role >= MucRoomMember::Visitor; }
5225
5230 inline bool canChatPrivate() const
5231 { return available(); }
5232
5237 inline bool canChangeSubject() const
5238 { return available() && m_resource->m_role == MucRoomMember::Moderator; }
5239
5244 inline bool canInvite() const
5245 { return available(); }
5246
5252 bool canKick(MucRoomMember* member) const;
5253
5259 bool canBan(MucRoomMember* member) const;
5260
5266 inline Message* buildMucRoom(const char* oper) {
5267 Message* m = Client::buildMessage("muc.room",accountName(),oper);
5268 m->addParam("room",uri());
5269 return m;
5270 }
5271
5279 Message* buildJoin(bool join, bool history = true, unsigned int sNewer = 0);
5280
5285 virtual MucRoom* mucRoom()
5286 { return this; }
5287
5293 virtual ClientResource* status(bool ref = false)
5294 { return (!ref || m_resource->ref()) ? m_resource : 0; }
5295
5301 MucRoomMember* findMember(const String& nick);
5302
5309 MucRoomMember* findMember(const String& contact, const String& instance);
5310
5316 MucRoomMember* findMemberById(const String& id);
5317
5323 bool hasChat(const String& id);
5324
5330 virtual void flashChat(const String& id, bool on = true);
5331
5338 virtual void getChatInput(const String& id, String& text, const String& name = "message");
5339
5346 virtual void setChatInput(const String& id, const String& text = String::empty(),
5347 const String& name = "message");
5348
5356 virtual void getChatHistory(const String& id, String& text, bool richText = false,
5357 const String& name = "history");
5358
5366 virtual void setChatHistory(const String& id, const String& text, bool richText = false,
5367 const String& name = "history");
5368
5376 virtual void addChatHistory(const String& id, const String& what, NamedList*& params,
5377 const String& name = "history");
5378
5386 virtual void setChatProperty(const String& id, const String& name, const String& prop,
5387 const String& value);
5388
5396 virtual bool showChat(const String& id, bool visible, bool active = false);
5397
5404 virtual void createChatWindow(const String& id, bool force = false, const char* name = 0);
5405
5411 virtual void updateChatWindow(const String& id, const NamedList& params);
5412
5417 virtual bool isChatActive(const String& id);
5418
5423 void destroyChatWindow(const String& id = String::empty());
5424
5431 virtual ClientResource* findResource(const String& id, bool ref = false);
5432
5438 virtual ClientResource* appendResource(const String& nick);
5439
5446 virtual bool insertResource(ClientResource* res)
5447 { return false; }
5448
5455 virtual bool removeResource(const String& nick, bool delChat = false);
5456
5460 String m_password;
5461
5462protected:
5463 // Release data. Destroy all chats
5464 virtual void destroyed();
5465
5466private:
5467 unsigned int m_index; // Index used to build member id
5468 MucRoomMember* m_resource; // Account room identity and status
5469};
5470
5476 class YATE_API DurationUpdate : public RefObject
5477{
5478 YCLASS(DurationUpdate,RefObject)
5479 YNOCOPY(DurationUpdate); // no automatic copies please
5480public:
5489 inline DurationUpdate(ClientLogic* logic, bool owner, const char* id,
5490 const char* name, unsigned int start = Time::secNow())
5491 : m_id(id), m_logic(0), m_name(name), m_startTime(start)
5492 { setLogic(logic,owner); }
5493
5497 virtual ~DurationUpdate();
5498
5503 virtual const String& toString() const;
5504
5510 void setLogic(ClientLogic* logic = 0, bool owner = true);
5511
5521 virtual unsigned int update(unsigned int secNow, const String* table = 0,
5522 Window* wnd = 0, Window* skip = 0, bool force = false);
5523
5531 virtual unsigned int buildTimeParam(NamedList& dest, unsigned int secNow,
5532 bool force = false);
5533
5541 virtual unsigned int buildTimeString(String& dest, unsigned int secNow,
5542 bool force = false);
5543
5553 static unsigned int buildTimeParam(NamedList& dest, const char* param, unsigned int secStart,
5554 unsigned int secNow, bool force = false);
5555
5564 static unsigned int buildTimeString(String& dest, unsigned int secStart, unsigned int secNow,
5565 bool force = false);
5566
5567protected:
5571 virtual void destroyed();
5572
5573 String m_id; // Duration's id
5574 ClientLogic* m_logic; // Client logic having this object in its list
5575 String m_name; // Widget/column name
5576 unsigned int m_startTime; // Start time
5577};
5578
5583 class YATE_API ClientSound : public String
5584{
5585 YCLASS(ClientSound,String)
5586 YNOCOPY(ClientSound); // no automatic copies please
5587public:
5594 inline ClientSound(const char* name, const char* file, const char* device = 0)
5595 : String(name), m_native(false), m_file(file), m_device(device), m_repeat(0),
5596 m_started(false), m_stereo(false)
5597 { }
5598
5602 virtual ~ClientSound()
5603 { stop(); }
5604
5608 virtual void destruct() {
5609 stop();
5610 String::destruct();
5611 }
5612
5618 inline bool native() const
5619 { return m_native; }
5620
5625 inline bool started() const
5626 { return m_started; }
5627
5632 inline const String& device() const
5633 { return m_device; }
5634
5639 inline void device(const char* dev)
5640 { Lock lock(s_soundsMutex); m_device = dev; }
5641
5646 inline const String& file() const
5647 { return m_file; }
5648
5655 inline void file(const char* filename, bool stereo)
5656 { Lock lock(s_soundsMutex); m_file = filename; m_stereo = stereo; }
5657
5663 inline void setRepeat(unsigned int count)
5664 { m_repeat = count; }
5665
5670 inline bool stereo() const
5671 { return m_stereo; }
5672
5678 bool start(bool force = true);
5679
5683 void stop();
5684
5690 void setChannel(const String& chan, bool ok);
5691
5697 bool attachSource(ClientChannel* chan);
5698
5710 static bool build(const String& id, const char* file, const char* device = 0,
5711 unsigned int repeat = 0, bool resetExisting = true, bool stereo = false);
5712
5718 static bool started(const String& name);
5719
5726 static bool start(const String& name, bool force = true);
5727
5732 static void stop(const String& name);
5733
5740 static ClientSound* find(const String& token, bool byName = true);
5741
5745 static ObjList s_sounds;
5746
5750 static Mutex s_soundsMutex;
5751
5756 static String s_calltoPrefix;
5757
5758protected:
5759 virtual bool doStart();
5760 virtual void doStop();
5761
5762 bool m_native; // Native (system dependent) sound
5763 String m_file;
5764 String m_device;
5765 unsigned int m_repeat;
5766 bool m_started;
5767 bool m_stereo;
5768 String m_channel; // Utility channel using this sound
5769};
5770
5775 class YATE_API ClientFileItem : public GenObject
5776{
5777 YCLASS(ClientFileItem,GenObject)
5778 YNOCOPY(ClientFileItem); // no automatic copies please
5779public:
5784 inline ClientFileItem(const char* name)
5785 : m_name(name)
5786 {}
5787
5792 inline const String& name() const
5793 { return m_name; }
5794
5799 virtual ClientDir* directory()
5800 { return 0; }
5801
5806 virtual ClientFile* file()
5807 { return 0; }
5808
5813 virtual const String& toString() const
5814 { return name(); }
5815
5816private:
5817 ClientFileItem() {} // No default constructor
5818 String m_name;
5819};
5820
5825 class YATE_API ClientDir: public ClientFileItem
5826{
5827 YCLASS(ClientDir,ClientFileItem)
5828public:
5833 inline ClientDir(const char* name)
5834 : ClientFileItem(name), m_updated(false)
5835 {}
5836
5841 inline ClientDir(const ClientDir& other)
5842 : ClientFileItem(other.name()), m_updated(other.updated())
5843 { copyChildren(other.m_children); }
5844
5849 inline ObjList& children()
5850 { return m_children; }
5851
5856 inline bool updated() const
5857 { return m_updated; }
5858
5863 inline void updated(bool on)
5864 { m_updated = on; }
5865
5870 bool treeUpdated() const;
5871
5878 ClientDir* addDir(const String& name);
5879
5886 ClientDir* addDirPath(const String& path, const char* sep = "/");
5887
5892 void copyChildren(const ObjList& list);
5893
5898 void addChildren(ObjList& list);
5899
5905 bool addChild(ClientFileItem* item);
5906
5913 ClientFileItem* findChild(const String& path, const char* sep = "/");
5914
5920 inline ClientFileItem* findChildName(const String& name) {
5921 ObjList* o = m_children.find(name);
5922 return o ? static_cast<ClientFileItem*>(o->get()) : 0;
5923 }
5924
5929 virtual ClientDir* directory()
5930 { return this; }
5931
5932protected:
5933 ObjList m_children;
5934 bool m_updated;
5935};
5936
5941 class YATE_API ClientFile: public ClientFileItem
5942{
5943 YCLASS(ClientFile,ClientFileItem)
5944public:
5950 inline ClientFile(const char* name, const NamedList* params = 0)
5951 : ClientFileItem(name), m_params("") {
5952 if (params)
5953 m_params.copyParams(*params);
5954 }
5955
5960 inline ClientFile(const ClientFile& other)
5961 : ClientFileItem(other.name()), m_params(other.params())
5962 {}
5963
5968 inline NamedList& params()
5969 { return m_params; }
5970
5975 inline const NamedList& params() const
5976 { return m_params; }
5977
5982 virtual ClientFile* file()
5983 { return this; }
5984
5985protected:
5986 NamedList m_params;
5987};
5988
5989}; // namespace TelEngine
5990
5991#endif /* __YATECBASE_H */
5992
5993/* vi: set ts=8 sw=4 sts=4 noet: */
GenObject
Definition yateclass.h:1627
GenObject::destruct
virtual void destruct()
Hasher::hexDigest
const String & hexDigest()
Definition yateclass.h:7203
Lock
Ephemeral mutex, semaphore or rw-lock locking object.
Definition yateclass.h:10000
MD5
A standard MD5 digest calculator.
Definition yateclass.h:7350
Mutex
Mutex support.
Definition yateclass.h:9403
NamedList
A named string container class.
Definition yateclass.h:7690
NamedList::getParam
NamedString * getParam(const String &name) const
NamedList::setParam
NamedList & setParam(NamedString *param)
NamedList::getBoolValue
bool getBoolValue(const String &name, bool defvalue=false) const
NamedList::addParam
NamedList & addParam(NamedString *param)
NamedList::copyParams
NamedList & copyParams(bool replace, const NamedList &original, bool copyUserData=false)
NamedString
A named string class.
Definition yateclass.h:5304
ObjList
An object list class.
Definition yateclass.h:2032
ObjList::find
ObjList * find(const GenObject *obj) const
ObjList::append
ObjList * append(const GenObject *obj, bool compact=true)
ObjList::skipNull
ObjList * skipNull() const
ObjList::skipNext
ObjList * skipNext() const
ObjList::get
GenObject * get() const
Definition yateclass.h:2068
ObjList::count
unsigned int count() const
ObjList::remove
GenObject * remove(bool delobj=true)
RefObject
Definition yateclass.h:1752
RefObject::ref
bool ref()
Regexp
A regexp matching class.
Definition yateclass.h:5094
String
A C-style string handling class.
Definition yateclass.h:3055
String::c_str
const char * c_str() const
Definition yateclass.h:3160
String::startSkip
bool startSkip(const char *what, bool wordBreak=true, bool caseInsensitive=false)
String::find
int find(char what, unsigned int offs=0) const
String::uriEscape
static String uriEscape(const char *str, char extraEsc=0, const char *noEsc=0)
Definition yateclass.h:4170
String::uriUnescape
static String uriUnescape(const char *str, int *errptr=0, bool setPartial=true)
Definition yateclass.h:4234
String::toString
virtual const String & toString() const
String::boolText
static const char * boolText(bool value)
Definition yateclass.h:3153
String::toLower
String & toLower()
String::empty
static const String & empty()
String::substr
String substr(int offs, int len=-1) const
TelEngine::CallEndpoint
An abstract call endpoint.
Definition yatephone.h:1128
TelEngine::CallEndpoint::getSource
DataSource * getSource(const String &type=CallEndpoint::audioType()) const
TelEngine::CallEndpoint::getPeer
CallEndpoint * getPeer() const
Definition yatephone.h:1172
TelEngine::Channel
An abstract communication channel.
Definition yatephone.h:1705
TelEngine::ClientAccountList
A client account list.
Definition yatecbase.h:4194
TelEngine::ClientAccountList::accounts
ObjList & accounts()
Definition yatecbase.h:4217
TelEngine::ClientAccountList::findAnyContact
virtual ClientContact * findAnyContact(const String &id, bool ref=false)
TelEngine::ClientAccountList::findContactByUri
virtual ClientContact * findContactByUri(const String &account, const String &uri, bool ref=false)
TelEngine::ClientAccountList::findContact
virtual ClientContact * findContact(const String &account, const String &id, bool ref=false)
TelEngine::ClientAccountList::findRoomByMember
virtual MucRoom * findRoomByMember(const String &id, bool ref=false)
TelEngine::ClientAccountList::appendAccount
virtual bool appendAccount(ClientAccount *account)
TelEngine::ClientAccountList::findAccount
virtual ClientAccount * findAccount(const String &id, bool ref=false)
TelEngine::ClientAccountList::~ClientAccountList
~ClientAccountList()
TelEngine::ClientAccountList::findRoom
virtual MucRoom * findRoom(const String &id, bool ref=false)
TelEngine::ClientAccountList::findContactByInstance
virtual ClientContact * findContactByInstance(const String &id, String *instance=0, bool ref=false)
TelEngine::ClientAccountList::isLocalContact
bool isLocalContact(const String &id) const
Definition yatecbase.h:4239
TelEngine::ClientAccountList::removeAccount
virtual void removeAccount(const String &id)
TelEngine::ClientAccountList::localContacts
ClientAccount * localContacts() const
Definition yatecbase.h:4224
TelEngine::ClientAccountList::ClientAccountList
ClientAccountList(const char *name, ClientAccount *localContacts=0)
Definition yatecbase.h:4203
TelEngine::ClientAccountList::isLocalContact
bool isLocalContact(ClientContact *c) const
TelEngine::ClientAccountList::findSingleRegAccount
virtual ClientAccount * findSingleRegAccount(const String *skipProto=0, bool ref=false)
TelEngine::ClientAccountList::findContact
virtual ClientContact * findContact(const String &builtId, bool ref=false)
TelEngine::ClientAccount
An account.
Definition yatecbase.h:3885
TelEngine::ClientAccount::loadDataDirCfg
virtual bool loadDataDirCfg(Configuration *cfg=0, const char *file="account.conf")
TelEngine::ClientAccount::ClientAccount
ClientAccount(const char *proto, const char *user, const char *host, bool startup, ClientContact *contact=0)
TelEngine::ClientAccount::removeContact
virtual ClientContact * removeContact(const String &id, bool delObj=true)
TelEngine::ClientAccount::clearRooms
virtual void clearRooms(bool saved, bool temp)
TelEngine::ClientAccount::hasChat
bool hasChat() const
Definition yatecbase.h:3955
TelEngine::ClientAccount::fillItemParams
virtual void fillItemParams(NamedList &list)
TelEngine::ClientAccount::dataDir
const String & dataDir() const
Definition yatecbase.h:4136
TelEngine::ClientAccount::destroyed
virtual void destroyed()
TelEngine::ClientAccount::loadContacts
virtual void loadContacts(Configuration *cfg=0)
TelEngine::ClientAccount::setupDataDir
virtual bool setupDataDir(String *errStr=0, bool saveAcc=true)
TelEngine::ClientAccount::findAnyContact
virtual ClientContact * findAnyContact(const String &id, bool ref=false)
TelEngine::ClientAccount::findContact
virtual ClientContact * findContact(const String &id, const String &resid, bool ref=false)
TelEngine::ClientAccount::clearDataDir
virtual bool clearDataDir(String *errStr=0)
TelEngine::ClientAccount::startup
bool startup() const
Definition yatecbase.h:3969
TelEngine::ClientAccount::contact
ClientContact * contact() const
Definition yatecbase.h:3935
TelEngine::ClientAccount::userlogin
virtual Message * userlogin(bool login, const char *msg="user.login")
TelEngine::ClientAccount::appendContact
virtual ClientContact * appendContact(const String &id, const char *name, const char *uri=0)
TelEngine::ClientAccount::findRoom
virtual MucRoom * findRoom(const String &id, bool ref=false)
TelEngine::ClientAccount::resource
ClientResource & resource() const
Definition yatecbase.h:3996
TelEngine::ClientAccount::findContactByUri
virtual ClientContact * findContactByUri(const String &uri, bool ref=false)
TelEngine::ClientAccount::ClientAccount
ClientAccount(const NamedList &params, ClientContact *contact=0)
TelEngine::ClientAccount::findContact
virtual ClientContact * findContact(const String *name=0, const String *uri=0, const String *skipId=0, bool ref=false)
TelEngine::ClientAccount::protocol
const String & protocol() const
Definition yatecbase.h:3948
TelEngine::ClientAccount::toString
virtual const String & toString() const
Definition yatecbase.h:3983
TelEngine::ClientAccount::save
bool save(bool ok=true, bool savePwd=true)
TelEngine::ClientAccount::setResource
void setResource(ClientResource *res)
TelEngine::ClientAccount::hasPresence
bool hasPresence() const
Definition yatecbase.h:3962
TelEngine::ClientAccount::startup
void startup(bool ok)
Definition yatecbase.h:3976
TelEngine::ClientAccount::findContact
virtual ClientContact * findContact(const String &id, bool ref=false)
TelEngine::ClientAccount::setContact
void setContact(ClientContact *contact)
TelEngine::ClientAccount::contacts
ObjList & contacts()
Definition yatecbase.h:3921
TelEngine::ClientAccount::mucs
ObjList & mucs()
Definition yatecbase.h:3928
TelEngine::ClientAccount::params
const NamedList & params() const
Definition yatecbase.h:3914
TelEngine::ClientAccount::userData
virtual Message * userData(bool update, const String &data, const char *msg="user.data")
TelEngine::ClientAccount::appendContact
virtual ClientContact * appendContact(const NamedList &params)
TelEngine::ClientAccount::resource
ClientResource * resource(bool ref)
TelEngine::ClientAccount::findRoomByUri
virtual MucRoom * findRoomByUri(const String &uri, bool ref=false)
TelEngine::ClientChannel
Channel used by client programs.
Definition yatecbase.h:2105
TelEngine::ClientChannel::partyName
const String & partyName() const
Definition yatecbase.h:2257
TelEngine::ClientChannel::msgRinging
virtual bool msgRinging(Message &msg)
TelEngine::ClientChannel::peerInFormat
const String & peerInFormat() const
Definition yatecbase.h:2341
TelEngine::ClientChannel::lookupSlaveType
static int lookupSlaveType(const char *notif, int def=SlaveNone)
Definition yatecbase.h:2448
TelEngine::ClientChannel::callRouted
virtual bool callRouted(Message &msg)
TelEngine::ClientChannel::msgProgress
virtual bool msgProgress(Message &msg)
TelEngine::ClientChannel::conference
bool conference() const
Definition yatecbase.h:2264
TelEngine::ClientChannel::lookup
static int lookup(const char *notif, int def=Unknown)
Definition yatecbase.h:2430
TelEngine::ClientChannel::destroyed
virtual void destroyed()
TelEngine::ClientChannel::s_notification
static const TokenDict s_notification[]
Definition yatecbase.h:2454
TelEngine::ClientChannel::s_slaveTypes
static const TokenDict s_slaveTypes[]
Definition yatecbase.h:2459
TelEngine::ClientChannel::ClientChannel
ClientChannel(const Message &msg, const String &peerid)
TelEngine::ClientChannel::SlaveType
SlaveType
Definition yatecbase.h:2136
TelEngine::ClientChannel::msgDrop
virtual bool msgDrop(Message &msg, const char *reason)
TelEngine::ClientChannel::connected
virtual void connected(const char *reason)
TelEngine::ClientChannel::muted
bool muted() const
Definition yatecbase.h:2355
TelEngine::ClientChannel::callAnswer
void callAnswer(bool setActive=true)
TelEngine::ClientChannel::msgAnswered
virtual bool msgAnswered(Message &msg)
TelEngine::ClientChannel::clientData
RefObject * clientData() const
Definition yatecbase.h:2278
TelEngine::ClientChannel::setTransfer
void setTransfer(const String &target=String::empty())
TelEngine::ClientChannel::addSlave
void addSlave(const String &sid)
Definition yatecbase.h:2217
TelEngine::ClientChannel::lookup
static const char * lookup(int notif, const char *def=0)
Definition yatecbase.h:2439
TelEngine::ClientChannel::getReconnPeer
void getReconnPeer(String &buf)
Definition yatecbase.h:2401
TelEngine::ClientChannel::callRejected
virtual void callRejected(const char *error, const char *reason, const Message *msg)
TelEngine::ClientChannel::slaves
ObjList & slaves()
Definition yatecbase.h:2201
TelEngine::ClientChannel::setActive
bool setActive(bool active, bool update=true)
TelEngine::ClientChannel::ClientChannel
ClientChannel(const String &target, const NamedList &params, int st=SlaveNone, const String &masterChan=String::empty())
TelEngine::ClientChannel::setMedia
bool setMedia(bool open=false, bool replace=false)
TelEngine::ClientChannel::line
int line() const
Definition yatecbase.h:2374
TelEngine::ClientChannel::Notification
Notification
Definition yatecbase.h:2113
TelEngine::ClientChannel::setClientData
void setClientData(RefObject *obj=0)
Definition yatecbase.h:2286
TelEngine::ClientChannel::noticed
void noticed()
TelEngine::ClientChannel::slave
int slave() const
Definition yatecbase.h:2193
TelEngine::ClientChannel::party
const String & party() const
Definition yatecbase.h:2250
TelEngine::ClientChannel::hasReconnPeer
bool hasReconnPeer()
Definition yatecbase.h:2409
TelEngine::ClientChannel::peerOutFormat
const String & peerOutFormat() const
Definition yatecbase.h:2334
TelEngine::ClientChannel::callAccept
virtual void callAccept(Message &msg)
TelEngine::ClientChannel::update
void update(int notif, bool chan=true, bool updatePeer=true, const char *engineMsg=0, bool minimal=false, bool data=false)
TelEngine::ClientChannel::master
const String & master() const
Definition yatecbase.h:2236
TelEngine::ClientChannel::removeSlave
void removeSlave(const String &sid)
Definition yatecbase.h:2227
TelEngine::ClientChannel::clientParams
const NamedList & clientParams() const
Definition yatecbase.h:2243
TelEngine::ClientChannel::getReconnPeer
CallEndpoint * getReconnPeer(bool ref=true)
TelEngine::ClientChannel::start
bool start(const String &target, const NamedList &params)
TelEngine::ClientChannel::slavesCount
unsigned int slavesCount() const
Definition yatecbase.h:2208
TelEngine::ClientChannel::isNoticed
bool isNoticed() const
Definition yatecbase.h:2362
TelEngine::ClientChannel::ClientChannel
ClientChannel(const String &soundId)
TelEngine::ClientChannel::setMuted
bool setMuted(bool on, bool update=true)
TelEngine::ClientChannel::setConference
void setConference(const String &target=String::empty())
TelEngine::ClientChannel::active
bool active() const
Definition yatecbase.h:2348
TelEngine::ClientChannel::transferId
const String & transferId() const
Definition yatecbase.h:2271
TelEngine::ClientChannel::line
void line(int newLine)
TelEngine::ClientChannel::dropReconnPeer
void dropReconnPeer(const char *reason=0)
TelEngine::ClientChannel::disconnected
virtual void disconnected(bool final, const char *reason)
TelEngine::ClientContact
A client contact.
Definition yatecbase.h:4347
TelEngine::ClientContact::getChatHistory
virtual void getChatHistory(String &text, bool richText=false, const String &name="history")
TelEngine::ClientContact::addChatHistory
virtual void addChatHistory(const String &what, NamedList *&params, const String &name="history")
TelEngine::ClientContact::updateShare
virtual void updateShare()
TelEngine::ClientContact::saveShare
virtual void saveShare()
TelEngine::ClientContact::remote
bool remote(bool defVal=false) const
Definition yatecbase.h:4485
TelEngine::ClientContact::getChatProperty
virtual void getChatProperty(const String &name, const String &prop, String &value)
TelEngine::ClientContact::clearShare
virtual void clearShare()
TelEngine::ClientContact::findGroup
virtual String * findGroup(const String &group)
TelEngine::ClientContact::flashChat
virtual void flashChat(bool on=true)
TelEngine::ClientContact::destroyed
virtual void destroyed()
TelEngine::ClientContact::updateChatWindow
virtual void updateChatWindow(const NamedList &params, const char *title=0, const char *icon=0)
TelEngine::ClientContact::removeResource
virtual bool removeResource(const String &id)
TelEngine::ClientContact::buildContactId
static String & buildContactId(String &dest, const String &account, const String &contact)
Definition yatecbase.h:4848
TelEngine::ClientContact::splitContactInstanceId
static void splitContactInstanceId(const String &src, String &account, String &contact, String *instance=0)
TelEngine::ClientContact::appendGroup
virtual bool appendGroup(const String &group)
TelEngine::ClientContact::setOnline
void setOnline(bool on)
Definition yatecbase.h:4455
TelEngine::ClientContact::setGroups
virtual bool setGroups(const NamedList &list, const String &param)
TelEngine::ClientContact::setLocal
void setLocal(bool on)
Definition yatecbase.h:4477
TelEngine::ClientContact::ClientContact
ClientContact(ClientAccount *owner, const NamedList &params, const char *id=0, const char *uri=0)
TelEngine::ClientContact::removeGroup
virtual bool removeGroup(const String &group)
TelEngine::ClientContact::setChatHistory
virtual void setChatHistory(const String &text, bool richText=false, const String &name="history")
TelEngine::ClientContact::findFileTransferResource
virtual ClientResource * findFileTransferResource(bool ref=false)
TelEngine::ClientContact::haveShare
bool haveShare() const
Definition yatecbase.h:4776
TelEngine::ClientContact::removeShare
virtual bool removeShare(const String &name, bool save=true)
TelEngine::ClientContact::setChatInput
virtual void setChatInput(const String &text=String::empty(), const String &name="message")
TelEngine::ClientContact::hasChat
bool hasChat()
TelEngine::ClientContact::share
NamedList & share()
Definition yatecbase.h:4769
TelEngine::ClientContact::setRemote
void setRemote(bool on)
Definition yatecbase.h:4492
TelEngine::ClientContact::isChatActive
virtual bool isChatActive()
TelEngine::ClientContact::subscriptionTo
bool subscriptionTo() const
Definition yatecbase.h:4427
TelEngine::ClientContact::findAudioResource
virtual ClientResource * findAudioResource(bool ref=false)
TelEngine::ClientContact::accountName
const String & accountName() const
Definition yatecbase.h:4392
TelEngine::ClientContact::local
bool local(bool defVal=false) const
Definition yatecbase.h:4470
TelEngine::ClientContact::toString
virtual const String & toString() const
Definition yatecbase.h:4519
TelEngine::ClientContact::buildContactInstanceId
static String & buildContactInstanceId(String &dest, const String &cId, const String &inst=String::empty())
Definition yatecbase.h:4884
TelEngine::ClientContact::uri
const URI & uri() const
Definition yatecbase.h:4399
TelEngine::ClientContact::groups
ObjList & groups()
Definition yatecbase.h:4462
TelEngine::ClientContact::setShareDir
virtual bool setShareDir(const String &name, const String &path, bool save=true)
TelEngine::ClientContact::isChatWnd
bool isChatWnd(Window *wnd)
Definition yatecbase.h:4553
TelEngine::ClientContact::online
bool online() const
Definition yatecbase.h:4448
TelEngine::ClientContact::findResource
virtual ClientResource * findResource(const String &id, bool ref=false)
TelEngine::ClientContact::sendChat
virtual bool sendChat(const char *body, const String &res=String::empty(), const String &type=String::empty(), const char *state="active")
TelEngine::ClientContact::Subscription
Subscription
Definition yatecbase.h:4355
TelEngine::ClientContact::isChatVisible
bool isChatVisible()
Definition yatecbase.h:4641
TelEngine::ClientContact::account
ClientAccount * account()
Definition yatecbase.h:4385
TelEngine::ClientContact::haveShared
bool haveShared() const
TelEngine::ClientContact::appendResource
virtual ClientResource * appendResource(const String &id)
TelEngine::ClientContact::createChatWindow
virtual void createChatWindow(bool force=false, const char *name=0)
TelEngine::ClientContact::subscriptionStr
const String & subscriptionStr() const
Definition yatecbase.h:4413
TelEngine::ClientContact::shared
ObjList & shared()
Definition yatecbase.h:4816
TelEngine::ClientContact::insertResource
virtual bool insertResource(ClientResource *res)
TelEngine::ClientContact::getShared
virtual ClientDir * getShared(const String &name, bool create=false)
TelEngine::ClientContact::showChat
virtual bool showChat(bool visible, bool active=false)
TelEngine::ClientContact::setUri
void setUri(const char *u)
Definition yatecbase.h:4406
TelEngine::ClientContact::setChatProperty
virtual void setChatProperty(const String &name, const String &prop, const String &value)
TelEngine::ClientContact::status
virtual ClientResource * status(bool ref=false)
TelEngine::ClientContact::setSubscription
bool setSubscription(const String &value)
TelEngine::ClientContact::getContactSection
void getContactSection(String &buf)
Definition yatecbase.h:4508
TelEngine::ClientContact::destroyChatWindow
void destroyChatWindow()
TelEngine::ClientContact::splitContactId
static void splitContactId(const String &src, String &account)
Definition yatecbase.h:4859
TelEngine::ClientContact::subscriptionFrom
bool subscriptionFrom() const
Definition yatecbase.h:4420
TelEngine::ClientContact::buildInstanceId
String & buildInstanceId(String &dest, const String &inst=String::empty())
Definition yatecbase.h:4535
TelEngine::ClientContact::mucRoom
virtual MucRoom * mucRoom()
Definition yatecbase.h:4526
TelEngine::ClientContact::ClientContact
ClientContact(ClientAccount *owner, const char *id, const char *name=0, const char *uri=0)
TelEngine::ClientContact::setDockedChat
void setDockedChat(bool on)
Definition yatecbase.h:4499
TelEngine::ClientContact::ClientContact
ClientContact(ClientAccount *owner, const char *id, bool mucRoom)
TelEngine::ClientContact::getChatWnd
Window * getChatWnd()
TelEngine::ClientContact::removeShared
virtual bool removeShared(const String &name=String::empty(), ClientDir **removed=0)
TelEngine::ClientContact::buildIdHash
void buildIdHash(String &buf, const String &prefix=String::empty())
Definition yatecbase.h:4543
TelEngine::ClientContact::getChatInput
virtual void getChatInput(String &text, const String &name="message")
TelEngine::ClientContact::resources
ObjList & resources()
Definition yatecbase.h:4441
TelEngine::ClientContact::removeFromOwner
void removeFromOwner()
TelEngine::ClientDir
A directory.
Definition yatecbase.h:5826
TelEngine::ClientDir::ClientDir
ClientDir(const ClientDir &other)
Definition yatecbase.h:5841
TelEngine::ClientDir::treeUpdated
bool treeUpdated() const
TelEngine::ClientDir::updated
void updated(bool on)
Definition yatecbase.h:5863
TelEngine::ClientDir::addDir
ClientDir * addDir(const String &name)
TelEngine::ClientDir::ClientDir
ClientDir(const char *name)
Definition yatecbase.h:5833
TelEngine::ClientDir::findChildName
ClientFileItem * findChildName(const String &name)
Definition yatecbase.h:5920
TelEngine::ClientDir::directory
virtual ClientDir * directory()
Definition yatecbase.h:5929
TelEngine::ClientDir::findChild
ClientFileItem * findChild(const String &path, const char *sep="/")
TelEngine::ClientDir::updated
bool updated() const
Definition yatecbase.h:5856
TelEngine::ClientDir::children
ObjList & children()
Definition yatecbase.h:5849
TelEngine::ClientDir::copyChildren
void copyChildren(const ObjList &list)
TelEngine::ClientDir::addChildren
void addChildren(ObjList &list)
TelEngine::ClientDir::addChild
bool addChild(ClientFileItem *item)
TelEngine::ClientDir::addDirPath
ClientDir * addDirPath(const String &path, const char *sep="/")
TelEngine::ClientDriver
Base Driver with client specific functions.
Definition yatecbase.h:2503
TelEngine::ClientDriver::setAudioTransfer
static bool setAudioTransfer(const String &id, const String &target=String::empty())
TelEngine::ClientDriver::msgTimer
virtual void msgTimer(Message &msg)
TelEngine::ClientDriver::device
static const String & device()
Definition yatecbase.h:2551
TelEngine::ClientDriver::dropCalls
static void dropCalls(const char *reason=0)
TelEngine::ClientDriver::findChanByPeer
static ClientChannel * findChanByPeer(const String &peer)
TelEngine::ClientDriver::findActiveChan
static ClientChannel * findActiveChan()
Definition yatecbase.h:2598
TelEngine::ClientDriver::setActive
bool setActive(const String &id=String::empty())
TelEngine::ClientDriver::s_confName
static String s_confName
Definition yatecbase.h:2612
TelEngine::ClientDriver::setConference
static bool setConference(const String &id, bool in, const String *confName=0, bool buildFromChan=false)
TelEngine::ClientDriver::s_dropConfPeer
static bool s_dropConfPeer
Definition yatecbase.h:2618
TelEngine::ClientDriver::received
virtual bool received(Message &msg, int id)
TelEngine::ClientDriver::msgExecute
virtual bool msgExecute(Message &msg, String &dest)
TelEngine::ClientDriver::initialize
virtual void initialize()=0
TelEngine::ClientDriver::msgRoute
virtual bool msgRoute(Message &msg)
TelEngine::ClientDriver::findChan
static ClientChannel * findChan(const String &id)
TelEngine::ClientDriver::dropChan
static void dropChan(const String &chan, const char *reason=0, bool peer=false)
TelEngine::ClientDriver::self
static ClientDriver * self()
Definition yatecbase.h:2544
TelEngine::ClientDriver::activeId
const String & activeId() const
Definition yatecbase.h:2520
TelEngine::ClientDriver::findLine
ClientChannel * findLine(int line)
TelEngine::ClientFileItem
A file/directory item.
Definition yatecbase.h:5776
TelEngine::ClientFileItem::ClientFileItem
ClientFileItem(const char *name)
Definition yatecbase.h:5784
TelEngine::ClientFileItem::toString
virtual const String & toString() const
Definition yatecbase.h:5813
TelEngine::ClientFileItem::name
const String & name() const
Definition yatecbase.h:5792
TelEngine::ClientFileItem::directory
virtual ClientDir * directory()
Definition yatecbase.h:5799
TelEngine::ClientFileItem::file
virtual ClientFile * file()
Definition yatecbase.h:5806
TelEngine::ClientFile
A file.
Definition yatecbase.h:5942
TelEngine::ClientFile::ClientFile
ClientFile(const char *name, const NamedList *params=0)
Definition yatecbase.h:5950
TelEngine::ClientFile::params
const NamedList & params() const
Definition yatecbase.h:5975
TelEngine::ClientFile::params
NamedList & params()
Definition yatecbase.h:5968
TelEngine::ClientFile::file
virtual ClientFile * file()
Definition yatecbase.h:5982
TelEngine::ClientFile::ClientFile
ClientFile(const ClientFile &other)
Definition yatecbase.h:5960
TelEngine::ClientLogic
Base class for all client logics.
Definition yatecbase.h:2634
TelEngine::ClientLogic::delContact
virtual bool delContact(const String &contact, Window *wnd=0)
Definition yatecbase.h:2891
TelEngine::ClientLogic::setClientParam
virtual bool setClientParam(const String &param, const String &value, bool save, bool update)
Definition yatecbase.h:2721
TelEngine::ClientLogic::handleUserLogin
virtual bool handleUserLogin(Message &msg, bool &stopLogic)
Definition yatecbase.h:3027
TelEngine::ClientLogic::callLogDelete
virtual bool callLogDelete(const String &billid)
Definition yatecbase.h:2928
TelEngine::ClientLogic::acceptContact
virtual bool acceptContact(NamedList *params, Window *wnd=0)
Definition yatecbase.h:2872
TelEngine::ClientLogic::ClientLogic
ClientLogic(const char *name, int priority)
TelEngine::ClientLogic::line
virtual bool line(const String &name, Window *wnd=0)
TelEngine::ClientLogic::action
virtual bool action(Window *wnd, const String &name, NamedList *params=0)
Definition yatecbase.h:2678
TelEngine::ClientLogic::imIncoming
virtual bool imIncoming(Message &msg)
Definition yatecbase.h:2729
TelEngine::ClientLogic::initializedWindows
virtual void initializedWindows()
Definition yatecbase.h:2984
TelEngine::ClientLogic::callIncoming
virtual bool callIncoming(Message &msg, const String &dest)
Definition yatecbase.h:2739
TelEngine::ClientLogic::clearDurationUpdate
virtual void clearDurationUpdate()
TelEngine::ClientLogic::updateAccount
virtual bool updateAccount(const NamedList &account, bool login, bool save)
Definition yatecbase.h:2843
TelEngine::ClientLogic::handleUserRoster
virtual bool handleUserRoster(Message &msg, bool &stopLogic)
Definition yatecbase.h:3045
TelEngine::ClientLogic::removeDurationUpdate
virtual bool removeDurationUpdate(const String &name, bool delObj=false)
TelEngine::ClientLogic::handleResourceSubscribe
virtual bool handleResourceSubscribe(Message &msg, bool &stopLogic)
Definition yatecbase.h:3063
TelEngine::ClientLogic::callLogCreateContact
virtual bool callLogCreateContact(const String &billid)
Definition yatecbase.h:2956
TelEngine::ClientLogic::setParams
bool setParams(const NamedList &params)
TelEngine::ClientLogic::idleTimerTick
virtual void idleTimerTick(Time &time)
Definition yatecbase.h:3214
TelEngine::ClientLogic::cdrRemoteParty
static const String & cdrRemoteParty(const NamedList &params)
Definition yatecbase.h:3159
TelEngine::ClientLogic::saveContact
static bool saveContact(Configuration &cfg, ClientContact *c, bool save=true)
TelEngine::ClientLogic::~ClientLogic
virtual ~ClientLogic()
TelEngine::ClientLogic::loadedWindows
virtual void loadedWindows()
Definition yatecbase.h:2978
TelEngine::ClientLogic::select
virtual bool select(Window *wnd, const String &name, const NamedList &items)
Definition yatecbase.h:2710
TelEngine::ClientLogic::priority
int priority() const
Definition yatecbase.h:2655
TelEngine::ClientLogic::editAccount
virtual bool editAccount(bool newAcc, NamedList *params, Window *wnd=0)
Definition yatecbase.h:2815
TelEngine::ClientLogic::handleCallCdr
virtual bool handleCallCdr(Message &msg, bool &stopLogic)
Definition yatecbase.h:3018
TelEngine::ClientLogic::callLogClear
virtual bool callLogClear(const String &table, const String &direction)
Definition yatecbase.h:2939
TelEngine::ClientLogic::handleClientChanUpdate
virtual bool handleClientChanUpdate(Message &msg, bool &stopLogic)
Definition yatecbase.h:3072
TelEngine::ClientLogic::loginAccount
virtual bool loginAccount(const NamedList &account, bool login)
Definition yatecbase.h:2852
TelEngine::ClientLogic::destruct
virtual void destruct()
TelEngine::ClientLogic::addDurationUpdate
virtual bool addDurationUpdate(DurationUpdate *duration, bool autoDelete=false)
TelEngine::ClientLogic::callContact
virtual bool callContact(NamedList *params=0, Window *wnd=0)
Definition yatecbase.h:2900
TelEngine::ClientLogic::command
virtual bool command(const String &name, Window *wnd=0)
TelEngine::ClientLogic::delAccount
virtual bool delAccount(const String &account, Window *wnd=0)
Definition yatecbase.h:2833
TelEngine::ClientLogic::callLogCall
virtual bool callLogCall(const String &billid, Window *wnd=0)
Definition yatecbase.h:2948
TelEngine::ClientLogic::removeDurationUpdate
virtual bool removeDurationUpdate(DurationUpdate *duration, bool delObj=false)
TelEngine::ClientLogic::handleUiAction
virtual bool handleUiAction(Message &msg, bool &stopLogic)
Definition yatecbase.h:3009
TelEngine::ClientLogic::toString
virtual const String & toString() const
TelEngine::ClientLogic::updateProviders
virtual bool updateProviders(const NamedList &provider, bool save, bool update)
Definition yatecbase.h:2910
TelEngine::ClientLogic::backspace
virtual bool backspace(const String &name, Window *wnd=0)
TelEngine::ClientLogic::handleResourceNotify
virtual bool handleResourceNotify(Message &msg, bool &stopLogic)
Definition yatecbase.h:3054
TelEngine::ClientLogic::callLogUpdate
virtual bool callLogUpdate(const NamedList &params, bool save, bool update)
Definition yatecbase.h:2920
TelEngine::ClientLogic::acceptAccount
virtual bool acceptAccount(NamedList *params, Window *wnd=0)
Definition yatecbase.h:2824
TelEngine::ClientLogic::initStaticData
static void initStaticData()
TelEngine::ClientLogic::cdrRemoteParty
static const String & cdrRemoteParty(const NamedList &params, bool outgoing)
Definition yatecbase.h:3151
TelEngine::ClientLogic::calltoLoaded
virtual bool calltoLoaded()
Definition yatecbase.h:2972
TelEngine::ClientLogic::exitingClient
virtual void exitingClient()
Definition yatecbase.h:3000
TelEngine::ClientLogic::validateCall
virtual bool validateCall(NamedList &params, Window *wnd=0)
Definition yatecbase.h:2748
TelEngine::ClientLogic::defaultMsgHandler
virtual bool defaultMsgHandler(Message &msg, int id, bool &stopLogic)
Definition yatecbase.h:3093
TelEngine::ClientLogic::updateContact
virtual bool updateContact(const NamedList &contact, bool save, bool update)
Definition yatecbase.h:2863
TelEngine::ClientLogic::name
const String & name() const
Definition yatecbase.h:2648
TelEngine::ClientLogic::debug
virtual bool debug(const String &name, bool active, Window *wnd=0)
TelEngine::ClientLogic::handleUserNotify
virtual bool handleUserNotify(Message &msg, bool &stopLogic)
Definition yatecbase.h:3036
TelEngine::ClientLogic::help
virtual bool help(const String &action, Window *wnd)
Definition yatecbase.h:2965
TelEngine::ClientLogic::editContact
virtual bool editContact(bool newCont, NamedList *params=0, Window *wnd=0)
Definition yatecbase.h:2882
TelEngine::ClientLogic::clearContact
static bool clearContact(Configuration &cfg, ClientContact *c, bool save=true)
TelEngine::ClientLogic::findDurationUpdate
virtual DurationUpdate * findDurationUpdate(const String &name, bool ref=true)
TelEngine::ClientLogic::toggle
virtual bool toggle(Window *wnd, const String &name, bool active)
Definition yatecbase.h:2688
TelEngine::ClientLogic::display
virtual bool display(NamedList &params, bool widget, Window *wnd=0)
TelEngine::ClientLogic::handleContactInfo
virtual bool handleContactInfo(Message &msg, bool &stopLogic)
Definition yatecbase.h:3081
TelEngine::ClientLogic::select
virtual bool select(Window *wnd, const String &name, const String &item, const String &text=String::empty())
Definition yatecbase.h:2699
TelEngine::ClientLogic::engineStart
virtual void engineStart(Message &msg)
Definition yatecbase.h:3100
TelEngine::ClientLogic::callStart
virtual bool callStart(NamedList &params, Window *wnd=0, const String &cmd=String::empty())
Definition yatecbase.h:2759
TelEngine::ClientLogic::initializedClient
virtual bool initializedClient()
Definition yatecbase.h:2993
TelEngine::ClientResource
A client contact's resource.
Definition yatecbase.h:4942
TelEngine::ClientResource::setFileTransfer
bool setFileTransfer(bool ok)
Definition yatecbase.h:5036
TelEngine::ClientResource::ClientResource
ClientResource(const char *id, const char *name=0, bool audio=true)
Definition yatecbase.h:4976
TelEngine::ClientResource::Capability
Capability
Definition yatecbase.h:4963
TelEngine::ClientResource::setStatusText
bool setStatusText(const String &text=String::empty())
Definition yatecbase.h:5068
TelEngine::ClientResource::Status
Status
Definition yatecbase.h:4949
TelEngine::ClientResource::text
const char * text() const
Definition yatecbase.h:5013
TelEngine::ClientResource::setStatus
bool setStatus(int stat)
Definition yatecbase.h:5056
TelEngine::ClientResource::toString
virtual const String & toString() const
Definition yatecbase.h:4985
TelEngine::ClientResource::online
bool online() const
Definition yatecbase.h:4992
TelEngine::ClientResource::statusName
const char * statusName() const
Definition yatecbase.h:5006
TelEngine::ClientResource::s_resNotifyCaps
static const TokenDict s_resNotifyCaps[]
Definition yatecbase.h:5092
TelEngine::ClientResource::setAudio
bool setAudio(bool ok)
Definition yatecbase.h:5028
TelEngine::ClientResource::caps
Flags32 & caps()
Definition yatecbase.h:5020
TelEngine::ClientResource::statusDisplayText
static const char * statusDisplayText(int status, const char *defVal=0)
Definition yatecbase.h:5081
TelEngine::ClientResource::s_statusName
static const TokenDict s_statusName[]
Definition yatecbase.h:5087
TelEngine::ClientResource::setPriority
bool setPriority(int prio)
Definition yatecbase.h:5044
TelEngine::ClientResource::offline
bool offline() const
Definition yatecbase.h:4999
TelEngine::ClientSound
A sound file.
Definition yatecbase.h:5584
TelEngine::ClientSound::s_soundsMutex
static Mutex s_soundsMutex
Definition yatecbase.h:5750
TelEngine::ClientSound::device
const String & device() const
Definition yatecbase.h:5632
TelEngine::ClientSound::ClientSound
ClientSound(const char *name, const char *file, const char *device=0)
Definition yatecbase.h:5594
TelEngine::ClientSound::stereo
bool stereo() const
Definition yatecbase.h:5670
TelEngine::ClientSound::setChannel
void setChannel(const String &chan, bool ok)
TelEngine::ClientSound::file
const String & file() const
Definition yatecbase.h:5646
TelEngine::ClientSound::start
bool start(bool force=true)
TelEngine::ClientSound::native
bool native() const
Definition yatecbase.h:5618
TelEngine::ClientSound::s_sounds
static ObjList s_sounds
Definition yatecbase.h:5745
TelEngine::ClientSound::destruct
virtual void destruct()
Definition yatecbase.h:5608
TelEngine::ClientSound::stop
void stop()
TelEngine::ClientSound::file
void file(const char *filename, bool stereo)
Definition yatecbase.h:5655
TelEngine::ClientSound::setRepeat
void setRepeat(unsigned int count)
Definition yatecbase.h:5663
TelEngine::ClientSound::start
static bool start(const String &name, bool force=true)
TelEngine::ClientSound::s_calltoPrefix
static String s_calltoPrefix
Definition yatecbase.h:5756
TelEngine::ClientSound::device
void device(const char *dev)
Definition yatecbase.h:5639
TelEngine::ClientSound::stop
static void stop(const String &name)
TelEngine::ClientSound::attachSource
bool attachSource(ClientChannel *chan)
TelEngine::ClientSound::build
static bool build(const String &id, const char *file, const char *device=0, unsigned int repeat=0, bool resetExisting=true, bool stereo=false)
TelEngine::ClientSound::started
bool started() const
Definition yatecbase.h:5625
TelEngine::ClientSound::started
static bool started(const String &name)
TelEngine::ClientSound::~ClientSound
virtual ~ClientSound()
Definition yatecbase.h:5602
TelEngine::ClientSound::find
static ClientSound * find(const String &token, bool byName=true)
TelEngine::Client
Class that runs the User Interface.
Definition yatecbase.h:994
TelEngine::Client::setClientParam
virtual bool setClientParam(const String &param, const String &value, bool save, bool update)
TelEngine::Client::closeWindow
virtual bool closeWindow(const String &name, bool hide=true)
TelEngine::Client::cleanup
virtual void cleanup()
TelEngine::Client::setThread
void setThread(Thread *th)
Definition yatecbase.h:1119
TelEngine::Client::isClientMsg
static bool isClientMsg(Message &msg)
TelEngine::Client::addTrayIcon
static bool addTrayIcon(const String &wndName, int prio, NamedList *params)
TelEngine::Client::fixPathSep
static void fixPathSep(String &path)
TelEngine::Client::action
virtual bool action(Window *wnd, const String &name, NamedList *params=0)
TelEngine::Client::updateTableRows
bool updateTableRows(const String &name, const NamedList *data, bool atStart=false, Window *wnd=0, Window *skip=0)
TelEngine::Client::formatDateTime
virtual bool formatDateTime(String &dest, unsigned int secs, const char *format, bool utc=false)
Definition yatecbase.h:1749
TelEngine::Client::oneThread
bool oneThread() const
Definition yatecbase.h:1295
TelEngine::Client::getSelect
bool getSelect(const String &name, NamedList &items, Window *wnd=0, Window *skip=0)
TelEngine::Client::updateTrayIcon
static bool updateTrayIcon(const String &wndName)
TelEngine::Client::closeDialog
virtual bool closeDialog(const String &name, Window *wnd, Window *skip=0)
TelEngine::Client::callAnswer
void callAnswer(const String &id, bool setActive=true)
TelEngine::Client::plain2html
static void plain2html(String &buf, bool spaceEol=false)
TelEngine::Client::createObject
virtual bool createObject(void **dest, const String &type, const char *name, NamedList *params=0)
TelEngine::Client::unlock
virtual void unlock()=0
TelEngine::Client::removeMenu
bool removeMenu(const NamedList &params, Window *wnd=0, Window *skip=0)
TelEngine::Client::valid
static bool valid()
Definition yatecbase.h:1544
TelEngine::Client::chooseFile
virtual bool chooseFile(Window *parent, NamedList &params)
Definition yatecbase.h:1582
TelEngine::Client::callIncoming
bool callIncoming(Message &msg, const String &dest)
TelEngine::Client::addLines
bool addLines(const String &name, const NamedList *lines, unsigned int max, bool atStart=false, Window *wnd=0, Window *skip=0)
TelEngine::Client::appendEscape
static void appendEscape(String &buf, ObjList &list, char sep=',', bool force=false)
TelEngine::Client::openUrl
virtual bool openUrl(const String &url)=0
TelEngine::Client::removeTrayIcon
static bool removeTrayIcon(const String &wndName, const String &name)
TelEngine::Client::ClientToggle
ClientToggle
Definition yatecbase.h:1030
TelEngine::Client::imRouting
virtual bool imRouting(Message &msg)
Definition yatecbase.h:1626
TelEngine::Client::buildUserRoster
static Message * buildUserRoster(bool update, const String &account, const String &contact, const char *proto=0)
TelEngine::Client::getLastNameInPath
static bool getLastNameInPath(String &dest, const String &path, char sep=0)
TelEngine::Client::setParams
bool setParams(const NamedList *params, Window *wnd=0, Window *skip=0)
TelEngine::Client::select
virtual bool select(Window *wnd, const String &name, const NamedList &items)
TelEngine::Client::startup
virtual bool startup()
TelEngine::Client::decodeFlags
static int decodeFlags(const TokenDict *dict, const String &flags, int defVal=0)
TelEngine::Client::buildSubscribe
static Message * buildSubscribe(bool request, bool ok, const String &account, const String &contact, const char *proto=0)
TelEngine::Client::callTerminate
void callTerminate(const String &id, const char *reason=0, const char *error=0)
TelEngine::Client::getActiveChannel
ClientChannel * getActiveChannel()
TelEngine::Client::getText
bool getText(const String &name, String &text, bool richText=false, Window *wnd=0, Window *skip=0)
TelEngine::Client::lockOther
void lockOther()
Definition yatecbase.h:1106
TelEngine::Client::buildNotify
static Message * buildNotify(bool online, const String &account, const ClientResource *from=0)
TelEngine::Client::run
virtual void run()
TelEngine::Client::MsgID
MsgID
Definition yatecbase.h:1004
TelEngine::Client::installRelay
void installRelay(const char *name, int id, int prio)
TelEngine::Client::postpone
bool postpone(const Message &msg, int id, bool copyUserData=false)
TelEngine::Client::decodeFlags
static int decodeFlags(const TokenDict *dict, const NamedList &params, const String &prefix=String::empty())
TelEngine::Client::Client
Client(const char *name=0)
TelEngine::Client::createDefaultLogic
virtual ClientLogic * createDefaultLogic()
TelEngine::Client::getActive
static bool getActive(const String &name)
TelEngine::Client::main
virtual void main()=0
TelEngine::Client::getBoolOpt
bool getBoolOpt(ClientToggle toggle)
Definition yatecbase.h:1729
TelEngine::Client::generateGuid
static void generateGuid(String &buf, const String &extra=String::empty())
TelEngine::Client::lock
virtual void lock()=0
TelEngine::Client::received
virtual bool received(Message &msg, int id)
TelEngine::Client::createWindowSafe
virtual bool createWindowSafe(const String &name, const String &alias=String::empty())
TelEngine::Client::fixPhoneNumber
static void fixPhoneNumber(String &number, const char *chars=0)
TelEngine::Client::buildIncomingChannel
virtual bool buildIncomingChannel(Message &msg, const String &dest)
TelEngine::Client::splitUnescape
static ObjList * splitUnescape(const String &buf, char sep=',', bool emptyOk=false)
TelEngine::Client::emitDigit
bool emitDigit(char digit, const String &id=String::empty())
Definition yatecbase.h:1719
TelEngine::Client::getProperty
virtual bool getProperty(const String &name, const String &item, String &value, Window *wnd=0, Window *skip=0)
TelEngine::Client::addLogic
static bool addLogic(ClientLogic *logic)
TelEngine::Client::quit
virtual void quit()=0
TelEngine::Client::line
int line() const
Definition yatecbase.h:1302
TelEngine::Client::backspace
virtual bool backspace(const String &name, Window *wnd=0)
TelEngine::Client::callRouting
virtual bool callRouting(Message &msg)
Definition yatecbase.h:1619
TelEngine::Client::setImageFit
virtual bool setImageFit(const String &name, const String &image, Window *wnd=0, Window *skip=0)
TelEngine::Client::removeLastNameInPath
static bool removeLastNameInPath(String &dest, const String &path, char sep=0, const String &equalOnly=String::empty())
TelEngine::Client::~Client
virtual ~Client()
TelEngine::Client::insertTableRow
bool insertTableRow(const String &name, const String &item, const String &before, const NamedList *data=0, Window *wnd=0, Window *skip=0)
TelEngine::Client::updateTableRow
bool updateTableRow(const String &name, const String &item, const NamedList *data=0, bool atStart=false, Window *wnd=0, Window *skip=0)
TelEngine::Client::addToLog
virtual bool addToLog(const String &text)
TelEngine::Client::ringer
virtual bool ringer(bool in, bool on)
TelEngine::Client::debugHook
virtual bool debugHook(bool active)
TelEngine::Client::removeChars
static void removeChars(String &buf, const char *chars)
TelEngine::Client::setStatus
virtual bool setStatus(const String &text, Window *wnd=0)
TelEngine::Client::removeLogic
static void removeLogic(ClientLogic *logic)
TelEngine::Client::addToLogFormatted
static bool addToLogFormatted(const char *format,...)
TelEngine::Client::imExecute
virtual bool imExecute(Message &msg)
TelEngine::Client::createSound
virtual bool createSound(const char *name, const char *file, const char *device=0)
Definition yatecbase.h:1702
TelEngine::Client::addPathSep
static void addPathSep(String &dest, const String &path, char sep=0)
TelEngine::Client::setMultipleRows
bool setMultipleRows(const String &name, const NamedList &data, const String &prefix=String::empty(), Window *wnd=0, Window *skip=0)
TelEngine::Client::eventMessage
static Message * eventMessage(const String &event, Window *wnd=0, const char *name=0, NamedList *params=0)
TelEngine::Client::setProperty
virtual bool setProperty(const String &name, const String &item, const String &value, Window *wnd=0, Window *skip=0)
TelEngine::Client::buildOutgoingChannel
virtual bool buildOutgoingChannel(NamedList &params)
TelEngine::Client::getBoolOpt
static ClientToggle getBoolOpt(const String &name)
TelEngine::Client::setStatusLocked
bool setStatusLocked(const String &text, Window *wnd=0)
TelEngine::Client::loadUI
void loadUI(const char *file=0, bool init=true)
TelEngine::Client::setImage
virtual bool setImage(const String &name, const String &image, Window *wnd=0, Window *skip=0)
TelEngine::Client::save
static bool save(Configuration &cfg, Window *parent=0, bool showErr=true)
TelEngine::Client::TrayIconType
TrayIconType
Definition yatecbase.h:1053
TelEngine::Client::findLogic
static ClientLogic * findLogic(const String &name)
TelEngine::Client::toggle
virtual bool toggle(Window *wnd, const String &name, bool active)
TelEngine::Client::setLogicsTick
static void setLogicsTick()
Definition yatecbase.h:1862
TelEngine::Client::createDialog
virtual bool createDialog(const String &name, Window *parent, const String &title, const String &alias=String::empty(), const NamedList *params=0)
TelEngine::Client::getOptions
virtual bool getOptions(const String &name, NamedList *items, Window *wnd=0, Window *skip=0)
TelEngine::Client::line
void line(int newLine)
TelEngine::Client::buildMenu
bool buildMenu(const NamedList &params, Window *wnd=0, Window *skip=0)
TelEngine::Client::allHidden
virtual void allHidden()=0
TelEngine::Client::findParamByValue
static NamedString * findParamByValue(NamedList &list, const String &value, NamedString *skip=0)
TelEngine::Client::setBusy
bool setBusy(const String &name, bool on, Window *wnd=0, Window *skip=0)
TelEngine::Client::unlockOther
void unlockOther()
Definition yatecbase.h:1112
TelEngine::Client::setBoolOpt
bool setBoolOpt(ClientToggle toggle, bool value, bool updateUi=false)
TelEngine::Client::select
virtual bool select(Window *wnd, const String &name, const String &item, const String &text=String::empty())
TelEngine::Client::buildMessage
static Message * buildMessage(const char *msg, const String &account, const char *oper=0)
TelEngine::Client::exiting
static bool exiting()
Definition yatecbase.h:1757
TelEngine::Client::openUrlSafe
bool openUrlSafe(const String &url)
TelEngine::Client::removeEndsWithPathSep
static bool removeEndsWithPathSep(String &dest, const String &path, char sep=0)
TelEngine::Client::emitDigits
bool emitDigits(const char *digits, const String &id=String::empty())
TelEngine::Configuration
Configuration file handling.
Definition yatengine.h:41
TelEngine::DefaultLogic
The client's default logic.
Definition yatecbase.h:3234
TelEngine::DefaultLogic::delContact
virtual bool delContact(const String &contact, Window *wnd=0)
TelEngine::DefaultLogic::setClientParam
virtual bool setClientParam(const String &param, const String &value, bool save, bool update)
TelEngine::DefaultLogic::handleUserLogin
virtual bool handleUserLogin(Message &msg, bool &stopLogic)
TelEngine::DefaultLogic::updateSelectedChannel
virtual void updateSelectedChannel(const String *item=0)
TelEngine::DefaultLogic::DefaultLogic
DefaultLogic(const char *name="default", int prio=-100)
TelEngine::DefaultLogic::callLogDelete
virtual bool callLogDelete(const String &billid)
TelEngine::DefaultLogic::notifyNoAudio
virtual void notifyNoAudio(bool show, bool micOk=false, bool speakerOk=false, ClientChannel *chan=0)
TelEngine::DefaultLogic::acceptContact
virtual bool acceptContact(NamedList *params, Window *wnd=0)
TelEngine::DefaultLogic::closeInCallNotification
virtual void closeInCallNotification(const String &id)
TelEngine::DefaultLogic::action
virtual bool action(Window *wnd, const String &name, NamedList *params=0)
TelEngine::DefaultLogic::imIncoming
virtual bool imIncoming(Message &msg)
TelEngine::DefaultLogic::initializedWindows
virtual void initializedWindows()
TelEngine::DefaultLogic::callIncoming
virtual bool callIncoming(Message &msg, const String &dest)
TelEngine::DefaultLogic::handleFileTransferNotify
virtual bool handleFileTransferNotify(Message &msg, bool &stopLogic)
TelEngine::DefaultLogic::updateAccount
virtual bool updateAccount(const NamedList &account, bool login, bool save)
TelEngine::DefaultLogic::handleUserRoster
virtual bool handleUserRoster(Message &msg, bool &stopLogic)
TelEngine::DefaultLogic::handleResourceSubscribe
virtual bool handleResourceSubscribe(Message &msg, bool &stopLogic)
TelEngine::DefaultLogic::callLogCreateContact
virtual bool callLogCreateContact(const String &billid)
TelEngine::DefaultLogic::idleTimerTick
virtual void idleTimerTick(Time &time)
TelEngine::DefaultLogic::fillLogContactActive
virtual void fillLogContactActive(NamedList &list, bool active, const String *item=0)
TelEngine::DefaultLogic::handleTextChanged
virtual bool handleTextChanged(NamedList *params, Window *wnd)
TelEngine::DefaultLogic::channelSelectionChanged
virtual void channelSelectionChanged(const String &old)
TelEngine::DefaultLogic::loadedWindows
virtual void loadedWindows()
Definition yatecbase.h:3494
TelEngine::DefaultLogic::deleteSelectedItem
virtual bool deleteSelectedItem(const String &action, Window *wnd, bool checked=false)
TelEngine::DefaultLogic::select
virtual bool select(Window *wnd, const String &name, const NamedList &items)
TelEngine::DefaultLogic::~DefaultLogic
~DefaultLogic()
TelEngine::DefaultLogic::editAccount
virtual bool editAccount(bool newAcc, NamedList *params, Window *wnd=0)
TelEngine::DefaultLogic::joinRoom
virtual void joinRoom(MucRoom *room, bool force=false)
TelEngine::DefaultLogic::handleCallCdr
virtual bool handleCallCdr(Message &msg, bool &stopLogic)
TelEngine::DefaultLogic::callLogClear
virtual bool callLogClear(const String &table, const String &direction)
TelEngine::DefaultLogic::handleClientChanUpdate
virtual bool handleClientChanUpdate(Message &msg, bool &stopLogic)
TelEngine::DefaultLogic::loginAccount
virtual bool loginAccount(const NamedList &account, bool login)
TelEngine::DefaultLogic::deleteCheckedItems
virtual bool deleteCheckedItems(const String &list, Window *wnd, bool confirm)
TelEngine::DefaultLogic::clearList
virtual bool clearList(const String &action, Window *wnd)
TelEngine::DefaultLogic::callContact
virtual bool callContact(NamedList *params=0, Window *wnd=0)
TelEngine::DefaultLogic::delAccount
virtual bool delAccount(const String &account, Window *wnd=0)
TelEngine::DefaultLogic::callLogCall
virtual bool callLogCall(const String &billid, Window *wnd=0)
TelEngine::DefaultLogic::handleUiAction
virtual bool handleUiAction(Message &msg, bool &stopLogic)
TelEngine::DefaultLogic::updateProviders
virtual bool updateProviders(const NamedList &provider, bool save, bool update)
TelEngine::DefaultLogic::handleFileInfo
virtual bool handleFileInfo(Message &msg, bool &stopLogic)
TelEngine::DefaultLogic::fillCallStart
virtual bool fillCallStart(NamedList &p, Window *wnd=0)
TelEngine::DefaultLogic::handleResourceNotify
virtual bool handleResourceNotify(Message &msg, bool &stopLogic)
TelEngine::DefaultLogic::callLogUpdate
virtual bool callLogUpdate(const NamedList &params, bool save, bool update)
TelEngine::DefaultLogic::acceptAccount
virtual bool acceptAccount(NamedList *params, Window *wnd=0)
TelEngine::DefaultLogic::calltoLoaded
virtual bool calltoLoaded()
TelEngine::DefaultLogic::exitingClient
virtual void exitingClient()
TelEngine::DefaultLogic::buildAccountId
static String & buildAccountId(String &accId, const String &proto, const String &user, const String &host)
Definition yatecbase.h:3632
TelEngine::DefaultLogic::validateCall
virtual bool validateCall(NamedList &params, Window *wnd=0)
TelEngine::DefaultLogic::fillContactEditActive
virtual void fillContactEditActive(NamedList &list, bool active, const String *item=0, bool del=true)
TelEngine::DefaultLogic::defaultMsgHandler
virtual bool defaultMsgHandler(Message &msg, int id, bool &stopLogic)
TelEngine::DefaultLogic::updateContact
virtual bool updateContact(const NamedList &contact, bool save, bool update)
TelEngine::DefaultLogic::deleteItem
virtual bool deleteItem(const String &list, const String &item, Window *wnd, bool confirm)
TelEngine::DefaultLogic::handleUserNotify
virtual bool handleUserNotify(Message &msg, bool &stopLogic)
TelEngine::DefaultLogic::help
virtual bool help(const String &action, Window *wnd)
TelEngine::DefaultLogic::handleFileTransferAction
virtual bool handleFileTransferAction(const String &name, Window *wnd, NamedList *params=0)
TelEngine::DefaultLogic::editContact
virtual bool editContact(bool newCont, NamedList *params=0, Window *wnd=0)
TelEngine::DefaultLogic::digitPressed
virtual bool digitPressed(NamedList &params, Window *wnd=0)
TelEngine::DefaultLogic::toggle
virtual bool toggle(Window *wnd, const String &name, bool active)
TelEngine::DefaultLogic::handleUserData
virtual bool handleUserData(Message &msg, bool &stopLogic)
TelEngine::DefaultLogic::notifyGenericError
virtual void notifyGenericError(const String &text, const String &account=String::empty(), const String &contact=String::empty(), const char *title="Error")
TelEngine::DefaultLogic::handleContactInfo
virtual bool handleContactInfo(Message &msg, bool &stopLogic)
TelEngine::DefaultLogic::enableCallActions
virtual bool enableCallActions(const String &id)
TelEngine::DefaultLogic::select
virtual bool select(Window *wnd, const String &name, const String &item, const String &text=String::empty())
TelEngine::DefaultLogic::showInCallNotification
virtual void showInCallNotification(ClientChannel *chan)
TelEngine::DefaultLogic::engineStart
virtual void engineStart(Message &msg)
TelEngine::DefaultLogic::callStart
virtual bool callStart(NamedList &params, Window *wnd=0, const String &cmd=String::empty())
TelEngine::DefaultLogic::initializedClient
virtual bool initializedClient()
TelEngine::DefaultLogic::updateChatRoomsContactList
virtual void updateChatRoomsContactList(bool load, ClientAccount *acc, MucRoom *room=0)
TelEngine::Driver
A Channel driver module.
Definition yatephone.h:2285
TelEngine::DurationUpdate
An UI time updater.
Definition yatecbase.h:5477
TelEngine::DurationUpdate::buildTimeString
static unsigned int buildTimeString(String &dest, unsigned int secStart, unsigned int secNow, bool force=false)
TelEngine::DurationUpdate::buildTimeParam
static unsigned int buildTimeParam(NamedList &dest, const char *param, unsigned int secStart, unsigned int secNow, bool force=false)
TelEngine::DurationUpdate::destroyed
virtual void destroyed()
TelEngine::DurationUpdate::buildTimeString
virtual unsigned int buildTimeString(String &dest, unsigned int secNow, bool force=false)
TelEngine::DurationUpdate::update
virtual unsigned int update(unsigned int secNow, const String *table=0, Window *wnd=0, Window *skip=0, bool force=false)
TelEngine::DurationUpdate::DurationUpdate
DurationUpdate(ClientLogic *logic, bool owner, const char *id, const char *name, unsigned int start=Time::secNow())
Definition yatecbase.h:5489
TelEngine::DurationUpdate::setLogic
void setLogic(ClientLogic *logic=0, bool owner=true)
TelEngine::DurationUpdate::~DurationUpdate
virtual ~DurationUpdate()
TelEngine::DurationUpdate::toString
virtual const String & toString() const
TelEngine::DurationUpdate::buildTimeParam
virtual unsigned int buildTimeParam(NamedList &dest, unsigned int secNow, bool force=false)
TelEngine::Engine::exiting
static bool exiting()
Definition yatengine.h:1684
TelEngine::Flags32
A 32 bit length list of flags.
Definition yatecbase.h:65
TelEngine::Flags32::changeFlagCheck
bool changeFlagCheck(u_int32_t mask, bool ok)
Definition yatecbase.h:129
TelEngine::Flags32::operator=
const Flags32 & operator=(int value)
Definition yatecbase.h:152
TelEngine::Flags32::change
void change(u_int32_t value)
Definition yatecbase.h:140
TelEngine::Flags32::reset
void reset(u_int32_t mask)
Definition yatecbase.h:100
TelEngine::Flags32::changeFlag
void changeFlag(u_int32_t mask, bool on)
Definition yatecbase.h:116
TelEngine::Flags32::set
void set(u_int32_t mask)
Definition yatecbase.h:93
TelEngine::Flags32::flags
u_int32_t flags() const
Definition yatecbase.h:86
TelEngine::Flags32::Flags32
Flags32()
Definition yatecbase.h:70
TelEngine::Flags32::flag
u_int32_t flag(u_int32_t mask) const
Definition yatecbase.h:108
TelEngine::Flags32::Flags32
Flags32(u_int32_t value)
Definition yatecbase.h:78
TelEngine::MessageReceiver
A multiple message receiver.
Definition yatengine.h:806
TelEngine::Message
A message container class.
Definition yatengine.h:380
TelEngine::Message::userObject
void * userObject(const String &name) const
Definition yatengine.h:453
TelEngine::MucRoomMember
A MUC room member.
Definition yatecbase.h:5108
TelEngine::MucRoomMember::s_affName
static const TokenDict s_affName[]
Definition yatecbase.h:5149
TelEngine::MucRoomMember::Affiliation
Affiliation
Definition yatecbase.h:5115
TelEngine::MucRoomMember::MucRoomMember
MucRoomMember(const char *id, const char *nick, const char *uri=0)
Definition yatecbase.h:5141
TelEngine::MucRoomMember::s_roleName
static const TokenDict s_roleName[]
Definition yatecbase.h:5154
TelEngine::MucRoomMember::Role
Role
Definition yatecbase.h:5127
TelEngine::MucRoom
An account's MUC room contact.
Definition yatecbase.h:5172
TelEngine::MucRoom::showChat
virtual bool showChat(const String &id, bool visible, bool active=false)
TelEngine::MucRoom::destroyChatWindow
void destroyChatWindow(const String &id=String::empty())
TelEngine::MucRoom::destroyed
virtual void destroyed()
TelEngine::MucRoom::canBan
bool canBan(MucRoomMember *member) const
TelEngine::MucRoom::findMemberById
MucRoomMember * findMemberById(const String &id)
TelEngine::MucRoom::getChatHistory
virtual void getChatHistory(const String &id, String &text, bool richText=false, const String &name="history")
TelEngine::MucRoom::MucRoom
MucRoom(ClientAccount *owner, const char *id, const char *name, const char *uri, const char *nick=0)
TelEngine::MucRoom::canChangeSubject
bool canChangeSubject() const
Definition yatecbase.h:5237
TelEngine::MucRoom::addChatHistory
virtual void addChatHistory(const String &id, const String &what, NamedList *&params, const String &name="history")
TelEngine::MucRoom::findMember
MucRoomMember * findMember(const String &contact, const String &instance)
TelEngine::MucRoom::buildJoin
Message * buildJoin(bool join, bool history=true, unsigned int sNewer=0)
TelEngine::MucRoom::canChatPrivate
bool canChatPrivate() const
Definition yatecbase.h:5230
TelEngine::MucRoom::canKick
bool canKick(MucRoomMember *member) const
TelEngine::MucRoom::findMember
MucRoomMember * findMember(const String &nick)
TelEngine::MucRoom::updateChatWindow
virtual void updateChatWindow(const String &id, const NamedList &params)
TelEngine::MucRoom::createChatWindow
virtual void createChatWindow(const String &id, bool force=false, const char *name=0)
TelEngine::MucRoom::removeResource
virtual bool removeResource(const String &nick, bool delChat=false)
TelEngine::MucRoom::getChatInput
virtual void getChatInput(const String &id, String &text, const String &name="message")
TelEngine::MucRoom::resource
MucRoomMember & resource()
Definition yatecbase.h:5191
TelEngine::MucRoom::hasChat
bool hasChat(const String &id)
TelEngine::MucRoom::available
bool available() const
Definition yatecbase.h:5214
TelEngine::MucRoom::canInvite
bool canInvite() const
Definition yatecbase.h:5244
TelEngine::MucRoom::setChatHistory
virtual void setChatHistory(const String &id, const String &text, bool richText=false, const String &name="history")
TelEngine::MucRoom::findResource
virtual ClientResource * findResource(const String &id, bool ref=false)
TelEngine::MucRoom::canChat
bool canChat() const
Definition yatecbase.h:5223
TelEngine::MucRoom::insertResource
virtual bool insertResource(ClientResource *res)
Definition yatecbase.h:5446
TelEngine::MucRoom::ownMember
bool ownMember(const String &item) const
Definition yatecbase.h:5207
TelEngine::MucRoom::buildMucRoom
Message * buildMucRoom(const char *oper)
Definition yatecbase.h:5266
TelEngine::MucRoom::flashChat
virtual void flashChat(const String &id, bool on=true)
TelEngine::MucRoom::status
virtual ClientResource * status(bool ref=false)
Definition yatecbase.h:5293
TelEngine::MucRoom::isChatActive
virtual bool isChatActive(const String &id)
TelEngine::MucRoom::setChatProperty
virtual void setChatProperty(const String &id, const String &name, const String &prop, const String &value)
TelEngine::MucRoom::mucRoom
virtual MucRoom * mucRoom()
Definition yatecbase.h:5285
TelEngine::MucRoom::m_password
String m_password
Definition yatecbase.h:5460
TelEngine::MucRoom::setChatInput
virtual void setChatInput(const String &id, const String &text=String::empty(), const String &name="message")
TelEngine::MucRoom::ownMember
bool ownMember(MucRoomMember *item) const
Definition yatecbase.h:5199
TelEngine::MucRoom::appendResource
virtual ClientResource * appendResource(const String &nick)
TelEngine::NamedInt
A named integer value.
Definition yatecbase.h:164
TelEngine::NamedInt::clearValue
static void clearValue(ObjList &list, int val)
TelEngine::NamedInt::lookup
static int lookup(const ObjList &list, const String &name, int defVal=0)
Definition yatecbase.h:219
TelEngine::NamedInt::lookupName
static const String & lookupName(const ObjList &list, int val, const String &defVal=String::empty())
Definition yatecbase.h:231
TelEngine::NamedInt::value
int value() const
Definition yatecbase.h:188
TelEngine::NamedInt::addToListUniqueName
static void addToListUniqueName(ObjList &list, NamedInt *obj)
TelEngine::NamedInt::NamedInt
NamedInt(const char *name, int val=0)
Definition yatecbase.h:172
TelEngine::NamedInt::setValue
void setValue(int val)
Definition yatecbase.h:195
TelEngine::NamedInt::NamedInt
NamedInt(const NamedInt &other)
Definition yatecbase.h:180
TelEngine::UIFactory
A static user interface creator.
Definition yatecbase.h:939
TelEngine::UIFactory::canBuild
bool canBuild(const String &type)
Definition yatecbase.h:958
TelEngine::UIFactory::build
static void * build(const String &type, const char *name, NamedList *params=0, const char *factory=0)
TelEngine::UIFactory::~UIFactory
virtual ~UIFactory()
TelEngine::UIFactory::UIFactory
UIFactory(const char *name)
TelEngine::UIFactory::create
virtual void * create(const String &type, const char *name, NamedList *params=0)=0
TelEngine::UIWidget
Definition yatecbase.h:755
TelEngine::UIWidget::UIWidget
UIWidget(const char *name=0)
Definition yatecbase.h:763
TelEngine::UIWidget::addLines
virtual bool addLines(const NamedList &lines, unsigned int max, bool atStart=false)
Definition yatecbase.h:903
TelEngine::UIWidget::getOptions
virtual bool getOptions(NamedList &items)
Definition yatecbase.h:793
TelEngine::UIWidget::updateTableRows
virtual bool updateTableRows(const NamedList *data, bool atStart=false)
Definition yatecbase.h:825
TelEngine::UIWidget::getTableRow
virtual bool getTableRow(const String &item, NamedList *data=0)
Definition yatecbase.h:862
TelEngine::UIWidget::~UIWidget
virtual ~UIWidget()
Definition yatecbase.h:770
TelEngine::UIWidget::clearTable
virtual bool clearTable()
Definition yatecbase.h:869
TelEngine::UIWidget::setMultipleRows
virtual bool setMultipleRows(const NamedList &data, const String &prefix=String::empty())
Definition yatecbase.h:812
TelEngine::UIWidget::getText
virtual bool getText(String &text, bool richText=false)
Definition yatecbase.h:921
TelEngine::UIWidget::delTableRow
virtual bool delTableRow(const String &item)
Definition yatecbase.h:844
TelEngine::UIWidget::addTableRow
virtual bool addTableRow(const String &item, const NamedList *data=0, bool atStart=false)
Definition yatecbase.h:803
TelEngine::UIWidget::getSelect
virtual bool getSelect(NamedList &items)
Definition yatecbase.h:893
TelEngine::UIWidget::insertTableRow
virtual bool insertTableRow(const String &item, const String &before, const NamedList *data=0)
Definition yatecbase.h:835
TelEngine::UIWidget::name
const String & name() const
Definition yatecbase.h:777
TelEngine::UIWidget::setText
virtual bool setText(const String &text, bool richText=false)
Definition yatecbase.h:912
TelEngine::UIWidget::setParams
virtual bool setParams(const NamedList &params)
Definition yatecbase.h:785
TelEngine::UIWidget::getSelect
virtual bool getSelect(String &item)
Definition yatecbase.h:885
TelEngine::UIWidget::setBusy
virtual bool setBusy(bool on)
Definition yatecbase.h:929
TelEngine::UIWidget::setSelect
virtual bool setSelect(const String &item)
Definition yatecbase.h:877
TelEngine::UIWidget::setTableRow
virtual bool setTableRow(const String &item, const NamedList *data)
Definition yatecbase.h:853
TelEngine::Window
An abstract user interface window.
Definition yatecbase.h:254
TelEngine::Window::init
void init()
Definition yatecbase.h:600
TelEngine::Window::setProperty
virtual bool setProperty(const String &name, const String &item, const String &value)
Definition yatecbase.h:574
TelEngine::Window::moveRel
virtual void moveRel(int dx, int dy)=0
TelEngine::Window::master
bool master() const
Definition yatecbase.h:700
TelEngine::Window::addOption
virtual bool addOption(const String &name, const String &item, bool atStart=false, const String &text=String::empty())=0
TelEngine::Window::setUrgent
virtual bool setUrgent(const String &name, bool urgent)=0
TelEngine::Window::addTableRow
virtual bool addTableRow(const String &name, const String &item, const NamedList *data=0, bool atStart=false)
TelEngine::Window::context
const String & context() const
Definition yatecbase.h:672
TelEngine::Window::setOver
virtual void setOver(const Window *parent)=0
TelEngine::Window::buildMenu
virtual bool buildMenu(const NamedList &params)=0
TelEngine::Window::visible
bool visible() const
Definition yatecbase.h:679
TelEngine::Window::setImage
virtual bool setImage(const String &name, const String &image, bool fit=false)=0
TelEngine::Window::setTableRow
virtual bool setTableRow(const String &name, const String &item, const NamedList *data)
TelEngine::Window::popup
bool popup() const
Definition yatecbase.h:707
TelEngine::Window::setShow
virtual bool setShow(const String &name, bool visible)=0
TelEngine::Window::move
virtual void move(int x, int y)=0
TelEngine::Window::getSelect
virtual bool getSelect(const String &name, NamedList &items)=0
TelEngine::Window::delTableRow
virtual bool delTableRow(const String &name, const String &item)
TelEngine::Window::getOptions
virtual bool getOptions(const String &name, NamedList *items)=0
TelEngine::Window::addLines
virtual bool addLines(const String &name, const NamedList *lines, unsigned int max, bool atStart=false)
TelEngine::Window::updateTableRows
virtual bool updateTableRows(const String &name, const NamedList *data, bool atStart=false)
TelEngine::Window::updateTableRow
virtual bool updateTableRow(const String &name, const String &item, const NamedList *data=0, bool atStart=false)
TelEngine::Window::setText
virtual bool setText(const String &name, const String &text, bool richText=false)=0
TelEngine::Window::id
const String & id() const
Definition yatecbase.h:658
TelEngine::Window::setBusy
virtual bool setBusy(const String &name, bool on)=0
TelEngine::Window::setFocus
virtual bool setFocus(const String &name, bool select=false)=0
TelEngine::Window::hide
virtual void hide()=0
TelEngine::Window::isValidParamPrefix
static bool isValidParamPrefix(const String &prefix)
TelEngine::Window::setSelect
virtual bool setSelect(const String &name, const String &item)=0
TelEngine::Window::size
virtual void size(int width, int height)=0
TelEngine::Window::setMultipleRows
virtual bool setMultipleRows(const String &name, const NamedList &data, const String &prefix=String::empty())
TelEngine::Window::getProperty
virtual bool getProperty(const String &name, const String &item, String &value)
Definition yatecbase.h:584
TelEngine::Window::getCheck
virtual bool getCheck(const String &name, bool &checked)=0
TelEngine::Window::createDialog
virtual bool createDialog(const String &name, const String &title, const String &alias=String::empty(), const NamedList *params=0)=0
TelEngine::Window::delOption
virtual bool delOption(const String &name, const String &item)=0
TelEngine::Window::canClose
virtual bool canClose()
Definition yatecbase.h:651
TelEngine::Window::insertTableRow
virtual bool insertTableRow(const String &name, const String &item, const String &before, const NamedList *data=0)
TelEngine::Window::getSelect
virtual bool getSelect(const String &name, String &item)=0
TelEngine::Window::toString
virtual const String & toString() const
TelEngine::Window::hasOption
virtual bool hasOption(const String &name, const String &item)=0
TelEngine::Window::removeMenu
virtual bool removeMenu(const NamedList &params)=0
TelEngine::Window::related
virtual bool related(const Window *wnd) const
TelEngine::Window::clearTable
virtual bool clearTable(const String &name)
TelEngine::Window::hasElement
virtual bool hasElement(const String &name)=0
TelEngine::Window::getText
virtual bool getText(const String &name, String &text, bool richText=false)=0
TelEngine::Window::setParams
virtual bool setParams(const NamedList &params)
TelEngine::Window::populate
void populate()
Definition yatecbase.h:590
TelEngine::Window::show
virtual void show()=0
TelEngine::Window::context
virtual void context(const String &text)
TelEngine::Window::Window
Window(const char *id=0)
TelEngine::Window::visible
void visible(bool yes)
Definition yatecbase.h:686
TelEngine::Window::active
bool active() const
Definition yatecbase.h:693
TelEngine::Window::~Window
virtual ~Window()
TelEngine::Window::getTableRow
virtual bool getTableRow(const String &name, const String &item, NamedList *data=0)
TelEngine::Window::setCheck
virtual bool setCheck(const String &name, bool checked)=0
TelEngine::Window::closeDialog
virtual bool closeDialog(const String &name)=0
TelEngine::Window::setActive
virtual bool setActive(const String &name, bool active)=0
Thread
Thread support class.
Definition yateclass.h:10192
Thread::current
static Thread * current()
Time
A time holding class.
Definition yateclass.h:5764
Time::secNow
static u_int32_t secNow()
URI
Encapsulation for an URI.
Definition yateclass.h:8326
TelEngine
Definition yatemime.h:34
TokenDict
Definition yateclass.h:891