diff --exclude='*orig' -Naur psi-0.10-test3-orig/src/common.cpp psi-0.10-test3/src/common.cpp --- psi-0.10-test3-orig/src/common.cpp 2005-12-08 00:28:23.000000000 +0000 +++ psi-0.10-test3/src/common.cpp 2005-12-08 01:03:30.000000000 +0000 @@ -1680,6 +1680,13 @@ #endif } +XMPP::Status makeStatus(int x, const QString &str, int priority) +{ + XMPP::Status s = makeStatus(x,str); + s.setPriority(priority); + return s; +} + XMPP::Status makeStatus(int x, const QString &str) { XMPP::Status s; 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-08 00:28:23.000000000 +0000 +++ psi-0.10-test3/src/common.h 2005-12-08 01:03:30.000000000 +0000 @@ -115,7 +115,8 @@ int defaultAction; int incomingAs; - VarList sp; //status message presets + VarList sp; + int recentStatusLimit; bool storePresets; QStringList recentStatus; //recent status messages @@ -363,6 +364,7 @@ void soundPlay(const QString &); +XMPP::Status makeStatus(int, const QString &, int priority); XMPP::Status makeStatus(int, const QString &); int makeSTATUS(const XMPP::Status &); int rankStatus(int); diff --exclude='*orig' -Naur psi-0.10-test3-orig/src/mainwin.cpp psi-0.10-test3/src/mainwin.cpp --- psi-0.10-test3-orig/src/mainwin.cpp 2005-12-08 00:28:18.000000000 +0000 +++ psi-0.10-test3/src/mainwin.cpp 2005-12-08 01:03:30.000000000 +0000 @@ -778,7 +778,7 @@ d->getAction("menu_quit")->addTo(d->trayMenu); } -void MainWin::setTrayToolTip(int status) +void MainWin::setTrayToolTip(int status, bool) { if (!d->tray) return; diff --exclude='*orig' -Naur psi-0.10-test3-orig/src/mainwin.h psi-0.10-test3/src/mainwin.h --- psi-0.10-test3-orig/src/mainwin.h 2005-12-08 00:28:16.000000000 +0000 +++ psi-0.10-test3/src/mainwin.h 2005-12-08 01:03:30.000000000 +0000 @@ -91,7 +91,7 @@ void buildMainMenu(); void buildToolsMenu(); - void setTrayToolTip(int); + void setTrayToolTip(int,bool usePriority = false); void activatedStatusAction(int); 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-08 00:28:21.000000000 +0000 +++ psi-0.10-test3/src/psiaccount.cpp 2005-12-08 01:03:30.000000000 +0000 @@ -1781,7 +1781,7 @@ return d->loginStatus; } -void PsiAccount::setStatus(const Status &_s) +void PsiAccount::setStatus(const Status &_s, bool withPriority) { // Block all transports' contacts' status change popups from popping { @@ -1799,7 +1799,8 @@ doReconnect = false; Status s = _s; - s.setPriority(d->acc.priority); + if (!withPriority) + s.setPriority(d->acc.priority); d->loginStatus = s; @@ -1829,7 +1830,7 @@ // change status else { if(rosterDone) - setStatusDirect(s); + setStatusDirect(s, withPriority); if(s.isInvisible()) {//&&Pass invis to transports KEVIN //this is a nasty hack to let the transports know we're invisible, since they get an offline packet when we go invisible @@ -1850,10 +1851,13 @@ } } -void PsiAccount::setStatusDirect(const Status &_s) +void PsiAccount::setStatusDirect(const Status &_s, bool withPriority) { Status s = _s; - s.setPriority(d->acc.priority); + + if (!withPriority) + s.setPriority(d->acc.priority); + // remove all starting and ending whitespace in the status message s.setStatus(s.status().stripWhiteSpace()); 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-08 00:28:21.000000000 +0000 +++ psi-0.10-test3/src/psiaccount.h 2005-12-08 01:03:30.000000000 +0000 @@ -156,7 +156,7 @@ PsiCon *psi() const; AvatarFactory *avatarFactory() const; Status status() const; - void setStatusDirect(const Status &); + void setStatusDirect(const Status &, bool withPriority = false); void setStatusActual(const Status &); void setEmergencyStatus(); // k bool getEmergencyAwayStatusStatus(); // k @@ -241,7 +241,7 @@ void bookmarksSent(); public slots: - void setStatus(const Status &); + void setStatus(const Status &, bool withStatus = false); QString expandStatusTemplate(const QString &statusTemplate); void secondsIdle(int); diff --exclude='*orig' -Naur psi-0.10-test3-orig/src/psicon.cpp psi-0.10-test3/src/psicon.cpp --- psi-0.10-test3-orig/src/psicon.cpp 2005-12-08 00:28:23.000000000 +0000 +++ psi-0.10-test3/src/psicon.cpp 2005-12-08 01:03:30.000000000 +0000 @@ -1036,7 +1036,7 @@ setGlobalStatus(s); } -void PsiCon::setGlobalStatus(const Status &s) +void PsiCon::setGlobalStatus(const Status &s, bool withPriority) { // Check whether all accounts are logged off bool allOffline = true; @@ -1055,7 +1055,7 @@ PsiAccountListIt it(d->listEnabled); for( ; (pa = it.current()); ++it) if (allOffline || pa->isActive()) - pa->setStatus(s); + pa->setStatus(s, withPriority); } // k diff --exclude='*orig' -Naur psi-0.10-test3-orig/src/psicon.h psi-0.10-test3/src/psicon.h --- psi-0.10-test3-orig/src/psicon.h 2005-12-08 00:28:23.000000000 +0000 +++ psi-0.10-test3/src/psicon.h 2005-12-08 01:03:21.000000000 +0000 @@ -164,7 +164,7 @@ void pgpKeysUpdated(); public slots: - void setGlobalStatus(const Status &); + void setGlobalStatus(const Status &, bool withPriority = false); void setEmergencyStatus(); // k QWidget *doToolbars(); diff --exclude='*orig' -Naur psi-0.10-test3-orig/rc.cpp psi-0.10-test3/rc.cpp --- psi-0.10-test3-orig/rc.cpp 2005-12-08 00:28:21.000000000 +0000 +++ psi-0.10-test3/rc.cpp 2005-12-08 01:03:30.000000000 +0000 @@ -147,7 +147,7 @@ } } if (foundStatus) { - manager()->account()->setStatus(s); + manager()->account()->setStatus(s, true); } return AHCommand::completedReply(c); }