summaryrefslogtreecommitdiff
path: root/plugins/NewXstatusNotify/src
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/NewXstatusNotify/src')
-rw-r--r--plugins/NewXstatusNotify/src/main.cpp92
1 files changed, 47 insertions, 45 deletions
diff --git a/plugins/NewXstatusNotify/src/main.cpp b/plugins/NewXstatusNotify/src/main.cpp
index 63ebeb45b2..43f08a3293 100644
--- a/plugins/NewXstatusNotify/src/main.cpp
+++ b/plugins/NewXstatusNotify/src/main.cpp
@@ -539,56 +539,58 @@ int ProcessExtraStatus(DBCONTACTWRITESETTING *cws, MCONTACT hContact)
char *szProto = GetContactProto(hContact);
smi.hContact = hContact;
- if (ProtoServiceExists(szProto, JS_PARSE_XMPP_URI)) {
- if (strstr(cws->szSetting, "/mood/") || strstr(cws->szSetting, "/activity/")) { // Jabber mood or activity changed
- char *szSetting;
- int type;
-
- if (strstr(cws->szSetting, "/mood/")) {
- type = TYPE_JABBER_MOOD;
- szSetting = "LastJabberMood";
- }
- else {
- type = TYPE_JABBER_ACTIVITY;
- szSetting = "LastJabberActivity";
- }
+ if (strstr(cws->szSetting, "/mood/") || strstr(cws->szSetting, "/activity/")) { // Jabber mood or activity changed
+ if (!ProtoServiceExists(szProto, JS_PARSE_XMPP_URI))
+ return 0;
- if (strstr(cws->szSetting, "title")) {
- smi.compare = CompareStatusMsg(&smi, cws, szSetting);
- if (smi.compare == COMPARE_SAME) {
- replaceStrT(smi.newstatusmsg, 0);
- replaceStrT(smi.oldstatusmsg, 0);
- }
+ char *szSetting;
+ int type;
- if (cws->value.type == DBVT_DELETED)
- db_unset(hContact, "UserOnline", szSetting);
- else
- db_set(hContact, "UserOnline", szSetting, &cws->value);
+ if (strstr(cws->szSetting, "/mood/")) {
+ type = TYPE_JABBER_MOOD;
+ szSetting = "LastJabberMood";
+ }
+ else {
+ type = TYPE_JABBER_ACTIVITY;
+ szSetting = "LastJabberActivity";
+ }
- xsc = NewXSC(hContact, szProto, type, smi.compare, smi.newstatusmsg, NULL);
- ExtraStatusChanged(xsc);
+ if (strstr(cws->szSetting, "title")) {
+ smi.compare = CompareStatusMsg(&smi, cws, szSetting);
+ if (smi.compare == COMPARE_SAME) {
+ replaceStrT(smi.newstatusmsg, 0);
+ replaceStrT(smi.oldstatusmsg, 0);
}
- else if (strstr(cws->szSetting, "text")) {
- char dbSetting[128];
- mir_snprintf(dbSetting, SIZEOF(dbSetting), "%s%s", szSetting, "Msg");
- smi.compare = CompareStatusMsg(&smi, cws, dbSetting);
- if (smi.compare == COMPARE_SAME) {
- replaceStrT(smi.newstatusmsg, 0);
- replaceStrT(smi.oldstatusmsg, 0);
- }
- if (cws->value.type == DBVT_DELETED)
- db_unset(hContact, "UserOnline", dbSetting);
- else
- db_set(hContact, "UserOnline", dbSetting, &cws->value);
+ if (cws->value.type == DBVT_DELETED)
+ db_unset(hContact, "UserOnline", szSetting);
+ else
+ db_set(hContact, "UserOnline", szSetting, &cws->value);
- xsc = NewXSC(hContact, szProto, type, smi.compare * 4, NULL, smi.newstatusmsg);
- ExtraStatusChanged(xsc);
+ xsc = NewXSC(hContact, szProto, type, smi.compare, smi.newstatusmsg, NULL);
+ ExtraStatusChanged(xsc);
+ }
+ else if (strstr(cws->szSetting, "text")) {
+ char dbSetting[128];
+ mir_snprintf(dbSetting, SIZEOF(dbSetting), "%s%s", szSetting, "Msg");
+ smi.compare = CompareStatusMsg(&smi, cws, dbSetting);
+ if (smi.compare == COMPARE_SAME) {
+ replaceStrT(smi.newstatusmsg, 0);
+ replaceStrT(smi.oldstatusmsg, 0);
}
- return 1;
+
+ if (cws->value.type == DBVT_DELETED)
+ db_unset(hContact, "UserOnline", dbSetting);
+ else
+ db_set(hContact, "UserOnline", dbSetting, &cws->value);
+
+ xsc = NewXSC(hContact, szProto, type, smi.compare * 4, NULL, smi.newstatusmsg);
+ ExtraStatusChanged(xsc);
}
+ return 1;
}
- else if (strstr(cws->szSetting, "XStatus")/* || strcmp(cws->szSetting, "StatusNote") == 0*/) {
+
+ if (strstr(cws->szSetting, "XStatus")) {
if (strcmp(cws->szModule, szProto))
return 0;
@@ -607,7 +609,7 @@ int ProcessExtraStatus(DBCONTACTWRITESETTING *cws, MCONTACT hContact)
xsc = NewXSC(hContact, szProto, TYPE_ICQ_XSTATUS, smi.compare, smi.newstatusmsg, NULL);
ExtraStatusChanged(xsc);
}
- else if (!strcmp(cws->szSetting, "XStatusMsg")/* || strcmp(cws->szSetting, "StatusNote") == 0*/) {
+ else if (!strcmp(cws->szSetting, "XStatusMsg")) {
smi.compare = CompareStatusMsg(&smi, cws, "LastXStatusMsg");
if (smi.compare == COMPARE_SAME) {
replaceStrT(smi.newstatusmsg, 0);
@@ -804,15 +806,15 @@ int ContactSettingChanged(WPARAM hContact, LPARAM lParam)
DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING *)lParam;
if (db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE) != ID_STATUS_OFFLINE)
if (ProcessExtraStatus(cws, hContact))
- return 1;
+ return 0;
if (!strcmp(cws->szSetting, "Status"))
if (ProcessStatus(cws, hContact))
- return 1;
+ return 0;
if (!strcmp(cws->szModule, "CList") && !strcmp(cws->szSetting, "StatusMsg"))
if (ProcessStatusMessage(cws, hContact))
- return 1;
+ return 0;
return 0;
}