summaryrefslogtreecommitdiff
path: root/plugins/NewXstatusNotify/utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/NewXstatusNotify/utils.cpp')
-rw-r--r--plugins/NewXstatusNotify/utils.cpp124
1 files changed, 124 insertions, 0 deletions
diff --git a/plugins/NewXstatusNotify/utils.cpp b/plugins/NewXstatusNotify/utils.cpp
new file mode 100644
index 0000000000..0037639827
--- /dev/null
+++ b/plugins/NewXstatusNotify/utils.cpp
@@ -0,0 +1,124 @@
+/*
+ NewXstatusNotify YM - Plugin for Miranda IM
+ Copyright (c) 2001-2004 Luca Santarelli
+ Copyright (c) 2005-2007 Vasilich
+ Copyright (c) 2007-2011 yaho
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#include "common.h"
+#include "options.h"
+
+extern OPTIONS opt;
+extern STATUS StatusList[STATUS_COUNT];
+
+TCHAR *db2t(DBVARIANT *dbv)
+{
+ TCHAR *buff;
+ switch (dbv->type)
+ {
+ case DBVT_ASCIIZ: buff = mir_a2t(dbv->pszVal); break;
+ case DBVT_WCHAR: buff = mir_tstrdup(dbv->ptszVal); break;
+ case DBVT_UTF8: buff = mir_utf8decodeT(dbv->pszVal); break;
+ default: buff = mir_tstrdup(_T(""));
+ }
+
+ if (buff[0] == 0)
+ {
+ mir_free(buff);
+ buff = NULL;
+ }
+
+ return buff;
+}
+
+int DBGetStringDefault(HANDLE hContact, const char *szModule, const char *szSetting, TCHAR *setting, int size, const TCHAR *defaultValue)
+{
+ DBVARIANT dbv;
+ if(!DBGetContactSettingTString(hContact, szModule, szSetting, &dbv))
+ {
+ _tcsncpy(setting, dbv.ptszVal, size);
+ DBFreeVariant(&dbv);
+ return 0;
+ }
+
+ _tcsncpy(setting, defaultValue, size);
+ return 1;
+}
+
+void HigherLower(int maxValue, int minValue)
+{
+ TCHAR str[64] = { 0 };
+ wsprintf(str, TranslateT("You cannot specify a value lower than %d and higher than %d."), minValue, maxValue);
+}
+
+void ShowLog(TCHAR *file)
+{
+ int res = (int)ShellExecute(NULL, _T("open"), file, NULL, NULL, SW_SHOW);
+ if (res <= 32) // error
+ MessageBox(0, TranslateT("Can't open the log file!"), TranslateT("NewXstatusNotify"), MB_OK | MB_ICONERROR);
+}
+
+int ProtoServiceExists(const char *szModule, const char *szService)
+{
+ char str[MAXMODULELABELLENGTH];
+ if (szModule == NULL || szService == NULL)
+ return 0;
+
+ strcpy(str,szModule);
+ strcat(str,szService);
+ return ServiceExists(str);
+}
+
+BOOL StatusHasAwayMessage(char *szProto, int status)
+{
+ if (szProto != NULL)
+ {
+ unsigned long iSupportsSM = (unsigned long)CallProtoService(szProto, PS_GETCAPS, (WPARAM)PFLAGNUM_3, (LPARAM)0);
+ return (iSupportsSM & Proto_Status2Flag(status)) ? TRUE : FALSE;
+ }
+ else
+ {
+ switch (status)
+ {
+ case ID_STATUS_AWAY:
+ case ID_STATUS_NA:
+ case ID_STATUS_OCCUPIED:
+ case ID_STATUS_DND:
+ case ID_STATUS_FREECHAT:
+ case ID_STATUS_ONTHEPHONE:
+ case ID_STATUS_OUTTOLUNCH:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+ }
+}
+
+void LogToFile(TCHAR *stzText)
+{
+ FILE *fp = _tfopen(opt.LogFilePath, _T("a+b, ccs=UTF-8"));
+ if (fp)
+ {
+ char *encodedText = mir_utf8encodeT(stzText);
+ if (encodedText)
+ {
+ fprintf(fp, encodedText);
+ mir_free(encodedText);
+ }
+ fclose(fp);
+ }
+} \ No newline at end of file