diff --exclude='*orig' -Naur psi-0.10-test3-orig/iris/include/im.h psi-0.10-test3/iris/include/im.h
--- psi-0.10-test3-orig/iris/include/im.h 2005-11-08 18:09:02.000000000 +0000
+++ psi-0.10-test3/iris/include/im.h 2005-11-08 18:12:09.000000000 +0000
@@ -172,6 +172,7 @@
const QString & keyID() const;
bool isAvailable() const;
bool isAway() const;
+ bool isDnd() const;
bool isInvisible() const;
bool hasError() const;
int errorCode() const;
diff --exclude='*orig' -Naur psi-0.10-test3-orig/iris/xmpp-im/types.cpp psi-0.10-test3/iris/xmpp-im/types.cpp
--- psi-0.10-test3-orig/iris/xmpp-im/types.cpp 2005-11-08 18:09:03.000000000 +0000
+++ psi-0.10-test3/iris/xmpp-im/types.cpp 2005-11-08 18:13:32.000000000 +0000
@@ -955,6 +955,14 @@
return false;
}
+bool Status::isDnd() const
+{
+ if(d->v_show == "dnd")
+ return true;
+
+ return false;
+}
+
bool Status::isInvisible() const
{
return d->v_isInvisible;
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-11-08 18:09:03.000000000 +0000
+++ psi-0.10-test3/src/common.h 2005-11-08 18:15:12.000000000 +0000
@@ -111,7 +111,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;
bool use_asMessage;
QString asMessage;
QString onevent[10];
diff --exclude='*orig' -Naur psi-0.10-test3-orig/src/options/opt_status.cpp psi-0.10-test3/src/options/opt_status.cpp
--- psi-0.10-test3-orig/src/options/opt_status.cpp 2005-11-08 18:09:03.000000000 +0000
+++ psi-0.10-test3/src/options/opt_status.cpp 2005-11-08 18:23:19.000000000 +0000
@@ -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->use_asMessage = d->ck_asMessage->isChecked();
opt->asMessage = d->te_asMessage->text();
@@ -128,6 +129,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->ck_asMessage->setChecked( opt->use_asMessage );
d->te_asMessage->setEnabled( opt->use_asMessage );
d->te_asMessage->setText( opt->asMessage );
diff --exclude='*orig' -Naur psi-0.10-test3-orig/src/options/opt_status-ui.ui psi-0.10-test3/src/options/opt_status-ui.ui
--- psi-0.10-test3-orig/src/options/opt_status-ui.ui 2005-11-08 18:09:03.000000000 +0000
+++ psi-0.10-test3/src/options/opt_status-ui.ui 2005-11-08 18:23:19.000000000 +0000
@@ -153,6 +153,14 @@
+ ck_asWhileDnd
+
+
+ Use auto status while DND
+
+
+
+
ck_asMessage
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-11-08 18:09:03.000000000 +0000
+++ psi-0.10-test3/src/psiaccount.cpp 2005-11-08 18:23:19.000000000 +0000
@@ -1843,7 +1843,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) {
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-11-08 18:09:03.000000000 +0000
+++ psi-0.10-test3/src/psi_profiles.cpp 2005-11-08 18:22:46.000000000 +0000
@@ -375,6 +375,7 @@
prefs.asXa = 30;
prefs.asOffline = 0;
prefs.use_asAway = TRUE;
+ prefs.use_asWhileDnd = FALSE;
prefs.use_asXa = TRUE;
prefs.use_asOffline = FALSE;
prefs.use_asMessage = TRUE;
@@ -966,6 +967,10 @@
setBoolAttribute(e, "use", prefs.use_asOffline);
tag.appendChild(e);
+ e = textTag(doc, "useWhileDnd", prefs.use_asWhileDnd);
+ setBoolAttribute(e, "use", prefs.use_asWhileDnd);
+ tag.appendChild(e);
+
e = textTag(doc, "message", prefs.asMessage);
setBoolAttribute(e, "use", prefs.use_asMessage);
tag.appendChild(e);
@@ -1701,6 +1706,13 @@
else
prefs.use_asOffline = TRUE;
}
+ e = findSubTag(tag, "useWhileDnd", &found);
+ if(found) {
+ if(e.hasAttribute("use"))
+ readBoolAttribute(e, "use", &prefs.use_asWhileDnd);
+ else
+ prefs.use_asWhileDnd = FALSE;
+ }
e = findSubTag(tag, "message", &found);
if(found) {
if(e.hasAttribute("use"))