Based on 2006-03-02 22:47 centericq-quitask.patch from centericq package diff -Nurp centerim-4.22.1.orig/src/icqconf.cc centerim-4.22.1/src/icqconf.cc --- centerim-4.22.1.orig/src/icqconf.cc 2007-10-02 17:24:40.000000000 +0200 +++ centerim-4.22.1/src/icqconf.cc 2007-10-02 18:03:05.000000000 +0200 @@ -495,6 +495,7 @@ void icqconf::loadmainconfig() { if(param == "russian" || param == "convert") initmultiproto(cpconvert, buf, false); else if(param == "nobidi") setbidi(false); else if(param == "askaway") askaway = true; else + if(param == "askquit") askquit = true; else if(param == "logtimestamps") logtimestamps = true; else if(param == "logonline") logonline = true; else if(param == "fromcharset") fromcharset = buf; else @@ -593,6 +594,7 @@ void icqconf::save() { f << "tocharset\t" << tocharset << endl; if(!getbidi()) f << "nobidi" << endl; + if(getaskquit()) f << "askquit" << endl; if(logtimestamps) f << "logtimestamps" << endl; if(timestampstothesecond) f << "timestampstothesecond" << endl; if(logonline) f << "logonline" << endl; @@ -1015,6 +1017,9 @@ void icqconf::setscreensocketpath(string void icqconf::setquote(bool use) { quote = use; } +void icqconf::setaskquit(bool faskquit) { + askquit = faskquit; +} void icqconf::setsockshost(const string &nsockshost) { int pos; diff -Nurp centerim-4.22.1.orig/src/icqconf.h centerim-4.22.1/src/icqconf.h --- centerim-4.22.1.orig/src/icqconf.h 2007-10-02 17:24:40.000000000 +0200 +++ centerim-4.22.1/src/icqconf.h 2007-10-02 18:03:05.000000000 +0200 @@ -146,7 +146,7 @@ class icqconf { bool hideoffline, quote, savepwd, antispam, screenna, mailcheck, makelog, fenoughdiskspace, askaway, bidi, logtimestamps, logonline, emacs, proxyconnect, proxyssl, notitles, debug, - timestampstothesecond, dropauthreq, usingcaptcha; + timestampstothesecond, dropauthreq, usingcaptcha, askquit; unsigned int captchatimeout; @@ -275,6 +275,9 @@ class icqconf { bool getchatmode(protocolname pname); void setchatmode(protocolname pname, bool fchatmode); + + bool getaskquit() const { return askquit; } + void setaskquit(bool faskquit); bool getentersends(protocolname pname); void setentersends(protocolname pname, bool fentersends); diff -Nurp centerim-4.22.1.orig/src/icqdialogs.cc centerim-4.22.1/src/icqdialogs.cc --- centerim-4.22.1.orig/src/icqdialogs.cc 2007-10-02 17:24:40.000000000 +0200 +++ centerim-4.22.1/src/icqdialogs.cc 2007-10-02 18:03:05.000000000 +0200 @@ -1108,6 +1108,7 @@ bool icqface::updateconf(icqconf::regsou bool makelog = conf.getmakelog(); bool askaway = conf.getaskaway(); bool bidi = conf.getbidi(); + bool askquit = conf.getaskquit(); bool emacs = conf.getemacs(); bool proxyconnect = conf.getproxyconnect(); bool timestampstothesecond = conf.gettimestampstothesecond(); @@ -1194,6 +1195,7 @@ bool icqface::updateconf(icqconf::regsou t.addleaff(i, 0, 20, _( " Enable bidirectional languages support : %s "), stryesno(bidi)); #endif t.addleaff(i, 0, 23, _(" Enable emacs bindings in text editor : %s "), stryesno(emacs)); + t.addleaff(i, 0, 52, _(" Ask before quit : %s "), stryesno(askquit)); i = t.addnode(_(" Codepages conversion ")); @@ -1439,6 +1441,9 @@ bool icqface::updateconf(icqconf::regsou if (dropauthreq && usingcaptcha) dropauthreq = false; break; + case 53: + askquit = !askquit; + break; } break; case 1: @@ -1470,6 +1475,7 @@ bool icqface::updateconf(icqconf::regsou } conf.setbidi(bidi); + conf.setaskquit(askquit); conf.setlogoptions(logtimestamps, logonline); if(ptp) conf.setpeertopeer(ptpmin, ptpmax); diff -Nurp centerim-4.22.1.orig/src/icqface.cc centerim-4.22.1/src/icqface.cc --- centerim-4.22.1.orig/src/icqface.cc 2007-10-02 17:24:40.000000000 +0200 +++ centerim-4.22.1/src/icqface.cc 2007-10-02 18:03:05.000000000 +0200 @@ -3282,6 +3282,9 @@ int icqface::contactskeys(verticalmenu & break; case key_quit: + if (conf.getaskquit()) + if(face.ask("Really Quit?", ASK_YES | ASK_NO, ASK_NO) == ASK_NO) + break; face.extk = ACT_QUIT; break;