diff -X exclude -Nur psi_cvs-2004.10.02/psi/src/common.h psi/psi/src/common.h
--- psi_cvs-2004.10.02/psi/src/common.h	Wed Aug 18 03:35:36 2004
+++ psi/psi/src/common.h	Fri Oct  8 00:23:58 2004
@@ -103,6 +103,7 @@
 
 	int asAway, asXa, asOffline;
 	bool use_asAway, use_asXa, use_asOffline;
+	bool use_asMessage;
 	QString asMessage;
 	QString onevent[10];
 
diff -X exclude -Nur psi_cvs-2004.10.02/psi/src/options/opt_status-ui.ui psi/psi/src/options/opt_status-ui.ui
--- psi_cvs-2004.10.02/psi/src/options/opt_status-ui.ui	Sun Jul 18 14:02:36 2004
+++ psi/psi/src/options/opt_status-ui.ui	Fri Oct  8 01:36:30 2004
@@ -151,9 +151,9 @@
                 </widget>
             </grid>
         </widget>
-        <widget class="QLabel">
+        <widget class="QCheckBox">
             <property name="name">
-                <cstring>TextLabel1_8</cstring>
+                <cstring>ck_asMessage</cstring>
             </property>
             <property name="text">
                 <string>Auto Status Message:</string>
@@ -312,6 +312,12 @@
         <sender>ck_asOffline</sender>
         <signal>toggled(bool)</signal>
         <receiver>lb_asOffline</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>ck_asMessage</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>te_asMessage</receiver>
         <slot>setEnabled(bool)</slot>
     </connection>
 </connections>
diff -X exclude -Nur psi_cvs-2004.10.02/psi/src/options/opt_status.cpp psi/psi/src/options/opt_status.cpp
--- psi_cvs-2004.10.02/psi/src/options/opt_status.cpp	Sun Jul 18 12:47:34 2004
+++ psi/psi/src/options/opt_status.cpp	Fri Oct  8 01:35:22 2004
@@ -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_asMessage = d->ck_asMessage->isChecked();
 	opt->asMessage = d->te_asMessage->text();
 
 	opt->sp = o->sp;
@@ -127,6 +128,8 @@
 	d->ck_asAway->setChecked( opt->use_asAway );
 	d->ck_asXa->setChecked( opt->use_asXa );
 	d->ck_asOffline->setChecked( opt->use_asOffline );
+	d->ck_asMessage->setChecked( opt->use_asMessage );
+	d->te_asMessage->setEnabled( opt->use_asMessage );
 	d->te_asMessage->setText( opt->asMessage );
 
 	o->sp = opt->sp;
diff -X exclude -Nur psi_cvs-2004.10.02/psi/src/psi_profiles.cpp psi/psi/src/psi_profiles.cpp
--- psi_cvs-2004.10.02/psi/src/psi_profiles.cpp	Sun Sep  5 23:04:02 2004
+++ psi/psi/src/psi_profiles.cpp	Fri Oct  8 00:31:16 2004
@@ -384,6 +384,7 @@
 	prefs.use_asAway = TRUE;
 	prefs.use_asXa = TRUE;
 	prefs.use_asOffline = FALSE;
+	prefs.use_asMessage = TRUE;
 	prefs.asMessage = QObject::tr("Auto Status (idle)");
 	prefs.scrollTo = TRUE;
 	prefs.useEmoticons = false;
@@ -836,7 +837,9 @@
 			setBoolAttribute(e, "use", prefs.use_asOffline);
 			tag.appendChild(e);
 
-			tag.appendChild(textTag(doc, "message", prefs.asMessage));
+			e = textTag(doc, "message", prefs.asMessage);
+			setBoolAttribute(e, "use", prefs.use_asMessage);
+			tag.appendChild(e);
 		}
 		{
 			p_pres.appendChild(prefs.sp.toXml(doc, "statuspresets"));
@@ -1335,6 +1338,13 @@
 						readBoolAttribute(e, "use", &prefs.use_asOffline);
 					else
 						prefs.use_asOffline = TRUE;
+				}
+				e = findSubTag(tag, "message", &found);
+				if(found) {
+					if(e.hasAttribute("use"))
+						readBoolAttribute(e, "use", &prefs.use_asMessage);
+					else
+						prefs.use_asMessage = TRUE;
 				}
 
 				readNumEntry(tag, "away", &prefs.asAway);
diff -X exclude -Nur psi_cvs-2004.10.02/psi/src/psiaccount.cpp psi/psi/src/psiaccount.cpp
--- psi_cvs-2004.10.02/psi/src/psiaccount.cpp	Wed Aug 18 03:35:36 2004
+++ psi/psi/src/psiaccount.cpp	Fri Oct  8 00:54:34 2004
@@ -1748,7 +1748,7 @@
 			}
 			else if(option.use_asXa && option.asXa > 0 && minutes >= option.asXa) {
 				if(ls.show() != "xa" && lastStatus.show() != "xa") {
-					lastStatus = Status("xa", option.asMessage, d->acc.priority);
+					lastStatus = Status("xa", (option.use_asMessage)? option.asMessage : status().status(), d->acc.priority);
 					if(!usingAutoStatus)
 						d->origStatus = d->loginStatus;
 					setStatusDirect(lastStatus);
@@ -1757,7 +1757,7 @@
 			}
 			else if(option.use_asAway && option.asAway > 0 && minutes >= option.asAway) {
 				if(ls.show() != "away" && lastStatus.show() != "away") {
-					lastStatus = Status("away", option.asMessage, d->acc.priority);
+					lastStatus = Status("away", (option.use_asMessage)? option.asMessage : status().status(), d->acc.priority);
 					if(!usingAutoStatus)
 						d->origStatus = d->loginStatus;
 					setStatusDirect(lastStatus);
