From b9278adb04c824b47da7ac0ec7c1c8ef5931c888 Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Tue, 30 Nov 2010 20:04:58 +0200 Subject: modified: messages.cpp modified: utilities.cpp modified: utilities.h --- messages.cpp | 17 ++++++++++++----- utilities.cpp | 12 +++++++++++- utilities.h | 1 + 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/messages.cpp b/messages.cpp index 1509958..3601604 100644 --- a/messages.cpp +++ b/messages.cpp @@ -150,7 +150,7 @@ int RecvMsgSvc(WPARAM w, LPARAM l) { setSrmmIcon(metaGetContact(hContact)); setClistIcon(metaGetContact(hContact)); - HistoryLog(metaGetContact(hContact), "PGP Encryption turned on by key autoexchange feature", EVENTTYPE_MESSAGE, DBEF_READ); + HistoryLog(metaGetContact(hContact), "PGP Encryption turned on by key autoexchange feature", EVENTTYPE_MESSAGE, 0); } HistoryLog(hContact, "PGP Encryption turned on by key autoexchange feature", EVENTTYPE_MESSAGE, 0); } @@ -610,9 +610,16 @@ int SendMsgSvc(WPARAM w, LPARAM l) if(!isContactSecured(hContact)) return CallService(MS_PROTO_CHAINSEND, w, l); - { //encrypt data here - wstring str = toUTF16(msg); + wstring str; + if(!metaIsSubcontact(hContact)) + str = toUTF16(msg); + else + {//workaround ... + wchar_t *tmp = mir_a2t(msg); + str.append(tmp); + mir_free(tmp); + } { //not xmpp, just replace whole message string out; DWORD code; @@ -730,8 +737,8 @@ int SendMsgSvc(WPARAM w, LPARAM l) str_event.insert(0, toUTF8(outopentag)); str_event.append(toUTF8(outclosetag)); } - HistoryLog(hContact, (char*)str_event.c_str(), EVENTTYPE_MESSAGE, DBEF_SENT | DBEF_UTF); - HistoryLog(metaGetContact(hContact), (char*)str_event.c_str(), EVENTTYPE_MESSAGE, DBEF_SENT | DBEF_UTF); + HistoryLog(hContact, (char*)str_event.c_str(), EVENTTYPE_MESSAGE, DBEF_SENT); + HistoryLog(metaGetContact(hContact), (char*)str_event.c_str(), EVENTTYPE_MESSAGE, DBEF_SENT); hcontact_data[hContact].msgs_to_ignore.push_back((char*)ccs->lParam); hcontact_data[metaGetContact(hContact)].msgs_to_ignore.push_back((char*)ccs->lParam); //hmm, twice ? metacontacts !! %) CallContactService(hContact, PSS_MESSAGE, (WPARAM)PREF_UTF, (LPARAM)toUTF8(str).c_str()); diff --git a/utilities.cpp b/utilities.cpp index 66389f0..b462a23 100644 --- a/utilities.cpp +++ b/utilities.cpp @@ -438,7 +438,7 @@ void HistoryLog(HANDLE hContact, char *data, int event_type, int flags) Event.cbSize = sizeof(Event); Event.szModule = szGPGModuleName; Event.eventType = event_type; - Event.flags = flags, DBEF_UTF; + Event.flags = flags; Event.timestamp = (DWORD)time(NULL); Event.cbBlob = strlen(data)+1; Event.pBlob = (PBYTE)_strdup(data); @@ -940,6 +940,16 @@ string toUTF8(wstring str) return ustr; } +string toUTF8(string str) +{ + string ustr; + wstring tmpstr; + utf8::replace_invalid(str.begin(), str.end(), back_inserter(tmpstr)); + utf8::utf16to8(tmpstr.begin(), tmpstr.end(), back_inserter(ustr)); + return ustr; +} + + wstring toUTF16(string str) //convert as much as possible { wstring ustr; diff --git a/utilities.h b/utilities.h index 7255724..3871f67 100644 --- a/utilities.h +++ b/utilities.h @@ -32,6 +32,7 @@ bool isContactHaveKey(HANDLE hContact); bool isGPGConfigured(); const bool StriStr(const char *str, const char *substr); string toUTF8(wstring str); +string toUTF8(string str); wstring toUTF16(string str); string get_random(int length); string time_str(); -- cgit v1.2.3