diff -X exclude -Naru psi_cvs-2005.03.03/iris/include/im.h psi/iris/include/im.h --- psi_cvs-2005.03.03/iris/include/im.h Sun Mar 6 23:19:08 2005 +++ psi/iris/include/im.h Sun Mar 6 23:19:16 2005 @@ -146,6 +146,7 @@ const QString & keyID() const; bool isAvailable() const; bool isAway() const; + bool isDnd() const; bool isInvisible() const; bool hasError() const; int errorCode() const; diff -X exclude -Naru psi_cvs-2005.03.03/iris/xmpp-im/types.cpp psi/iris/xmpp-im/types.cpp --- psi_cvs-2005.03.03/iris/xmpp-im/types.cpp Thu Oct 14 21:14:40 2004 +++ psi/iris/xmpp-im/types.cpp Sun Mar 6 22:04:08 2005 @@ -797,6 +797,14 @@ return false; } +bool Status::isDnd() const +{ + if(v_show == "dnd") + return true; + + return false; +} + bool Status::isInvisible() const { return v_isInvisible; diff -X exclude -Naru psi_cvs-2005.03.03/psi/src/common.h psi/psi/src/common.h --- psi_cvs-2005.03.03/psi/src/common.h Mon Feb 28 16:45:12 2005 +++ psi/psi/src/common.h Sun Mar 6 22:41:10 2005 @@ -104,7 +104,7 @@ QStringList recentStatus; //recent status messages int asAway, asXa, asOffline; - bool use_asAway, use_asXa, use_asOffline; + bool use_asAway, use_asXa, use_asOffline, use_asWhileDnd; QString asMessage; QString onevent[10]; diff -X exclude -Naru psi_cvs-2005.03.03/psi/src/options/opt_status-ui.ui psi/psi/src/options/opt_status-ui.ui --- psi_cvs-2005.03.03/psi/src/options/opt_status-ui.ui Sun Jul 18 14:02:36 2004 +++ psi/psi/src/options/opt_status-ui.ui Sun Mar 6 22:21:38 2005 @@ -151,6 +151,14 @@ + + + ck_asWhileDnd + + + Use auto status while DND + + TextLabel1_8 diff -X exclude -Naru psi_cvs-2005.03.03/psi/src/options/opt_status.cpp psi/psi/src/options/opt_status.cpp --- psi_cvs-2005.03.03/psi/src/options/opt_status.cpp Sun Jul 18 12:47:34 2004 +++ psi/psi/src/options/opt_status.cpp Sun Mar 6 23:23:40 2005 @@ -97,6 +97,7 @@ opt->use_asAway = d->ck_asAway->isChecked(); opt->use_asXa = d->ck_asXa->isChecked(); opt->use_asOffline = d->ck_asOffline->isChecked(); + opt->use_asWhileDnd = d->ck_asWhileDnd->isChecked(); opt->asMessage = d->te_asMessage->text(); opt->sp = o->sp; @@ -127,6 +128,7 @@ d->ck_asAway->setChecked( opt->use_asAway ); d->ck_asXa->setChecked( opt->use_asXa ); d->ck_asOffline->setChecked( opt->use_asOffline ); + d->ck_asWhileDnd->setChecked( opt->use_asWhileDnd ); d->te_asMessage->setText( opt->asMessage ); o->sp = opt->sp; diff -X exclude -Naru psi_cvs-2005.03.03/psi/src/psi_profiles.cpp psi/psi/src/psi_profiles.cpp --- psi_cvs-2005.03.03/psi/src/psi_profiles.cpp Mon Feb 28 16:45:12 2005 +++ psi/psi/src/psi_profiles.cpp Sun Mar 6 23:27:18 2005 @@ -387,6 +387,7 @@ prefs.use_asAway = TRUE; prefs.use_asXa = TRUE; prefs.use_asOffline = FALSE; + prefs.use_asWhileDnd = FALSE; prefs.asMessage = QObject::tr("Auto Status (idle)"); prefs.scrollTo = TRUE; prefs.useEmoticons = false; @@ -895,6 +896,8 @@ setBoolAttribute(e, "use", prefs.use_asOffline); tag.appendChild(e); + tag.appendChild(textTag(doc, "useWhileDnd", prefs.use_asWhileDnd)); + tag.appendChild(textTag(doc, "message", prefs.asMessage)); } { @@ -1440,6 +1443,8 @@ else prefs.use_asOffline = TRUE; } + + readBoolEntry(tag, "useWhileDnd", &prefs.use_asWhileDnd); readNumEntry(tag, "away", &prefs.asAway); readNumEntry(tag, "xa", &prefs.asXa); diff -X exclude -Naru psi_cvs-2005.03.03/psi/src/psiaccount.cpp psi/psi/src/psiaccount.cpp --- psi_cvs-2005.03.03/psi/src/psiaccount.cpp Sun Feb 20 19:34:18 2005 +++ psi/psi/src/psiaccount.cpp Sun Mar 6 23:25:18 2005 @@ -1781,7 +1781,7 @@ usingAutoStatus = false; } } - else if( !(ls.isAway() && !usingAutoStatus) ) { + else if( !ls.isAway() || (ls.isDnd() && option.use_asWhileDnd) || usingAutoStatus ) { int minutes = x / 60; if(option.use_asOffline && option.asOffline > 0 && minutes >= option.asOffline) {