diff --exclude='*orig' -Naur psi-0.10-test3-orig/src/common.h psi-0.10-test3/src/common.h --- psi-0.10-test3-orig/src/common.h 2005-12-07 01:22:05.000000000 +0000 +++ psi-0.10-test3/src/common.h 2005-12-07 01:23:12.000000000 +0000 @@ -122,10 +122,11 @@ int statusTimeout; int asAway, asXa, asOffline; - bool use_asAway, use_asXa, use_asOffline, use_asWhileDnd; + bool use_asAway, use_asXa, use_asOffline, use_asWhileDnd, useEAAutoResponder; bool use_asMessage; QString asMessage; QString eaMessage; + QString eaArMessage; QString onevent[10]; bool oneventIsActive[10]; diff --exclude='*orig' -Naur psi-0.10-test3-orig/src/psiaccount.cpp psi-0.10-test3/src/psiaccount.cpp --- psi-0.10-test3-orig/src/psiaccount.cpp 2005-12-07 01:22:05.000000000 +0000 +++ psi-0.10-test3/src/psiaccount.cpp 2005-12-07 01:22:52.000000000 +0000 @@ -330,7 +330,8 @@ QPtrList gcbank; QStringList groupchats; - + QValueVector AutoReplayJIDsList; + AdvancedConnector *conn; ClientStream *stream; QCA::TLS *tls; @@ -1666,6 +1667,21 @@ // urls or subject on a chat message? convert back to regular message //if(m.type() == "chat" && (!m.urlList().isEmpty() || !m.subject().isEmpty())) // m.setType(""); + + // +k + if ( (option.useEAAutoResponder) && (!m.body().isEmpty()) && (usingEmergencyStatus) ) { + QValueVector::const_iterator it = qFind( d->AutoReplayJIDsList.begin(), d->AutoReplayJIDsList.end(), m.from().full() ); + if (it == d->AutoReplayJIDsList.end()) { + Message arm(m.from()); + arm.setType(m.type()); + arm.setBody( option.eaArMessage ); + arm.setTimeStamp(QDateTime::currentDateTime()); + arm.setEvil(true); + dj_sendMessage(arm, false); + d->AutoReplayJIDsList.push_back(m.from().full()); + } + } + // -k MessageEvent *me = new MessageEvent(m, this); me->setOriginLocal(false); @@ -1887,6 +1903,7 @@ ChatDlg *dlg = dynamic_cast(i->widget); if ( dlg ) dlg->toggleEmergencyAwayStatus(false); + d->AutoReplayJIDsList.clear(); } } } diff --exclude='*orig' -Naur psi-0.10-test3-orig/src/psiaccount.h psi-0.10-test3/src/psiaccount.h --- psi-0.10-test3-orig/src/psiaccount.h 2005-12-07 01:22:05.000000000 +0000 +++ psi-0.10-test3/src/psiaccount.h 2005-12-07 01:22:52.000000000 +0000 @@ -28,6 +28,7 @@ #include #include +#include #include #include"xmpp.h" #include"openpgp.h" diff --exclude='*orig' -Naur psi-0.10-test3-orig/src/psi_profiles.cpp psi-0.10-test3/src/psi_profiles.cpp --- psi-0.10-test3-orig/src/psi_profiles.cpp 2005-12-07 01:22:05.000000000 +0000 +++ psi-0.10-test3/src/psi_profiles.cpp 2005-12-07 01:22:52.000000000 +0000 @@ -381,6 +381,8 @@ prefs.use_asMessage = TRUE; prefs.asMessage = QObject::tr("Auto Status (idle)"); prefs.eaMessage = QObject::tr("Emergency away! BRB.<\n-- \n:originalStatus:>"); + prefs.eaArMessage = QObject::tr("I am currently Emergency Away - I will write to you ASAP."); + prefs.useEAAutoResponder = false; prefs.scrollTo = TRUE; prefs.useStatusLinebreak = true; prefs.smShowResource = false; @@ -1082,6 +1084,14 @@ tag.appendChild(textTag(doc, "message", prefs.eaMessage)); } { + QDomElement tag = doc.createElement("EAAutoResponseMessage"); + p_pres.appendChild(tag); + + tag.appendChild(textTag(doc, "message", prefs.eaArMessage)); + tag.appendChild(textTag(doc, "useEAAutoResponder", prefs.useEAAutoResponder)); + + } + { p_pres.appendChild(prefs.sp.toXml(doc, "statuspresets")); } { @@ -1930,6 +1940,10 @@ tag = findSubTag(p_pres, "emergencyAwayStatus", &found); if(found) readEntry(tag, "message", &prefs.eaMessage); + + tag = findSubTag(p_pres, "EAAutoResponseMessage", &found); + if(found) + readEntry(tag, "message", &prefs.eaArMessage); tag = findSubTag(p_pres, "statuspresets", &found); if(found)