diff options
Diffstat (limited to 'plugins/SmartAutoReplier/ModeMessHandler.cpp')
| -rw-r--r-- | plugins/SmartAutoReplier/ModeMessHandler.cpp | 119 | 
1 files changed, 119 insertions, 0 deletions
diff --git a/plugins/SmartAutoReplier/ModeMessHandler.cpp b/plugins/SmartAutoReplier/ModeMessHandler.cpp new file mode 100644 index 0000000000..5509bea091 --- /dev/null +++ b/plugins/SmartAutoReplier/ModeMessHandler.cpp @@ -0,0 +1,119 @@ +/*
 + *  Smart Auto Replier (SAR) - auto replier plugin for Miranda IM
 + *
 + *  Copyright (C) 2004 - 2012 by Volodymyr M. Shcherbyna <volodymyr@shcherbyna.com>
 + *
 + *      This file is part of SAR.
 + *
 + *  SAR 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 3 of the License, or
 + *  (at your option) any later version.
 + *
 + *  SAR 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 SAR.  If not, see <http://www.gnu.org/licenses/>.
 +*/
 +
 +#include "stdafx.h"
 +#include "modemesshandler.h"
 +
 +/// TODO: add comments and change char* to TCHAR* !!!
 +
 +/// ctor
 +CModeMessHandler::CModeMessHandler(void)
 +{
 +}
 +
 +/// dtor
 +CModeMessHandler::~CModeMessHandler(void)
 +{
 +}
 +
 +TCHAR * CModeMessHandler::StatusModeToDbSetting(int status, TCHAR *suffix)
 +{
 +    LPTSTR prefix;
 +	static TCHAR str[64] = {0};
 +
 +	switch(status) {
 +		case ID_STATUS_AWAY: prefix = TEXT("Away");	break;
 +		case ID_STATUS_NA: prefix = TEXT("Na");	break;
 +		case ID_STATUS_DND: prefix = TEXT("Dnd"); break;
 +		case ID_STATUS_OCCUPIED: prefix = TEXT("Occupied"); break;
 +		case ID_STATUS_FREECHAT: prefix = TEXT("FreeChat"); break;
 +		case ID_STATUS_ONLINE: prefix = TEXT("On"); break;
 +		case ID_STATUS_OFFLINE: prefix = TEXT("Off"); break;
 +		case ID_STATUS_INVISIBLE: prefix = TEXT("Inv"); break;
 +		case ID_STATUS_ONTHEPHONE: prefix = TEXT("Otp"); break;
 +		case ID_STATUS_OUTTOLUNCH: prefix = TEXT("Otl"); break;
 +		default: 
 +			return NULL;
 +	}
 +	lstrcpy(str, prefix); 
 +	_tcscat(str, suffix);
 +
 +	return str;
 +}
 +
 +LPTSTR CModeMessHandler::GetDefaultMessage(INT status)
 +{
 +	switch (status)
 +	{
 +		case ID_STATUS_AWAY:	return TranslateTS(TEXT("I've been away since %time%."));
 +		case ID_STATUS_NA:		return TranslateTS(TEXT("Give it up, I'm not in!"));
 +		case ID_STATUS_OCCUPIED: return TranslateTS(TEXT("Not right now."));
 +		case ID_STATUS_DND: return TranslateTS(TEXT("Give a guy some peace, would ya?"));
 +		case ID_STATUS_FREECHAT: return TranslateTS(TEXT("Well, I would talk to you if Miranda IM supported chat"));
 +		case ID_STATUS_ONLINE: return TranslateTS(TEXT("Yep, I'm here."));
 +		case ID_STATUS_OFFLINE: return TranslateTS(TEXT("Nope, not here."));
 +		case ID_STATUS_INVISIBLE: return TranslateTS(TEXT("I'm hiding from the mafia."));
 +		case ID_STATUS_ONTHEPHONE: return TranslateTS(TEXT("That'll be the phone."));
 +		case ID_STATUS_OUTTOLUNCH: return TranslateTS(TEXT("Mmm...food."));
 +	}
 +	return NULL;
 +}
 +
 +/// returnes mode message
 +/// looks like ret. val should be free(), but
 +/// read notes in the place where this func is used
 +LPTSTR CModeMessHandler::GetModeMessage(INT statusMode)
 +{
 +	/*DBVARIANT dbv = {0};
 +	INT nretVal = {0};	/// suppose failure..
 +
 +	nretVal = DBGetContactSetting(NULL, TCHAR("SRAway"), StatusModeToDbSetting(statusMode, TCHAR("Msg")), &dbv);
 +	if (nretVal) /// unable to get away msg...
 +	{
 +		dbv.pszVal = _tcsdup(GetDefaultMessage(statusMode));
 +		if (dbv.pszVal == NULL) /// maybe will occure ;)
 +		{
 +			DBGetContactSetting(NULL, TCHAR("SRAway"), StatusModeToDbSetting(statusMode, TCHAR("Default")), &dbv);
 +		}
 +	}
 +
 +	int i;
 +	TCHAR substituteStr[128] = {0};
 +	for(i = 0; dbv.pszVal[i]; i++)
 +	{
 +		if (dbv.pszVal[i] != '%')
 +			continue;
 +		if (!_tcsncicmp((TCHAR*)dbv.pszVal+i, TEXT("%time%"), 6))
 +			GetTimeFormat(LOCALE_USER_DEFAULT, TIME_NOSECONDS, NULL, NULL, substituteStr, sizeof(substituteStr) / sizeof (TCHAR));
 +		else if (!_tcsncicmp((TCHAR*)dbv.pszVal+i, TEXT("%date%"), 6))
 +			GetDateFormat(LOCALE_USER_DEFAULT, DATE_SHORTDATE, NULL, NULL, substituteStr, sizeof(substituteStr) / sizeof(TCHAR));
 +		else
 +			continue;
 +		if (_tcslen(substituteStr) > 6) 
 +			dbv.pszVal = ((TCHAR*))realloc((TCHAR*)dbv.pszVal, _tcslen((TCHAR*)dbv.pszVal) + 1 + _tcslen(substituteStr) - 6);
 +		MoveMemory(dbv.pszVal + i + _tcslen(substituteStr), dbv.pszVal + i + 6, _tcslen(dbv.pszVal) - i - 5);
 +		CopyMemory(dbv.pszVal + i, substituteStr, _tcslen(substituteStr));
 +	}*/
 +
 +	//return dbv.pszVal;
 +
 +	return NULL;
 +}
\ No newline at end of file  | 
