1 #ifndef __ABSTRACTHOOK_H__ 2 #define __ABSTRACTHOOK_H__ 3 4 #include "imcontact.h" 5 #include "imevents.h" 6 #include "imcontroller.h" 7 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 38 }; 39 }; 40 41 struct servicetype { 42 enum enumeration { 43 search, 44 registration, 45 groupchat 46 }; 47 }; 48 49 class abstracthook { 50 public: 51 enum logevent { 52 logConnecting, 53 logLogged, 54 logSearchFinished, 55 logPasswordChanged, 56 logDisconnected, 57 logContactAdd, 58 logContactRemove, 59 logConfMembers 60 }; 61 62 protected: 63 enum Encoding { 64 encUTF, encKOI, encUnknown 65 }; 66 67 protocolname proto; 68 imstatus manualstatus; 69 verticalmenu *searchdest; 70 set<hookcapab::enumeration> fcapabs; 71 vector<icqcontact *> foundguys; 72 73 string rusconv(const string &tdir, const string &text); 74 string rushtmlconv(const string &tdir, const string &text, bool rus = true); 75 string ruscrlfconv(const string &tdir, const string &text); 76 77 void requestfromfound(const imcontact &ic); 78 void log(logevent ev, ...); 79 80 struct Country_struct { 81 char *name; 82 unsigned short code; 83 }; 84 85 public: 86 static const unsigned char Language_table_size; 87 static const char* const Language_table[]; 88 static const unsigned short Country_table_size; 89 static const Country_struct Country_table[]; 90 91 static string getCountryIDtoString(unsigned short id); 92 static unsigned short getCountryByName(string name); 93 static signed char getSystemTimezone(); 94 static string getInterestsIDtoString(unsigned char id); 95 static string getBackgroundIDtoString(unsigned short id); 96 static string getTimezoneIDtoString(signed char id); 97 static string getTimezonetoLocaltime(signed char id); 98 static string getLanguageIDtoString(unsigned char id); 99 static string getmd5(const string &text); 100 101 public: 102 abstracthook(protocolname aproto); 103 virtual ~abstracthook(); 104 105 virtual void init(); 106 107 virtual void connect(); 108 virtual void disconnect(); 109 virtual void exectimers(); 110 virtual void main(); 111 112 virtual void getsockets(fd_set &rfds, fd_set &wfds, fd_set &efds, int &hsocket) const; 113 virtual bool isoursocket(fd_set &rfds, fd_set &wfds, fd_set &efds) const; 114 115 virtual bool online() const; 116 virtual bool logged() const; 117 virtual bool isconnecting() const; 118 virtual bool enabled() const; 119 120 virtual bool send(const imevent &ev); 121 122 virtual void sendnewuser(const imcontact &c); 123 virtual void removeuser(const imcontact &ic); 124 125 virtual void setautostatus(imstatus st); 126 virtual void restorestatus(); 127 128 virtual void setstatus(imstatus st); 129 virtual imstatus getstatus() const; 130 getmanualstatus()131 virtual imstatus getmanualstatus() const 132 { return manualstatus; } 133 134 virtual bool isdirectopen(const imcontact &c) const; 135 virtual void requestinfo(const imcontact &c); 136 137 virtual void lookup(const imsearchparams ¶ms, verticalmenu &dest); 138 virtual void stoplookup(); 139 140 virtual void requestawaymsg(const imcontact &c); 141 virtual void requestversion(const imcontact &c); 142 virtual void ping(const imcontact &c); 143 getCapabs()144 set<hookcapab::enumeration> getCapabs() const 145 { return fcapabs; } 146 147 virtual void ouridchanged(const icqconf::imaccount &ia); 148 149 virtual bool knowntransfer(const imfile &fr) const; 150 virtual void replytransfer(const imfile &fr, bool accept, 151 const string &localpath = string()); 152 virtual void aborttransfer(const imfile &fr); 153 154 virtual void conferencecreate(const imcontact &confid, 155 const vector<imcontact> &lst); 156 157 virtual vector<string> getservices(servicetype::enumeration st) const; 158 159 virtual vector<pair<string, string> > getsearchparameters(const string &agentname) const; 160 virtual vector<pair<string, string> > getregparameters(const string &agentname) const; 161 162 virtual void updatecontact(icqcontact *c); 163 virtual void renamegroup(const string &oldname, const string &newname); 164 165 virtual bool regconnect(const string &aserv); 166 virtual bool regattempt(unsigned int &auin, const string &apassword, const string &email); 167 }; 168 169 abstracthook &gethook(protocolname pname); 170 struct tm *maketm(int hour, int minute, int day, int month, int year); 171 172 extern time_t timer_current; 173 174 #endif 175