7 #include "textinputline.h"
8 #include "texteditor.h"
9 #include "textbrowser.h"
10 #include "fileselector.h"
13 #include "icqcontact.h"
15 #include "imcontroller.h"
21 enum interfaceAction
{
22 ACT_QUIT
= -50, ACT_MSG
, ACT_URL
, ACT_STATUS
, ACT_REMOVE
, ACT_SMS
,
23 ACT_CHAT
, ACT_FIND
, ACT_INFO
, ACT_HISTORY
, ACT_IGNORE
, ACT_ADD
,
24 ACT_MENU
, ACT_IGNORELIST
, ACT_DETAILS
, ACT_GMENU
, ACT_CONF
, ACT_RENAME
,
25 ACT_PING
, ACT_EDITUSER
, ACT_VISIBLELIST
, ACT_INVISLIST
, ACT_QUICKFIND
,
26 ACT_FILE
, ACT_GROUPMOVE
, ACT_ORG_GROUPS
, ACT_HIDEOFFLINE
, ACT_FETCHAWAY
,
27 ACT_EMAIL
, ACT_AUTH
, ACT_CONTACT
, ACT_VERSION
, ACT_JOIN
, ACT_LEAVE
,
28 ACT_CONFER
, ACT_TRANSFERS
, ACT_JOINDIALOG
, ACT_EXTERN
, ACT_RSS
, ACT_LJ
,
29 ACT_MASS_MOVE
, ACT_PGPKEY
, ACT_PGPSWITCH
, ACT_OTR
, ACT_DUMMY
32 extern class centerim cicq
;
36 enum eventviewresult
{
37 ok
, next
, cancel
, forward
, reply
, open
, accept
, reject
, info
,
38 add
, prev
, eventviewresult_size
66 void log(const char *fmt
, ...);
67 void show(const string
&title
= "");
71 struct { int x1
, y1
, x2
, y2
; } sizeWArea
;
72 struct { int width
, height
; } sizeDlg
, sizeBigDlg
;
78 fileselector selector
;
82 vector
<string
> extractedurls
, lastlog
, fstatus
;
86 bool editdone
, mainscreenblock
, inited
, onlinefolder
,
87 dotermresize
, fneedupdate
, detailsfetched
, inchat
, doredraw
;
94 const imevent
*passevent
;
96 icqcontact
*last_selected
;
99 struct filetransferitem
{
102 transferstatus status
;
105 filetransferitem(const imfile
&afr
)
106 : btotal(0), bdone(0), fr(afr
) { }
109 vector
<filetransferitem
> transfers
;
112 static int editmsgkeys(texteditor
&e
, int k
);
113 static int editaboutkeys(texteditor
&e
, int k
);
114 static int contactskeys(verticalmenu
&m
, int k
);
115 static int multiplekeys(verticalmenu
&m
, int k
);
116 static int historykeys(dialogbox
&m
, int k
);
117 static int userinfokeys(dialogbox
&db
, int k
);
118 static int findreskeys(dialogbox
&db
, int k
);
119 static int eventviewkeys(dialogbox
&db
, int k
);
120 static int findpgpkeys(dialogbox
&db
, int k
);
121 static int statuskeys(verticalmenu
&m
, int k
);
122 static int fullscreenkeys(textbrowser
&m
, int k
);
124 static void editidle(texteditor
&e
);
125 static void textbrowseridle(textbrowser
&b
);
126 static void textinputidle(textinputline
&il
);
127 static void freeworkareabuf(void *p
);
128 static void detailsidle(dialogbox
&db
);
129 static void transferidle(dialogbox
&db
);
130 static void editchatidle(texteditor
&e
);
132 static const unsigned int MinPanelWidth
= 4;
133 static const unsigned int MinPanelHeight
= 4;
135 static void termresize(void);
137 void infoclear(dialogbox
&db
, icqcontact
*c
, const imcontact realdesc
);
138 void infogeneral(dialogbox
&db
, icqcontact
*c
);
139 void infohome(dialogbox
&db
, icqcontact
*c
);
140 void infowork(dialogbox
&db
, icqcontact
*c
);
141 void infointerests(dialogbox
&db
, icqcontact
*c
);
142 void infoabout(dialogbox
&db
, icqcontact
*c
);
144 void inforss(dialogbox
&db
, icqcontact
*c
);
145 void infolivejournal(dialogbox
&db
, icqcontact
*c
);
146 void infofriends(dialogbox
&db
, icqcontact
*c
);
147 void infoljrss(dialogbox
&db
, icqcontact
*c
);
149 void gendetails(treeview
*tree
, icqcontact
*c
= 0);
151 void selectgender(imgender
&f
);
152 void selectcountry(unsigned short &f
);
153 void selectlanguage(unsigned short &f
);
154 void selectagerange(ICQ2000::AgeRange
&r
);
155 void selectrandomgroup(unsigned short &f
);
157 enum spmode
{ spIMonly
, spIMplusRSS
, spnonIM
};
158 void selectproto(bool prots
[], spmode mode
= spIMonly
);
160 void workarealine(int l
, chtype c
= HLINE
);
162 void showextractedurls();
163 void extracturls(const string
&buf
);
165 int groupmanager(const string
&text
, bool sel
);
167 void renderchathistory();
168 bool sprofmanager(string
&name
, string
&act
);
169 void showeventbottom(const imcontact
&ic
);
171 void invokelist(string
&s
, vector
<string
> &v
, const string
&def
, textwindow
*w
);
172 bool setljparams(imxmlevent
*ev
);
173 void multichange(bool conv
[], bool newstate
);
175 string
extracttime(const imevent
&ev
);
176 void peerinfo(int line
, const imcontact
&ic
);
177 void findpgpkey(dialogbox
&db
, const vector
<string
> &items
);
179 string
getprotocolchar(protocolname pname
) const;
183 vector
<imcontact
> muins
;
191 static void menuidle(verticalmenu
&caller
);
192 static void dialogidle(dialogbox
&caller
);
194 string
getmenuitem(string mtext
, int width
, int key
, int section
);
195 string
getstatkey(int key
, int section
) const;
203 void clearworkarea();
205 void restoreworkarea();
207 void relaxedupdate();
208 bool updaterequested();
210 int key2action(int k
, int s
);
211 string
action2key(int a
, int s
, int n
= 1) const;
213 icqcontact
*find_next_chat();
214 bool next_chat(bool next
= true);
216 icqcontact
*mainloop(int &action
);
217 void fillcontactlist();
219 void log(const string
&text
);
220 void log(const char *fmt
, ...);
222 void status(const string
&text
);
223 void status(const char *fmt
, ...);
225 void xtermtitle(const string
&text
= "");
226 void xtermtitle(const char *fmt
, ...);
227 void xtermtitlereset();
229 bool changestatus(vector
<protocolname
> &pnames
, imstatus
&st
);
230 int contextmenu(icqcontact
*c
);
233 void modelist(contactstatus cs
);
235 bool multicontacts(const string
&head
= "",
236 const set
<protocolname
> &protos
= set
<protocolname
>(),
237 contactstatus cs
= csnone
);
239 void userinfo(const imcontact
&cinfo
, const imcontact
&realinfo
);
241 bool updateconf(icqconf::regsound
&s
, icqconf::regcolor
&c
);
243 bool finddialog(imsearchparams
&s
, findsubject subj
);
244 bool findresults(const imsearchparams
&sp
, bool auto = false);
247 bool conferencedialog(protocolname
&pname
, string
&name
);
249 bool updatedetails(icqcontact
*c
= 0, protocolname upname
= icq
);
250 bool sendfiles(const imcontact
&cinfo
, string
&msg
, linkedlist
&flist
);
252 void blockmainscreen();
253 void unblockmainscreen();
255 int ask(string q
, int options
, int deflt
= -1);
257 string
inputstr(const string
&q
, const string
&defl
= "", char passwdchar
= 0);
258 string
inputfile(const string
&q
, const string
&defl
= "");
259 string
inputdir(const string
&q
, const string
&defl
= "");
261 int getlastinputkey() const;
263 void quickfind(verticalmenu
*multi
= 0);
265 int selectgroup(const string
&text
);
267 void makeprotocolmenu(verticalmenu
&m
);
269 void organizegroups();
271 void histmake(const vector
<imevent
*> &hist
);
272 bool histexec(imevent
*&im
);
274 bool eventedit(imevent
&ev
);
276 eventviewresult
eventview(const imevent
*ev
,
277 vector
<eventviewresult
> abuttons
= vector
<eventviewresult
>(),
278 bool nobuttons
= false);
280 void fullscreenize(const imevent
*ev
);
282 bool edit(string
&txt
, const string
&header
);
283 bool chat(const imcontact
&ic
);
285 void transferupdate(const string
&fname
, const imfile
&fr
,
286 transferstatus st
, int btotal
, int bdone
);
288 void transfermonitor();
289 void userinfoexternal(const imcontact
&ic
);
291 bool selectpgpkey(string
&keyid
, bool secretonly
= false);
292 void leftpanelwidth_inc(const int inc
);
293 void logpanelheight_inc(const int inc
);
294 void chatpanelheight_inc(const int inc
);
300 string
getbdate(unsigned char fbday
, unsigned char fbmonth
, unsigned char fbyear
);
302 const char *strregsound(icqconf::regsound s
);
303 const char *strregcolor(icqconf::regcolor c
);
304 const char *strcolormode(icqconf::colormode cm
);
305 const char *strint(unsigned int i
);
306 const char *strgroupmode(icqconf::groupmode gmode
);
307 const char *stryesno(bool b
);
308 const char *strgender(imgender g
);
309 const char *seteventviewresult(icqface::eventviewresult r
);