summaryrefslogtreecommitdiff
path: root/plugins/!Deprecated/Skype/src/skype_settings.cpp
blob: 4b4c7482c9db3fae10f81d86e08ed3de7490641e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include "skype_proto.h"

BYTE CSkypeProto::GetSettingByte(HANDLE hContact, const char *setting, BYTE errorValue)
{
	return ::db_get_b(hContact, this->m_szModuleName, setting, errorValue);
}

BYTE CSkypeProto::GetSettingByte(const char *setting, BYTE errorValue)
{
	return this->GetSettingByte(NULL, setting, errorValue);
}

WORD CSkypeProto::GetSettingWord(HANDLE hContact, const char *setting, WORD errorValue)
{
	return ::db_get_w(hContact, this->m_szModuleName, setting, errorValue);
}

WORD CSkypeProto::GetSettingWord(const char *setting, WORD errorValue)
{
	return this->GetSettingWord(NULL, setting, errorValue);
}

DWORD CSkypeProto::GetSettingDword(HANDLE hContact, const char *setting, DWORD errorValue)
{
	return ::db_get_dw(hContact, this->m_szModuleName, setting, errorValue);
}

DWORD CSkypeProto::GetSettingDword(const char *setting, DWORD errorValue)
{
	return this->GetSettingDword(NULL, setting, errorValue);
}

wchar_t* CSkypeProto::GetSettingString(HANDLE hContact, const char *setting, wchar_t* errorValue)
{
	DBVARIANT dbv = {0};
	wchar_t* result = NULL;

	if ( !::db_get_ws(hContact, this->m_szModuleName, setting, &dbv))
	{
		result = ::mir_wstrdup(dbv.pwszVal);
		::db_free(&dbv);
	}
	else
	{
		result = ::mir_wstrdup(errorValue);
	}

	return result;
}

wchar_t* CSkypeProto::GetSettingString(const char *setting, wchar_t* errorValue)
{
	return this->GetSettingString(NULL, setting, errorValue);
}

char* CSkypeProto::GetDecodeSettingString(HANDLE hContact, const char *setting, char* errorValue)
{
	DBVARIANT dbv = {0};
	char* result = NULL;

	if ( !::db_get_s(hContact, this->m_szModuleName, setting, &dbv))
	{
		result = ::mir_strdup(dbv.pszVal);
		::db_free(&dbv);

		::CallService(
			MS_DB_CRYPT_DECODESTRING,
			::strlen(result),
			reinterpret_cast<LPARAM>(result));
	}
	else result = ::mir_strdup(errorValue);

	return result;
}

//

bool CSkypeProto::SetSettingByte(HANDLE hContact, const char *setting, BYTE value)
{
	return !::db_set_b(hContact, this->m_szModuleName, setting, value);
}

bool CSkypeProto::SetSettingByte(const char *setting, BYTE errorValue)
{
	return this->SetSettingByte(NULL, setting, errorValue);
}

bool CSkypeProto::SetSettingWord(HANDLE hContact, const char *setting, WORD value)
{
	return !::db_set_w(hContact, this->m_szModuleName, setting, value);
}

bool CSkypeProto::SetSettingWord(const char *setting, WORD value)
{
	return this->SetSettingWord(NULL, setting, value);
}

bool CSkypeProto::SetSettingDword(HANDLE hContact, const char *setting, DWORD value)
{
	return !::db_set_dw(hContact, this->m_szModuleName, setting, value);
}

bool CSkypeProto::SetSettingDword(const char *setting, DWORD value)
{
	return this->SetSettingDword(NULL, setting, value);
}

bool CSkypeProto::SetSettingString(HANDLE hContact, const char *szSetting, const wchar_t* value)
{
	return !::db_set_ws(hContact, this->m_szModuleName, szSetting, value);
}

bool CSkypeProto::SetSettingString(const char *szSetting, const wchar_t* value)
{
	return this->SetSettingString(NULL, szSetting, value);
}

bool CSkypeProto::SetDecodeSettingString(HANDLE hContact, const char *setting, const char* value)
{
	if( ::strcmp(value, ""))
	{
		mir_ptr<char> result (::mir_strdup(value));
		::CallService(MS_DB_CRYPT_ENCODESTRING, strlen(result), LPARAM((char*)result));
		
		return !db_set_s(hContact, m_szModuleName, setting, result);
	}
	
	return !this->SetSettingString(hContact, setting, L"");
}

//

void CSkypeProto::DeleteSetting(const char *setting)
{
	this->DeleteSetting(NULL, setting);
}

void CSkypeProto::DeleteSetting(HANDLE hContact, const char *setting)
{
	::db_unset(hContact, this->m_szModuleName, setting);
}