diff options
author | george.hazan <george.hazan@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb> | 2012-03-21 18:41:38 +0000 |
---|---|---|
committer | george.hazan <george.hazan@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb> | 2012-03-21 18:41:38 +0000 |
commit | bcf348d1f7e3ba5e9f939c997de1f34d836346e5 (patch) | |
tree | 876752c15d3517a11d52dc38f8e2b62aa4e6d5f8 | |
parent | de0c391964f20214bedcffa954c162360675d3b1 (diff) |
fix for avatars
git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@280 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb
-rw-r--r-- | IEView/TemplateHTMLBuilder.cpp | 51 | ||||
-rw-r--r-- | IEView/TemplateHTMLBuilder.h | 2 | ||||
-rw-r--r-- | IEView/ieview_common.h | 3 |
3 files changed, 30 insertions, 26 deletions
diff --git a/IEView/TemplateHTMLBuilder.cpp b/IEView/TemplateHTMLBuilder.cpp index 54803b0..f5c49bc 100644 --- a/IEView/TemplateHTMLBuilder.cpp +++ b/IEView/TemplateHTMLBuilder.cpp @@ -48,8 +48,8 @@ TemplateHTMLBuilder::~TemplateHTMLBuilder() { char *TemplateHTMLBuilder::getAvatar(HANDLE hContact, const char * szProto) {
DBVARIANT dbv;
- char tmpPath[MAX_PATH];
- char *result = NULL;
+ TCHAR tmpPath[MAX_PATH];
+ TCHAR *result = NULL;
if (Options::getAvatarServiceFlags() == Options::AVATARSERVICE_PRESENT) {
struct avatarCacheEntry *ace = NULL;
@@ -59,40 +59,47 @@ char *TemplateHTMLBuilder::getAvatar(HANDLE hContact, const char * szProto) { ace = (struct avatarCacheEntry *)CallService(MS_AV_GETAVATARBITMAP, (WPARAM)hContact, (LPARAM)0);
}
if (ace!=NULL) {
- result = ace->szFilename;
+ if ( ace->cbSize == sizeof(avatarCacheEntry))
+ result = ace->szFilename;
+ else {
+ // compatibility: in M0.9 it will always be char*
+ #if defined( _UNICODE )
+ MultiByteToWideChar( CP_ACP, 0, (char*)ace->szFilename, -1, tmpPath, SIZEOF(tmpPath));
+ #endif
+ }
}
}
- if (!DBGetContactSetting(hContact, "ContactPhoto", "File",&dbv)) {
- if (strlen(dbv.pszVal) > 0) {
- char* ext = strrchr(dbv.pszVal, '.');
- if (ext && strcmpi(ext, ".xml") == 0) {
- result = (char *)getFlashAvatar(dbv.pszVal, (hContact == NULL) ? 1 : 0);
+ if (!DBGetContactSettingTString(hContact, "ContactPhoto", "File", &dbv)) {
+ if (_tcslen(dbv.ptszVal) > 0) {
+ TCHAR* ext = _tcsrchr(dbv.ptszVal, '.');
+ if (ext && lstrcmpi(ext, _T(".xml")) == 0) {
+ result = ( TCHAR* )getFlashAvatar(dbv.ptszVal, (hContact == NULL) ? 1 : 0);
} else {
if (result == NULL) {
/* relative -> absolute */
- strcpy (tmpPath, dbv.pszVal);
- if (ServiceExists(MS_UTILS_PATHTOABSOLUTE)&& strncmp(tmpPath, "http://", 7)) {
- CallService(MS_UTILS_PATHTOABSOLUTE, (WPARAM)dbv.pszVal, (LPARAM)tmpPath);
- }
+ _tcscpy (tmpPath, dbv.ptszVal);
+ if (ServiceExists(MS_UTILS_PATHTOABSOLUTET) && _tcsncmp(tmpPath, _T("http://"), 7))
+ CallService(MS_UTILS_PATHTOABSOLUTET, (WPARAM)dbv.ptszVal, (LPARAM)tmpPath);
+
result = tmpPath;
}
}
}
DBFreeVariant(&dbv);
}
- result = Utils::UTF8Encode(result);
- Utils::convertPath(result);
- return result;
+ char* res = Utils::UTF8Encode(result);
+ Utils::convertPath(res);
+ return res;
}
-const char *TemplateHTMLBuilder::getFlashAvatar(const char *file, int index) {
+const char *TemplateHTMLBuilder::getFlashAvatar(const TCHAR *file, int index) {
if (time(NULL) - flashAvatarsTime[index] > 600 || flashAvatars[index] == NULL) {
if (flashAvatars[index] != NULL) {
delete flashAvatars[index];
flashAvatars[index] = NULL;
}
flashAvatarsTime[index] = time(NULL);
- int src = _open(file, _O_BINARY | _O_RDONLY);
+ int src = _topen(file, _O_BINARY | _O_RDONLY);
if (src != -1) {
char pBuf[2048];
char *urlBuf;
@@ -160,10 +167,10 @@ void TemplateHTMLBuilder::buildHeadTemplate(IEView *view, IEVIEWEVENT *event, Pr char *szProto = NULL;
char *szNameIn = NULL;
char *szNameOut = NULL;
- char *szUINIn = NULL;
- char *szUINOut = NULL;
char *szAvatarIn = NULL;
char *szAvatarOut = NULL;
+ char *szUINIn = NULL;
+ char *szUINOut = NULL;
char *szNickIn = NULL;
char *szNickOut = NULL;
char *szStatusMsg = NULL;
@@ -175,14 +182,12 @@ void TemplateHTMLBuilder::buildHeadTemplate(IEView *view, IEVIEWEVENT *event, Pr szRealProto = getProto(hRealContact);
szProto = getProto(event->pszProto, event->hContact);
tempBase[0]='\0';
- if (protoSettings == NULL) {
+ if (protoSettings == NULL)
return;
- }
TemplateMap *tmpm = getTemplateMap(protoSettings);
- if (tmpm==NULL) {
+ if (tmpm==NULL)
return;
- }
strcpy(tempBase, "file://");
strcat(tempBase, tmpm->getFilename());
diff --git a/IEView/TemplateHTMLBuilder.h b/IEView/TemplateHTMLBuilder.h index 722acc5..a6193db 100644 --- a/IEView/TemplateHTMLBuilder.h +++ b/IEView/TemplateHTMLBuilder.h @@ -35,7 +35,7 @@ protected: const char *groupTemplate;
time_t flashAvatarsTime[2];
char * flashAvatars[2];
- const char *getFlashAvatar(const char *file, int index);
+ const char *getFlashAvatar(const TCHAR *file, int index);
char *getAvatar(HANDLE hContact, const char *szProto);
void buildHeadTemplate(IEView *, IEVIEWEVENT *event, ProtocolSettings* protoSettings);
void appendEventTemplate(IEView *, IEVIEWEVENT *event, ProtocolSettings* protoSettings);
diff --git a/IEView/ieview_common.h b/IEView/ieview_common.h index 54fc066..4be574b 100644 --- a/IEView/ieview_common.h +++ b/IEView/ieview_common.h @@ -31,8 +31,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef IEVIEW_COMMON_H
#define IEVIEW_COMMON_H
-#define MIRANDA_VER 0x0900
-#define MIRANDA_CUSTOM_LP
+#define MIRANDA_VER 0x0A00
#include <windows.h>
#include <commctrl.h>
|