Updating ChangeLog for 4.22.10
[centerim.git] / src / hooks / abstracthook.h
blob183885e97edd39610e41cbeed2f4424d581271a5
1 #ifndef __ABSTRACTHOOK_H__
2 #define __ABSTRACTHOOK_H__
4 #include "imcontact.h"
5 #include "imevents.h"
6 #include "imcontroller.h"
8 struct hookcapab {
9 enum enumeration {
10 urls,
11 files,
12 contacts,
13 authrequests,
14 authreqwithmessages,
15 fetchaway,
16 setaway,
17 setextstatus,
18 changenick,
19 changepassword,
20 changedetails,
21 changeabout,
22 optionalpassword,
23 visibility,
24 version,
25 ping,
26 conferencing,
27 conferencesaretemporary,
28 cltemporary,
29 directadd,
30 flexiblesearch,
31 flexiblereg,
32 ssl,
33 channelpasswords,
34 groupchatservices,
35 nochat,
36 acknowledgements,
37 pgp
41 struct servicetype {
42 enum enumeration {
43 search,
44 registration,
45 groupchat
49 class abstracthook {
50 protected:
51 enum Encoding {
52 encUTF, encKOI, encUnknown
55 enum logevent {
56 logConnecting,
57 logLogged,
58 logSearchFinished,
59 logPasswordChanged,
60 logDisconnected,
61 logContactAdd,
62 logContactRemove,
63 logConfMembers
66 protocolname proto;
67 imstatus manualstatus;
68 verticalmenu *searchdest;
69 set<hookcapab::enumeration> fcapabs;
70 vector<icqcontact *> foundguys;
72 string rusconv(const string &tdir, const string &text);
73 string rushtmlconv(const string &tdir, const string &text, bool rus = true);
74 string ruscrlfconv(const string &tdir, const string &text);
76 void requestfromfound(const imcontact &ic);
77 void log(logevent ev, ...);
79 struct Country_struct {
80 char *name;
81 unsigned short code;
84 public:
85 static const unsigned char Language_table_size;
86 static const char* const Language_table[];
87 static const unsigned short Country_table_size;
88 static const Country_struct Country_table[];
90 static string getCountryIDtoString(unsigned short id);
91 static unsigned short getCountryByName(string name);
92 static signed char getSystemTimezone();
93 static string getInterestsIDtoString(unsigned char id);
94 static string getBackgroundIDtoString(unsigned short id);
95 static string getTimezoneIDtoString(signed char id);
96 static string getTimezonetoLocaltime(signed char id);
97 static string getLanguageIDtoString(unsigned char id);
98 static string getmd5(const string &text);
100 public:
101 abstracthook(protocolname aproto);
102 virtual ~abstracthook();
104 virtual void init();
106 virtual void connect();
107 virtual void disconnect();
108 virtual void exectimers();
109 virtual void main();
111 virtual void getsockets(fd_set &rfds, fd_set &wfds, fd_set &efds, int &hsocket) const;
112 virtual bool isoursocket(fd_set &rfds, fd_set &wfds, fd_set &efds) const;
114 virtual bool online() const;
115 virtual bool logged() const;
116 virtual bool isconnecting() const;
117 virtual bool enabled() const;
119 virtual bool send(const imevent &ev);
121 virtual void sendnewuser(const imcontact &c);
122 virtual void removeuser(const imcontact &ic);
124 virtual void setautostatus(imstatus st);
125 virtual void restorestatus();
127 virtual void setstatus(imstatus st);
128 virtual imstatus getstatus() const;
130 virtual imstatus getmanualstatus() const
131 { return manualstatus; }
133 virtual bool isdirectopen(const imcontact &c) const;
134 virtual void requestinfo(const imcontact &c);
136 virtual void lookup(const imsearchparams &params, verticalmenu &dest);
137 virtual void stoplookup();
139 virtual void requestawaymsg(const imcontact &c);
140 virtual void requestversion(const imcontact &c);
141 virtual void ping(const imcontact &c);
143 set<hookcapab::enumeration> getCapabs() const
144 { return fcapabs; }
146 virtual void ouridchanged(const icqconf::imaccount &ia);
148 virtual bool knowntransfer(const imfile &fr) const;
149 virtual void replytransfer(const imfile &fr, bool accept,
150 const string &localpath = string());
151 virtual void aborttransfer(const imfile &fr);
153 virtual void conferencecreate(const imcontact &confid,
154 const vector<imcontact> &lst);
156 virtual vector<string> getservices(servicetype::enumeration st) const;
158 virtual vector<pair<string, string> > getsearchparameters(const string &agentname) const;
159 virtual vector<pair<string, string> > getregparameters(const string &agentname) const;
161 virtual void updatecontact(icqcontact *c);
162 virtual void renamegroup(const string &oldname, const string &newname);
164 virtual bool regconnect(const string &aserv);
165 virtual bool regattempt(unsigned int &auin, const string &apassword, const string &email);
168 abstracthook &gethook(protocolname pname);
169 struct tm *maketm(int hour, int minute, int day, int month, int year);
171 extern time_t timer_current;
173 #endif