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 @@
                 </widget>
             </grid>
         </widget>
+        <widget class="QCheckBox">
+            <property name="name">
+                <cstring>ck_asWhileDnd</cstring>
+            </property>
+            <property name="text">
+                <string>Use auto status while DND</string>
+            </property>
+        </widget>
         <widget class="QLabel">
             <property name="name">
                 <cstring>TextLabel1_8</cstring>
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) {
