diff options
Diffstat (limited to 'plugins/TipperYM/src/subst.cpp')
-rw-r--r-- | plugins/TipperYM/src/subst.cpp | 302 |
1 files changed, 149 insertions, 153 deletions
diff --git a/plugins/TipperYM/src/subst.cpp b/plugins/TipperYM/src/subst.cpp index 9320430577..6d439f8bec 100644 --- a/plugins/TipperYM/src/subst.cpp +++ b/plugins/TipperYM/src/subst.cpp @@ -15,7 +15,7 @@ Library General Public License for more details. You should have received a copy of the GNU Library General Public
License along with this file; see the file license.txt. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.
+Boston, MA 02111-1307, USA.
*/
#include "common.h"
@@ -24,7 +24,7 @@ Boston, MA 02111-1307, USA. #include "popwin.h"
-int ProtoServiceExists(const char *szModule, const char *szService)
+int ProtoServiceExists(const char *szModule, const char *szService)
{
char str[MAXMODULELABELLENGTH];
strcpy(str,szModule);
@@ -32,7 +32,7 @@ int ProtoServiceExists(const char *szModule, const char *szService) return ServiceExists(str);
}
-bool DBGetContactSettingAsString(HANDLE hContact, const char *szModuleName, const char *szSettingName, TCHAR *buff, int bufflen)
+bool DBGetContactSettingAsString(HANDLE hContact, const char *szModuleName, const char *szSettingName, TCHAR *buff, int bufflen)
{
DBVARIANT dbv;
buff[0] = 0;
@@ -42,7 +42,7 @@ bool DBGetContactSettingAsString(HANDLE hContact, const char *szModuleName, cons if (!DBGetContactSetting(hContact, szModuleName, szSettingName, &dbv))
{
- switch(dbv.type)
+ switch(dbv.type)
{
case DBVT_BYTE:
_itot(dbv.bVal, buff, 10);
@@ -75,12 +75,12 @@ bool DBGetContactSettingAsString(HANDLE hContact, const char *szModuleName, cons return buff[0] ? true : false;
}
-void StripBBCodesInPlace(TCHAR *swzText)
+void StripBBCodesInPlace(TCHAR *swzText)
{
if (!DBGetContactSettingByte(0, MODULE, "StripBBCodes", 1))
return;
- if (swzText == 0)
+ if (swzText == 0)
return;
size_t iRead = 0, iWrite = 0;
@@ -88,7 +88,7 @@ void StripBBCodesInPlace(TCHAR *swzText) while(iRead <= iLen) // copy terminating null too
{
- while(iRead <= iLen && swzText[iRead] != '[')
+ while(iRead <= iLen && swzText[iRead] != '[')
{
if (swzText[iRead] != swzText[iWrite]) swzText[iWrite] = swzText[iRead];
iRead++; iWrite++;
@@ -101,21 +101,21 @@ void StripBBCodesInPlace(TCHAR *swzText) iRead += 3;
else if (iLen - iRead >= 4 && (_tcsnicmp(swzText + iRead, _T("[/b]"), 4) == 0 || _tcsnicmp(swzText + iRead, _T("[/i]"), 4) == 0))
iRead += 4;
- else if (iLen - iRead >= 6 && (_tcsnicmp(swzText + iRead, _T("[color"), 6) == 0))
+ else if (iLen - iRead >= 6 && (_tcsnicmp(swzText + iRead, _T("[color"), 6) == 0))
{
- while(iRead < iLen && swzText[iRead] != ']') iRead++;
+ while(iRead < iLen && swzText[iRead] != ']') iRead++;
iRead++;// skip the ']'
- }
+ }
else if (iLen - iRead >= 8 && (_tcsnicmp(swzText + iRead, _T("[/color]"), 8) == 0))
iRead += 8;
else if (iLen - iRead >= 5 && (_tcsnicmp(swzText + iRead, _T("[size"), 5) == 0))
{
- while(iRead < iLen && swzText[iRead] != ']') iRead++;
+ while(iRead < iLen && swzText[iRead] != ']') iRead++;
iRead++;// skip the ']'
- }
+ }
else if (iLen - iRead >= 7 && (_tcsnicmp(swzText + iRead, _T("[/size]"), 7) == 0))
iRead += 7;
- else
+ else
{
if (swzText[iRead] != swzText[iWrite]) swzText[iWrite] = swzText[iRead];
iRead++; iWrite++;
@@ -123,28 +123,28 @@ void StripBBCodesInPlace(TCHAR *swzText) }
}
-DWORD LastMessageTimestamp(HANDLE hContact)
+DWORD LastMessageTimestamp(HANDLE hContact)
{
DBEVENTINFO dbei = {0};
dbei.cbSize = sizeof(dbei);
HANDLE hDbEvent = (HANDLE)CallService(MS_DB_EVENT_FINDLAST, (WPARAM)hContact, 0);
- while (hDbEvent)
+ while (hDbEvent)
{
dbei.cbBlob = 0;
CallService(MS_DB_EVENT_GET, (WPARAM)hDbEvent, (LPARAM)&dbei);
if (dbei.eventType == EVENTTYPE_MESSAGE && !(dbei.flags & DBEF_SENT))
break;
-
+
hDbEvent = (HANDLE)CallService(MS_DB_EVENT_FINDPREV, (WPARAM)hDbEvent, 0);
}
- if (hDbEvent)
+ if (hDbEvent)
return dbei.timestamp;
return 0;
}
-void FormatTimestamp(DWORD ts, char *szFormat, TCHAR *buff, int bufflen)
+void FormatTimestamp(DWORD ts, char *szFormat, TCHAR *buff, int bufflen)
{
TCHAR swzForm[16];
DBTIMETOSTRINGT dbt = {0};
@@ -155,14 +155,14 @@ void FormatTimestamp(DWORD ts, char *szFormat, TCHAR *buff, int bufflen) CallService(MS_DB_TIME_TIMESTAMPTOSTRINGT, (WPARAM)ts, (LPARAM)&dbt);
}
-bool Uid(HANDLE hContact, char *szProto, TCHAR *buff, int bufflen)
+bool Uid(HANDLE hContact, char *szProto, TCHAR *buff, int bufflen)
{
char *tmpProto = NULL;
if (hContact) tmpProto = GetContactProto(hContact);
else tmpProto = szProto;
- if (tmpProto)
+ if (tmpProto)
{
char *szUid = ( char* )CallProtoService(tmpProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0);
if (szUid && (INT_PTR)szUid != CALLSERVICE_NOTFOUND)
@@ -172,7 +172,7 @@ bool Uid(HANDLE hContact, char *szProto, TCHAR *buff, int bufflen) return false;
}
-bool UidName(char *szProto, TCHAR *buff, int bufflen)
+bool UidName(char *szProto, TCHAR *buff, int bufflen)
{
if (szProto)
{
@@ -181,33 +181,33 @@ bool UidName(char *szProto, TCHAR *buff, int bufflen) {
a2t(szUidName, buff, bufflen);
return true;
- }
+ }
}
return false;
}
-TCHAR *GetLastMessageText(HANDLE hContact)
+TCHAR *GetLastMessageText(HANDLE hContact)
{
DBEVENTINFO dbei = {0};
dbei.cbSize = sizeof(dbei);
HANDLE hDbEvent = (HANDLE)CallService(MS_DB_EVENT_FINDLAST, (WPARAM)hContact, 0);
- while (hDbEvent)
+ while (hDbEvent)
{
dbei.cbBlob = 0;
CallService(MS_DB_EVENT_GET, (WPARAM)hDbEvent, (LPARAM)&dbei);
if (dbei.eventType == EVENTTYPE_MESSAGE && !(dbei.flags & DBEF_SENT))
break;
-
+
hDbEvent = (HANDLE)CallService(MS_DB_EVENT_FINDPREV, (WPARAM)hDbEvent, 0);
}
- if (hDbEvent)
+ if (hDbEvent)
{
dbei.pBlob = (BYTE *)alloca(dbei.cbBlob);
CallService(MS_DB_EVENT_GET, (WPARAM)hDbEvent, (LPARAM)&dbei);
- if (dbei.cbBlob == 0 || dbei.pBlob == 0)
+ if (dbei.cbBlob == 0 || dbei.pBlob == 0)
return 0;
TCHAR *buff = DbGetEventTextT( &dbei, CP_ACP );
@@ -223,27 +223,27 @@ TCHAR *GetLastMessageText(HANDLE hContact) bool CanRetrieveStatusMsg(HANDLE hContact, char *szProto)
{
- if (opt.bGetNewStatusMsg)
+ if (opt.bGetNewStatusMsg)
{
int iFlags = CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_3, 0);
WORD wStatus = DBGetContactSettingWord(hContact, szProto, "Status", ID_STATUS_OFFLINE);
if ((CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_MODEMSGSEND) && (iFlags & Proto_Status2Flag(wStatus)))
{
iFlags = CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_1, 0) & (PF1_VISLIST | PF1_INVISLIST);
- if (opt.bDisableIfInvisible && iFlags)
+ if (opt.bDisableIfInvisible && iFlags)
{
- int iVisMode = DBGetContactSettingWord(hContact, szProto, "ApparentMode", 0);
+ int iVisMode = DBGetContactSettingWord(hContact, szProto, "ApparentMode", 0);
int wProtoStatus = CallProtoService(szProto, PS_GETSTATUS, 0, 0);
if ((iVisMode == ID_STATUS_OFFLINE) || (wProtoStatus == ID_STATUS_INVISIBLE && iVisMode != ID_STATUS_ONLINE))
return false;
else
return true;
- }
+ }
else
{
return true;
}
- }
+ }
else
{
return false;
@@ -253,25 +253,25 @@ bool CanRetrieveStatusMsg(HANDLE hContact, char *szProto) return false;
}
-TCHAR *GetStatusMessageText(HANDLE hContact)
+TCHAR *GetStatusMessageText(HANDLE hContact)
{
TCHAR *swzMsg = 0;
DBVARIANT dbv;
char *szProto = GetContactProto(hContact);
- if (szProto)
+ if (szProto)
{
if (!strcmp(szProto, szMetaModuleName))
{
hContact = (HANDLE)CallService(MS_MC_GETMOSTONLINECONTACT, (WPARAM)hContact, 0);
}
- else
- {
+ else
+ {
WORD wStatus = (int)CallProtoService(szProto, PS_GETSTATUS, 0, 0);
- if (wStatus == ID_STATUS_OFFLINE)
+ if (wStatus == ID_STATUS_OFFLINE)
return NULL;
- if (!DBGetContactSettingTString(hContact, MODULE, "TempStatusMsg", &dbv))
+ if (!DBGetContactSettingTString(hContact, MODULE, "TempStatusMsg", &dbv))
{
if (_tcslen(dbv.ptszVal) != 0)
swzMsg = mir_tstrdup(dbv.ptszVal);
@@ -279,7 +279,7 @@ TCHAR *GetStatusMessageText(HANDLE hContact) }
}
- if (!swzMsg)
+ if (!swzMsg)
{
if (CanRetrieveStatusMsg(hContact, szProto))
{
@@ -287,7 +287,7 @@ TCHAR *GetStatusMessageText(HANDLE hContact) return NULL;
}
- if (!DBGetContactSettingTString(hContact, "CList", "StatusMsg", &dbv))
+ if (!DBGetContactSettingTString(hContact, "CList", "StatusMsg", &dbv))
{
if (dbv.ptszVal && _tcslen(dbv.ptszVal) != 0)
swzMsg = mir_tstrdup(dbv.ptszVal);
@@ -296,19 +296,19 @@ TCHAR *GetStatusMessageText(HANDLE hContact) }
}
- if (swzMsg)
+ if (swzMsg)
StripBBCodesInPlace(swzMsg);
return swzMsg;
}
-bool GetSysSubstText(HANDLE hContact, TCHAR *swzRawSpec, TCHAR *buff, int bufflen)
+bool GetSysSubstText(HANDLE hContact, TCHAR *swzRawSpec, TCHAR *buff, int bufflen)
{
if (!_tcscmp(swzRawSpec, _T("uid")))
{
return Uid(hContact, 0, buff, bufflen);
- }
- else if (!_tcscmp(swzRawSpec, _T("proto")))
+ }
+ else if (!_tcscmp(swzRawSpec, _T("proto")))
{
char *szProto = GetContactProto(hContact);
if (szProto)
@@ -316,15 +316,15 @@ bool GetSysSubstText(HANDLE hContact, TCHAR *swzRawSpec, TCHAR *buff, int buffle a2t(szProto, buff, bufflen);
return true;
}
- }
- else if (!_tcscmp(swzRawSpec, _T("account")))
+ }
+ else if (!_tcscmp(swzRawSpec, _T("account")))
{
char *szProto = ( char* )CallService(MS_PROTO_GETCONTACTBASEACCOUNT, (WPARAM)hContact, 0);
- if ((INT_PTR)szProto == CALLSERVICE_NOTFOUND)
+ if ((INT_PTR)szProto == CALLSERVICE_NOTFOUND)
{
return GetSysSubstText(hContact, _T("proto"), buff, bufflen);
}
- else if (szProto)
+ else if (szProto)
{
PROTOACCOUNT *pa = ProtoGetAccount(szProto);
if (pa && pa->tszAccountName)
@@ -335,18 +335,18 @@ bool GetSysSubstText(HANDLE hContact, TCHAR *swzRawSpec, TCHAR *buff, int buffle else
return GetSysSubstText(hContact, _T("proto"), buff, bufflen);
}
- }
- else if (!_tcscmp(swzRawSpec, _T("time")))
+ }
+ else if (!_tcscmp(swzRawSpec, _T("time")))
{
if (tmi.printDateTime && !tmi.printDateTimeByContact(hContact, _T("t"), buff, bufflen, TZF_KNOWNONLY))
return true;
}
else if (!_tcscmp(swzRawSpec, _T("uidname")))
{
- char *szProto = GetContactProto(hContact);
+ char *szProto = GetContactProto(hContact);
return UidName(szProto, buff, bufflen);
}
- else if (!_tcscmp(swzRawSpec, _T("status_msg")))
+ else if (!_tcscmp(swzRawSpec, _T("status_msg")))
{
TCHAR *swzMsg = GetStatusMessageText(hContact);
if (swzMsg)
@@ -355,7 +355,7 @@ bool GetSysSubstText(HANDLE hContact, TCHAR *swzRawSpec, TCHAR *buff, int buffle mir_free(swzMsg);
return true;
}
- }
+ }
else if (!_tcscmp(swzRawSpec, _T("last_msg")))
{
TCHAR *swzMsg = GetLastMessageText(hContact);
@@ -365,8 +365,8 @@ bool GetSysSubstText(HANDLE hContact, TCHAR *swzRawSpec, TCHAR *buff, int buffle mir_free(swzMsg);
return true;
}
- }
- else if (!_tcscmp(swzRawSpec, _T("meta_subname")))
+ }
+ else if (!_tcscmp(swzRawSpec, _T("meta_subname")))
{
// get contact list name of active subcontact
HANDLE hSubContact = (HANDLE)CallService(MS_MC_GETMOSTONLINECONTACT, (WPARAM)hContact, 0);
@@ -374,35 +374,35 @@ bool GetSysSubstText(HANDLE hContact, TCHAR *swzRawSpec, TCHAR *buff, int buffle TCHAR *swzNick = (TCHAR *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hSubContact, GCDNF_TCHAR);
if (swzNick) _tcsncpy(buff, swzNick, bufflen);
return true;
- }
+ }
else if (!_tcscmp(swzRawSpec, _T("meta_subuid")))
{
HANDLE hSubContact = (HANDLE)CallService(MS_MC_GETMOSTONLINECONTACT, (WPARAM)hContact, 0);
if (!hSubContact || (INT_PTR)hSubContact == CALLSERVICE_NOTFOUND) return false;
return Uid(hSubContact, 0, buff, bufflen);
- }
+ }
else if (!_tcscmp(swzRawSpec, _T("meta_subproto")))
{
// get protocol of active subcontact
HANDLE hSubContact = (HANDLE)CallService(MS_MC_GETMOSTONLINECONTACT, (WPARAM)hContact, 0);
- if (!hSubContact || (INT_PTR)hSubContact == CALLSERVICE_NOTFOUND)
+ if (!hSubContact || (INT_PTR)hSubContact == CALLSERVICE_NOTFOUND)
return false;
return GetSysSubstText(hSubContact, _T("account"), buff, bufflen);
- }
- else if (!_tcscmp(swzRawSpec, _T("last_msg_time")))
+ }
+ else if (!_tcscmp(swzRawSpec, _T("last_msg_time")))
{
DWORD ts = LastMessageTimestamp(hContact);
if (ts == 0) return false;
FormatTimestamp(ts, "t", buff, bufflen);
return true;
- }
- else if (!_tcscmp(swzRawSpec, _T("last_msg_date")))
+ }
+ else if (!_tcscmp(swzRawSpec, _T("last_msg_date")))
{
DWORD ts = LastMessageTimestamp(hContact);
if (ts == 0) return false;
FormatTimestamp(ts, "d", buff, bufflen);
return true;
- }
+ }
else if (!_tcscmp(swzRawSpec, _T("last_msg_reltime")))
{
DWORD ts = LastMessageTimestamp(hContact);
@@ -416,7 +416,7 @@ bool GetSysSubstText(HANDLE hContact, TCHAR *swzRawSpec, TCHAR *buff, int buffle else if (h > 0) mir_sntprintf(buff, bufflen, TranslateT("%dh %dm"), h, m);
else mir_sntprintf(buff, bufflen, TranslateT("%dm"), m);
return true;
- }
+ }
else if (!_tcscmp(swzRawSpec, _T("msg_count_all")) || !_tcscmp(swzRawSpec, _T("msg_count_out")) || !_tcscmp(swzRawSpec, _T("msg_count_in")))
{
DWORD dwCountOut, dwCountIn;
@@ -442,9 +442,9 @@ bool GetSysSubstText(HANDLE hContact, TCHAR *swzRawSpec, TCHAR *buff, int buffle if (dwDiff > (60 * 60 * 24 * 3))
{
DBWriteContactSettingDword(hTmpContact, MODULE, "LastCountTS", dwTime);
- dwCountOut = dwCountIn = dwLastTs = 0;
- }
- else
+ dwCountOut = dwCountIn = dwLastTs = 0;
+ }
+ else
{
dwCountOut = DBGetContactSettingDword(hTmpContact, MODULE, "MsgCountOut", 0);
dwCountIn = DBGetContactSettingDword(hTmpContact, MODULE, "MsgCountIn", 0);
@@ -454,21 +454,21 @@ bool GetSysSubstText(HANDLE hContact, TCHAR *swzRawSpec, TCHAR *buff, int buffle dwNewTs = dwLastTs;
HANDLE dbe = (HANDLE)CallService(MS_DB_EVENT_FINDLAST, (WPARAM)hTmpContact, 0);
- while (dbe != NULL)
+ while (dbe != NULL)
{
DBEVENTINFO dbei = {0};
dbei.cbSize = sizeof(dbei);
if (!CallService(MS_DB_EVENT_GET, (WPARAM)dbe, (LPARAM)&dbei))
{
- if (dbei.eventType == EVENTTYPE_MESSAGE)
+ if (dbei.eventType == EVENTTYPE_MESSAGE)
{
dwNewTs = max(dwNewTs, dbei.timestamp);
- if (dbei.timestamp > dwLastTs)
+ if (dbei.timestamp > dwLastTs)
{
if (dbei.flags & DBEF_SENT) dwCountOut++;
else dwCountIn++;
- }
- else
+ }
+ else
break;
}
}
@@ -481,7 +481,7 @@ bool GetSysSubstText(HANDLE hContact, TCHAR *swzRawSpec, TCHAR *buff, int buffle DBWriteContactSettingDword(hTmpContact, MODULE, "MsgCountIn", dwCountIn);
DBWriteContactSettingDword(hTmpContact, MODULE, "LastMsgTS", dwNewTs);
}
-
+
dwMetaCountOut += dwCountOut;
dwMetaCountIn += dwCountIn;
}
@@ -498,22 +498,22 @@ bool GetSysSubstText(HANDLE hContact, TCHAR *swzRawSpec, TCHAR *buff, int buffle return false;
}
-bool GetSubstText(HANDLE hContact, const DISPLAYSUBST &ds, TCHAR *buff, int bufflen)
+bool GetSubstText(HANDLE hContact, const DISPLAYSUBST &ds, TCHAR *buff, int bufflen)
{
TranslateFunc *transFunc = 0;
for (int i = 0; i < iTransFuncsCount; i++)
{
- if (translations[i].id == (DWORD)ds.iTranslateFuncId)
+ if (translations[i].id == (DWORD)ds.iTranslateFuncId)
{
transFunc = translations[i].transFunc;
break;
}
}
- if (!transFunc)
+ if (!transFunc)
return false;
- switch (ds.type)
+ switch (ds.type)
{
case DVT_DB:
return transFunc(hContact, ds.szModuleName, ds.szSettingName, buff, bufflen) != 0;
@@ -528,15 +528,15 @@ bool GetSubstText(HANDLE hContact, const DISPLAYSUBST &ds, TCHAR *buff, int buff return transFunc(hContact, "UserInfo", ds.szSettingName, buff, bufflen) != 0;
}
break;
- }
+ }
}
return false;
}
-bool GetRawSubstText(HANDLE hContact, char *szRawSpec, TCHAR *buff, int bufflen)
+bool GetRawSubstText(HANDLE hContact, char *szRawSpec, TCHAR *buff, int bufflen)
{
size_t lenght = strlen(szRawSpec);
- for (size_t i = 0; i < lenght; i++)
+ for (size_t i = 0; i < lenght; i++)
{
if (szRawSpec[i] == '/')
{
@@ -550,7 +550,7 @@ bool GetRawSubstText(HANDLE hContact, char *szRawSpec, TCHAR *buff, int bufflen) return true;
else
return translations[0].transFunc(hContact, "UserInfo", &szRawSpec[i + 1], buff, bufflen) != 0;
- }
+ }
else
{
return false;
@@ -565,7 +565,7 @@ bool GetRawSubstText(HANDLE hContact, char *szRawSpec, TCHAR *buff, int bufflen) return false;
}
-bool ApplySubst(HANDLE hContact, const TCHAR *swzSource, bool parseTipperVarsFirst, TCHAR *swzDest, int iDestLen)
+bool ApplySubst(HANDLE hContact, const TCHAR *swzSource, bool parseTipperVarsFirst, TCHAR *swzDest, int iDestLen)
{
// hack - allow empty strings before passing to variables (note - zero length strings return false after this)
if (swzDest && swzSource && _tcslen(swzSource) == 0) {
@@ -585,18 +585,18 @@ bool ApplySubst(HANDLE hContact, const TCHAR *swzSource, bool parseTipperVarsFir TCHAR swzVName[LABEL_LEN];
TCHAR swzRep[VALUE_LEN], swzAlt[VALUE_LEN];
- while (si < iSourceLen && di < (size_t)iDestLen - 1)
+ while (si < iSourceLen && di < (size_t)iDestLen - 1)
{
if (swzVarSrc[si] == _T('%'))
{
si++;
v = 0;
- while (si < iSourceLen && v < LABEL_LEN)
+ while (si < iSourceLen && v < LABEL_LEN)
{
if (swzVarSrc[si] == _T('%'))
- {
+ {
// two %'s in a row in variable name disabled: e.g. %a%%b% - this is atbbguous]
- //if (si + 1 < iSourceLen && swzVarSrc[si + 1] == _T('%')) {
+ //if (si + 1 < iSourceLen && swzVarSrc[si + 1] == _T('%')) {
// si++; // skip first %, allow following code to add the second one to the variable name
//} else
break;
@@ -608,7 +608,7 @@ bool ApplySubst(HANDLE hContact, const TCHAR *swzSource, bool parseTipperVarsFir if (v == 0) // bSubst len is 0 - just a % symbol
{
swzDest[di] = _T('%');
- }
+ }
else if (si < iSourceLen) // we found end %
{
swzVName[v] = 0;
@@ -618,11 +618,11 @@ bool ApplySubst(HANDLE hContact, const TCHAR *swzSource, bool parseTipperVarsFir // apply only to specific protocols
TCHAR *p = _tcsrchr(swzVName, _T('^')); // use last '^', so if you want a ^ in swzAlt text, you can just put a '^' on the end
- if (p)
+ if (p)
{
*p = 0;
p++;
- if (*p)
+ if (*p)
{
char *cp = GetContactProto(hContact);
if (cp != NULL)
@@ -633,12 +633,12 @@ bool ApplySubst(HANDLE hContact, const TCHAR *swzSource, bool parseTipperVarsFir cp = acc->szProtoName;
}
}
-
+
if (cp == NULL)
goto empty;
bool negate = false;
- if (*p == _T('!'))
+ if (*p == _T('!'))
{
p++;
if (*p == 0) goto error;
@@ -666,7 +666,7 @@ bool ApplySubst(HANDLE hContact, const TCHAR *swzSource, bool parseTipperVarsFir }
}
- if (negate ? spec : !spec)
+ if (negate ? spec : !spec)
goto empty;
}
}
@@ -674,31 +674,31 @@ bool ApplySubst(HANDLE hContact, const TCHAR *swzSource, bool parseTipperVarsFir // get alternate text, if bSubst fails
swzAlt[0] = 0;
p = _tcschr(swzVName, _T('|')); // use first '|' - so you can use the '|' symbol in swzAlt text
- if (p)
+ if (p)
{
*p = 0; // clip swzAlt from swzVName
- p++;
+ p++;
if (_tcslen(p) > 4 && _tcsncmp(p, _T("raw:"), 4) == 0) // raw db substitution
- {
+ {
char raw_spec[LABEL_LEN];
p += 4;
t2a(p, raw_spec, LABEL_LEN);
GetRawSubstText(hContact, raw_spec, swzAlt, VALUE_LEN);
- }
+ }
else if (_tcslen(p) > 4 && _tcsncmp(p, _T("sys:"), 4) == 0) // 'system' substitution
- {
+ {
p += 4;
GetSysSubstText(hContact, p, swzAlt, VALUE_LEN);
- }
+ }
else
{
// see if we can find the bSubst
DSListNode *ds_node = opt.dsList;
- while(ds_node)
+ while(ds_node)
{
if (_tcscmp(ds_node->ds.swzName, p) == 0)
break;
-
+
ds_node = ds_node->next;
}
@@ -706,28 +706,28 @@ bool ApplySubst(HANDLE hContact, const TCHAR *swzSource, bool parseTipperVarsFir {
GetSubstText(hContact, ds_node->ds, swzAlt, VALUE_LEN);
}
- else
+ else
{
_tcsncpy(swzAlt, p, VALUE_LEN);
bAltSubst = true;
}
}
swzAlt[VALUE_LEN - 1] = 0;
- if (_tcslen(swzAlt) != 0)
+ if (_tcslen(swzAlt) != 0)
bAltSubst = true;
}
-
+
// get bSubst text
if (v > 4 && _tcsncmp(swzVName, _T("raw:"), 4) == 0) // raw db substitution
- {
+ {
char raw_spec[LABEL_LEN];
t2a(&swzVName[4], raw_spec, LABEL_LEN);
bSubst = GetRawSubstText(hContact, raw_spec, swzRep, VALUE_LEN);
- }
+ }
else if (v > 4 && _tcsncmp(swzVName, _T("sys:"), 4) == 0) // 'system' substitution
{
bSubst = GetSysSubstText(hContact, &swzVName[4], swzRep, VALUE_LEN);
- }
+ }
else
{
// see if we can find the bSubst
@@ -736,13 +736,13 @@ bool ApplySubst(HANDLE hContact, const TCHAR *swzSource, bool parseTipperVarsFir {
if (_tcscmp(ds_node->ds.swzName, swzVName) == 0)
break;
-
+
ds_node = ds_node->next;
}
- if (!ds_node)
+ if (!ds_node)
goto error; // no such bSubst
-
+
bSubst = GetSubstText(hContact, ds_node->ds, swzRep, VALUE_LEN);
}
@@ -757,18 +757,18 @@ bool ApplySubst(HANDLE hContact, const TCHAR *swzSource, bool parseTipperVarsFir size_t alt_len = _tcslen(swzAlt);
_tcsncpy(&swzDest[di], swzAlt, min(alt_len, iDestLen - di));
di += alt_len - 1; // -1 because we inc at bottom of loop
- }
+ }
else
{
goto empty; // empty value
}
- }
+ }
else // no end % - error
{
goto error;
}
- }
+ }
else
{
swzDest[di] = swzVarSrc[si];
@@ -790,7 +790,7 @@ bool ApplySubst(HANDLE hContact, const TCHAR *swzSource, bool parseTipperVarsFir // check for a 'blank' string - just spaces etc
- for (si = 0; si <= di; si++)
+ for (si = 0; si <= di; si++)
{
if (swzDest[si] != 0 && swzDest[si] != _T(' ') && swzDest[si] != _T('\t') && swzDest[si] != _T('\r') && swzDest[si] != _T('\n'))
return true;
@@ -809,21 +809,21 @@ error: return true;
}
-bool GetLabelText(HANDLE hContact, const DISPLAYITEM &di, TCHAR *buff, int bufflen)
+bool GetLabelText(HANDLE hContact, const DISPLAYITEM &di, TCHAR *buff, int bufflen)
{
return ApplySubst(hContact, di.swzLabel, false, buff, bufflen);
}
-bool GetValueText(HANDLE hContact, const DISPLAYITEM &di, TCHAR *buff, int bufflen)
+bool GetValueText(HANDLE hContact, const DISPLAYITEM &di, TCHAR *buff, int bufflen)
{
return ApplySubst(hContact, di.swzValue, di.bParseTipperVarsFirst, buff, bufflen);
}
-void TruncateString(TCHAR *swzText)
+void TruncateString(TCHAR *swzText)
{
- if (swzText && opt.iLimitCharCount > 3)
+ if (swzText && opt.iLimitCharCount > 3)
{
- if ((int)_tcslen(swzText) > opt.iLimitCharCount)
+ if ((int)_tcslen(swzText) > opt.iLimitCharCount)
{
swzText[opt.iLimitCharCount - 3] = 0;
_tcscat(swzText, _T("..."));
@@ -831,16 +831,16 @@ void TruncateString(TCHAR *swzText) }
}
-TCHAR *GetProtoStatusMessage(char *szProto, WORD wStatus)
+TCHAR *GetProtoStatusMessage(char *szProto, WORD wStatus)
{
- if (!szProto || wStatus == ID_STATUS_OFFLINE)
+ if (!szProto || wStatus == ID_STATUS_OFFLINE)
return NULL;
// check if protocol supports status message for status
int flags = CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_3, 0);
if (!(flags & Proto_Status2Flag(wStatus)))
return NULL;
-
+
TCHAR *swzText = (TCHAR *)CallProtoService(szProto, PS_GETMYAWAYMSG, 0, SGMA_TCHAR);
if ((INT_PTR)swzText == CALLSERVICE_NOTFOUND)
{
@@ -866,65 +866,65 @@ TCHAR *GetProtoStatusMessage(char *szProto, WORD wStatus) }
if (swzText && opt.bLimitMsg)
- TruncateString(swzText);
+ TruncateString(swzText);
return swzText;
}
-TCHAR *GetProtoExtraStatusTitle(char *szProto)
+TCHAR *GetProtoExtraStatusTitle(char *szProto)
{
DBVARIANT dbv;
TCHAR *swzText = NULL;
- if (!szProto)
+ if (!szProto)
return NULL;
- if (!DBGetContactSettingTString(0, szProto, "XStatusName", &dbv))
+ if (!DBGetContactSettingTString(0, szProto, "XStatusName", &dbv))
{
- if (_tcslen(dbv.ptszVal) != 0)
+ if (_tcslen(dbv.ptszVal) != 0)
swzText = mir_tstrdup(dbv.ptszVal);
DBFreeVariant(&dbv);
- }
+ }
- if (!swzText)
+ if (!swzText)
{
TCHAR buff[256];
if (EmptyXStatusToDefaultName(0, szProto, 0, buff, 256))
swzText = mir_tstrdup(buff);
- }
+ }
if (opt.bLimitMsg)
- TruncateString(swzText);
+ TruncateString(swzText);
return swzText;
}
-TCHAR *GetProtoExtraStatusMessage(char *szProto)
+TCHAR *GetProtoExtraStatusMessage(char *szProto)
{
DBVARIANT dbv;
TCHAR *swzText = NULL;
- if (!szProto)
+ if (!szProto)
return NULL;
- if (!DBGetContactSettingTString(0, szProto, "XStatusMsg", &dbv))
+ if (!DBGetContactSettingTString(0, szProto, "XStatusMsg", &dbv))
{
if (_tcslen(dbv.ptszVal) != 0)
swzText = mir_tstrdup(dbv.ptszVal);
DBFreeVariant(&dbv);
if (ServiceExists(MS_VARS_FORMATSTRING))
- {
+ {
HANDLE hContact = db_find_first();
char *proto = GetContactProto(hContact);
while(!proto)
{
hContact = db_find_next(hContact);
- if (hContact)
+ if (hContact)
{
proto = GetContactProto(hContact);
}
- else
+ else
{
hContact = NULL;
break;
@@ -932,27 +932,23 @@ TCHAR *GetProtoExtraStatusMessage(char *szProto) }
TCHAR *tszParsed = (TCHAR *)variables_parse(swzText, NULL, hContact);
- if (tszParsed)
- {
- mir_free(swzText);
- swzText = mir_tstrdup(tszParsed);
- variables_free(tszParsed);
- }
+ if (tszParsed)
+ replaceStrT(swzText, tszParsed);
}
}
if (opt.bLimitMsg)
- TruncateString(swzText);
+ TruncateString(swzText);
return swzText;
}
-TCHAR *GetListeningTo(char *szProto)
+TCHAR *GetListeningTo(char *szProto)
{
DBVARIANT dbv;
TCHAR *swzText = NULL;
- if (!szProto)
+ if (!szProto)
return NULL;
if (!DBGetContactSettingTString(0, szProto, "ListeningTo", &dbv))
@@ -963,18 +959,18 @@ TCHAR *GetListeningTo(char *szProto) }
if (opt.bLimitMsg)
- TruncateString(swzText);
+ TruncateString(swzText);
return swzText;
}
-TCHAR *GetJabberAdvStatusText(char *szProto, const char *szSlot, const char *szValue)
+TCHAR *GetJabberAdvStatusText(char *szProto, const char *szSlot, const char *szValue)
{
DBVARIANT dbv;
TCHAR *swzText = NULL;
char szSetting[128];
- if (!szProto)
+ if (!szProto)
return NULL;
mir_snprintf(szSetting, SIZEOF(szSetting), "%s/%s/%s", szProto, szSlot, szValue);
@@ -986,22 +982,22 @@ TCHAR *GetJabberAdvStatusText(char *szProto, const char *szSlot, const char *szV }
if (opt.bLimitMsg)
- TruncateString(swzText);
+ TruncateString(swzText);
return swzText;
}
-HICON GetJabberActivityIcon(HANDLE hContact, char *szProto)
-{
+HICON GetJabberActivityIcon(HANDLE hContact, char *szProto)
+{
DBVARIANT dbv;
HICON hIcon = NULL;
char szSetting[128];
- if (!szProto)
+ if (!szProto)
return NULL;
mir_snprintf(szSetting, SIZEOF(szSetting), "%s/%s/%s", szProto, "activity", "icon");
- if (!DBGetContactSettingString(hContact, "AdvStatus", szSetting, &dbv))
+ if (!DBGetContactSettingString(hContact, "AdvStatus", szSetting, &dbv))
{
hIcon = Skin_GetIcon(dbv.pszVal);
DBFreeVariant(&dbv);
|