diff options
Diffstat (limited to 'updater/popups.cpp')
-rw-r--r-- | updater/popups.cpp | 264 |
1 files changed, 72 insertions, 192 deletions
diff --git a/updater/popups.cpp b/updater/popups.cpp index 7d7e20a..95911f4 100644 --- a/updater/popups.cpp +++ b/updater/popups.cpp @@ -1,7 +1,7 @@ #include "common.h"
#include "popups.h"
-bool bPopupsEnabled = false;
+bool bPopupsEnabled;
HWND hwndPop = 0;
@@ -21,7 +21,7 @@ LRESULT CALLBACK NullWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM case UM_INITPOPUP:
{
PopupDataType* popup = (PopupDataType*)CallService(MS_POPUP_GETPLUGINDATA, (WPARAM)hWnd,0);
- if(popup->flags & POPFLAG_SAVEHWND) hwndPop = hWnd;
+ if (popup->flags & POPFLAG_SAVEHWND) hwndPop = hWnd;
}
return 0;
case WMU_CLOSEPOP:
@@ -32,7 +32,7 @@ LRESULT CALLBACK NullWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM case WM_COMMAND:
{
PopupDataType* popup = (PopupDataType*)CallService(MS_POPUP_GETPLUGINDATA, (WPARAM)hWnd,0);
- if(popup->flags & POPFLAG_SAVEHWND) pop_cancelled = false;
+ if (popup->flags & POPFLAG_SAVEHWND) pop_cancelled = false;
}
SetEvent(hEventPop);
PUDeletePopUp( hWnd );
@@ -41,7 +41,7 @@ LRESULT CALLBACK NullWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM case WM_CONTEXTMENU:
{
PopupDataType* popup = (PopupDataType*)CallService(MS_POPUP_GETPLUGINDATA, (WPARAM)hWnd,0);
- if(popup->flags & POPFLAG_SAVEHWND) pop_cancelled = true;
+ if (popup->flags & POPFLAG_SAVEHWND) pop_cancelled = true;
}
SetEvent(hEventPop);
PUDeletePopUp( hWnd );
@@ -49,11 +49,11 @@ LRESULT CALLBACK NullWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM case UM_FREEPLUGINDATA: {
PopupDataType* popup = (PopupDataType*)CallService(MS_POPUP_GETPLUGINDATA, (WPARAM)hWnd, 0);
- if ((unsigned)popup != CALLSERVICE_NOTFOUND)
+ if ((INT_PTR)popup != CALLSERVICE_NOTFOUND)
{
if (popup->flags & POPFLAG_SAVEHWND) hwndPop = 0;
- if(popup->hIcon) ReleaseIconEx(popup->hIcon);
- free(popup);
+ if (popup->hIcon) ReleaseIconEx(popup->hIcon);
+ mir_free(popup);
}
return TRUE;
}
@@ -62,46 +62,30 @@ LRESULT CALLBACK NullWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM return DefWindowProc(hWnd, message, wParam, lParam);
}
-void __stdcall sttPopupProcA( void *dwParam )
+void __stdcall sttPopupProc( void* dwParam )
{
- POPUPDATAEX* ppd = ( POPUPDATAEX* )dwParam;
-
- if ( ServiceExists(MS_POPUP_ADDPOPUPEX) )
- CallService( MS_POPUP_ADDPOPUPEX, ( WPARAM )ppd, 0 );
- else
- if ( ServiceExists(MS_POPUP_ADDPOPUP) )
- CallService( MS_POPUP_ADDPOPUP, ( WPARAM )ppd, 0 );
-
- free( ppd );
+ POPUPDATAT* ppd = ( POPUPDATAT* )dwParam;
+ CallService( MS_POPUP_ADDPOPUPT, ( WPARAM )ppd, 0 );
+ mir_free( ppd );
}
-void __stdcall sttPopupProcW( void* dwParam )
-{
- POPUPDATAW* ppd = ( POPUPDATAW* )dwParam;
-
- if ( ServiceExists(MS_POPUP_ADDPOPUPW) )
- CallService( MS_POPUP_ADDPOPUPW, ( WPARAM )ppd, 0 );
-
- free( ppd );
-}
-
-void ShowPopupA( HANDLE hContact, const char* line1, const char* line2, int flags, int timeout )
+void ShowPopup( HANDLE hContact, const TCHAR* line1, const TCHAR* line2, int flags, int timeout )
{
if(CallService(MS_SYSTEM_TERMINATED, 0, 0)) return;
- if ( !ServiceExists( MS_POPUP_ADDPOPUP )) {
- char title[256];
- sprintf(title, "%s Message", MODULE);
+ if ( !ServiceExists( MS_POPUP_ADDPOPUPT )) {
+ TCHAR title[256];
+ mir_sntprintf(title, SIZEOF(title), _T("%s Message"), _T(MODULE));
if(line1 && line2) {
- char *message = new char[strlen(line1) + strlen(line2) + 2]; // newline and null terminator
- sprintf(message, "%s\n%s", line1, line2);
- MessageBoxA( NULL, message, title, MB_OK | MB_ICONINFORMATION );
- delete[] message;
+ size_t len = _tcslen(line1) + _tcslen(line2) + 1;
+ TCHAR *message = (TCHAR*)alloca(len * sizeof(TCHAR)); // newline and null terminator
+ mir_sntprintf(message, len, _T("%s\n%s"), line1, line2);
+ MessageBox( NULL, message, title, MB_OK | MB_ICONINFORMATION );
} else if(line1) {
- MessageBoxA( NULL, line1, title, MB_OK | MB_ICONINFORMATION );
+ MessageBox( NULL, line1, title, MB_OK | MB_ICONINFORMATION );
} else if(line2) {
- MessageBoxA( NULL, line2, title, MB_OK | MB_ICONINFORMATION );
+ MessageBox( NULL, line2, title, MB_OK | MB_ICONINFORMATION );
}
return;
}
@@ -109,39 +93,40 @@ void ShowPopupA( HANDLE hContact, const char* line1, const char* line2, int flag SetEvent(hEventPop);
ResetEvent(hEventPop);
- if(ServiceExists(MS_POPUP_ADDPOPUPCLASS)) {
+ if(ServiceExists(MS_POPUP_ADDPOPUPCLASS))
+ {
POPUPDATACLASS d = {sizeof(d), "updaterpopups"};
- d.pszTitle = (char *)line1;
- d.pszText = (char *)line2;
- d.PluginData = malloc(sizeof(PopupDataType));
+ d.ptszTitle = line1;
+ d.ptszText = line2;
+ d.PluginData = mir_calloc(sizeof(PopupDataType));
((PopupDataType*)d.PluginData)->flags = flags;
- ((PopupDataType*)d.PluginData)->hIcon = 0;
CallService(MS_POPUP_ADDPOPUPCLASS, 0, (LPARAM)&d);
- } else {
-
- POPUPDATAEX* ppd = ( POPUPDATAEX* )malloc( sizeof( POPUPDATAEX ));
- memset((void *)ppd, 0, sizeof(POPUPDATAEX));
+ }
+ else
+ {
+ POPUPDATAT* ppd = ( POPUPDATAT* )mir_calloc( sizeof( POPUPDATAT ));
ppd->lchContact = hContact;
ppd->lchIcon = LoadIconEx(I_CHKUPD);
- if(line1 && line2) {
- strcpy( ppd->lpzContactName, line1 );
- strcpy( ppd->lpzText, line2 );
- } else {
- if(line1) {
- strcpy( ppd->lpzText, line1 );
- } else {
- if(line2)
- strcpy( ppd->lpzText, line2 );
- }
- }
-
- if(options.set_colours) {
+ if (line1 && line2)
+ {
+ _tcscpy( ppd->lptzContactName, line1 );
+ _tcscpy( ppd->lptzText, line2 );
+ }
+ else if (line1)
+ _tcscpy( ppd->lptzText, line1 );
+ else if (line2)
+ _tcscpy( ppd->lptzText, line2 );
+
+ if (options.set_colours)
+ {
ppd->colorBack = options.bkCol;
ppd->colorText = options.textCol;
- } else {
- //ppd->colorText = 0x00FFFFFF; // otherwise old popups are black on black
+ }
+ else
+ {
+ //ppd->colorText = 0x00FFFFFF;
ppd->colorText = 0;
//ppd->colorBack = POPUP_USE_SKINNED_BG;
ppd->colorBack = 0;
@@ -150,182 +135,77 @@ void ShowPopupA( HANDLE hContact, const char* line1, const char* line2, int flag ppd->iSeconds = timeout;
ppd->PluginWindowProc = ( WNDPROC )NullWindowProc;
- ppd->PluginData = malloc(sizeof(PopupDataType));
+ ppd->PluginData = mir_calloc(sizeof(PopupDataType));
((PopupDataType*)ppd->PluginData)->flags = flags;
((PopupDataType*)ppd->PluginData)->hIcon = ppd->lchIcon;
- CallFunctionAsync( sttPopupProcA , ppd );
+ CallFunctionAsync( sttPopupProc , ppd );
}
}
-void ShowPopupW( HANDLE hContact, const wchar_t* line1, const wchar_t* line2, int flags, int timeout )
+void ShowWarning(TCHAR *msg)
{
- if(CallService(MS_SYSTEM_TERMINATED, 0, 0)) return;
-
- if ( !ServiceExists( MS_POPUP_ADDPOPUPW )) {
- wchar_t title[256];
- _snwprintf(title, SIZEOF(title), L"%s Message", _T(MODULE));
-
- if(line1 && line2) {
- size_t len = wcslen(line1) + wcslen(line2) + 1;
- wchar_t *message = (wchar_t*)alloca(len * sizeof(wchar_t)); // newline and null terminator
- _snwprintf(message, len, L"%s\n%s", line1, line2);
- MessageBoxW( NULL, message, title, MB_OK | MB_ICONINFORMATION );
- } else if(line1) {
- MessageBoxW( NULL, line1, title, MB_OK | MB_ICONINFORMATION );
- } else if(line2) {
- MessageBoxW( NULL, line2, title, MB_OK | MB_ICONINFORMATION );
- }
- return;
- }
-
- SetEvent(hEventPop);
- ResetEvent(hEventPop);
-
- if(ServiceExists(MS_POPUP_ADDPOPUPCLASS)) {
- POPUPDATACLASS d = {sizeof(d), "updaterpopups"};
- d.pwszTitle = (wchar_t *)line1;
- d.pwszText = (wchar_t *)line2;
- d.PluginData = malloc(sizeof(PopupDataType));
- ((PopupDataType*)d.PluginData)->flags = flags;
- ((PopupDataType*)d.PluginData)->hIcon = 0;
- CallService(MS_POPUP_ADDPOPUPCLASS, 0, (LPARAM)&d);
- } else {
- POPUPDATAW* ppd = ( POPUPDATAW* )malloc( sizeof( POPUPDATAW ));
- memset((void *)ppd, 0, sizeof(POPUPDATAW));
-
- ppd->lchContact = hContact;
- ppd->lchIcon = LoadIconEx(I_CHKUPD);
+ static const TCHAR title[512] = _T(MODULE) _T(" Warning");
- if(line1 && line2) {
- wcscpy( ppd->lpwzContactName, line1 );
- wcscpy( ppd->lpwzText, line2 );
- } else {
- if(line1) {
- wcscpy( ppd->lpwzText, line1 );
- } else {
- if(line2)
- wcscpy( ppd->lpwzText, line2 );
- }
- }
-
- if(options.set_colours) {
- ppd->colorBack = options.bkCol;
- ppd->colorText = options.textCol;
- } else {
- //ppd->colorText = 0x00FFFFFF;
- ppd->colorText = 0;
- //ppd->colorBack = POPUP_USE_SKINNED_BG;
- ppd->colorBack = 0;
- }
-
- ppd->iSeconds = timeout;
-
- ppd->PluginWindowProc = ( WNDPROC )NullWindowProc;
- ppd->PluginData = malloc(sizeof(PopupDataType));
- ((PopupDataType*)ppd->PluginData)->flags = flags;
- ((PopupDataType*)ppd->PluginData)->hIcon = ppd->lchIcon;
-
- CallFunctionAsync( sttPopupProcW , ppd );
- }
-}
-
-void ShowWarning(TCHAR *msg) {
- if(ServiceExists(MS_POPUP_SHOWMESSAGE)) {
- TCHAR title[512];
- mir_sntprintf(title, SIZEOF(title), _T("%s Warning"), _T(MODULE));
+ if(ServiceExists(MS_POPUP_SHOWMESSAGE))
+ {
TCHAR message[1024];
mir_sntprintf(message, SIZEOF(message), _T("%s: %s"), _T(MODULE), msg);
ShowPopup(0, title, message, 0, 10);
//PUShowMessage(message, SM_WARNING);
- } else {
- TCHAR title[512];
- mir_sntprintf(title, SIZEOF(title), _T("%s Warning"), MODULE);
+ }
+ else
MessageBox(0, msg, title, MB_OK | MB_ICONWARNING);
- }
}
-void ShowPopup(HANDLE hContact, const TCHAR *line1, const TCHAR *line2, int flags, int timeout) {
-#ifdef _UNICODE
- if(ServiceExists(MS_POPUP_ADDPOPUPW))
- ShowPopupW(hContact, line1, line2, flags, timeout);
- else {
- char *al1 = mir_u2a(line1), *al2 = mir_u2a(line2);
- ShowPopupA(hContact, al1, al2, flags, timeout);
- mir_free(al1); mir_free(al2);
- }
-#else
- if(ServiceExists(MS_POPUP_ADDPOPUP))
- ShowPopupA(hContact, line1, line2, flags, timeout);
- else {
- wchar_t *wl1 = mir_a2u(line1), *wl2 = mir_a2u(line2);
- ShowPopupW(hContact, wl1, wl2, flags, timeout);
- mir_free(wl1); mir_free(wl2);
- }
-#endif
-
-}
+void ShowError(TCHAR *msg)
+{
+ static const TCHAR title[512] = _T(MODULE) _T(" Error");
-void ShowError(TCHAR *msg) {
- if(ServiceExists(MS_POPUP_SHOWMESSAGE)) {
- TCHAR title[512];
- mir_sntprintf(title, SIZEOF(title), _T("%s Error"), _T(MODULE));
+ if(ServiceExists(MS_POPUP_SHOWMESSAGE))
+ {
TCHAR message[1024];
mir_sntprintf(message, SIZEOF(message), _T("%s: %s"), _T(MODULE), msg);
//PUShowMessage(message, SM_WARNING);
ShowPopup(0, title, message, 0, 10);
- } else {
- TCHAR title[512];
- mir_sntprintf(title, SIZEOF(title), _T("%s Error"), _T(MODULE));
+ }
+ else
MessageBox(0, msg, title, MB_OK | MB_ICONERROR);
- }
}
-void ChangePopupText(HWND hwnd, TCHAR *text) {
-#ifdef _UNICODE
- if(ServiceExists(MS_POPUP_CHANGETEXTW))
- CallService(MS_POPUP_CHANGETEXTW, (WPARAM)hwnd, (LPARAM)text);
- else {
- char *atext = mir_u2a(text);
- CallService(MS_POPUP_CHANGETEXT, (WPARAM)hwnd, (LPARAM)atext);
- mir_free(atext);
- }
-#else
- if(ServiceExists(MS_POPUP_CHANGETEXT))
- CallService(MS_POPUP_CHANGETEXT, (WPARAM)hwnd, (LPARAM)text);
- else {
- wchar_t *wtext = mir_a2u(text);
- CallService(MS_POPUP_CHANGETEXTW, (WPARAM)hwnd, (LPARAM)wtext);
- mir_free(wtext);
- }
-#endif
+void ChangePopupText(HWND hwnd, TCHAR *text)
+{
+ CallService(MS_POPUP_CHANGETEXTT, (WPARAM)hwnd, (LPARAM)text);
}
-bool ArePopupsEnabled() {
+bool ArePopupsEnabled()
+{
return bPopupsEnabled;
}
HICON hPopupIcon;
void InitPopups() {
- bPopupsEnabled = (ServiceExists(MS_POPUP_ADDPOPUP) == 0 && ServiceExists(MS_POPUP_ADDPOPUPW) == 0 ? false : true);
+ bPopupsEnabled = ServiceExists(MS_POPUP_ADDPOPUPT) != 0;
hEventPop = CreateEvent( NULL, TRUE, FALSE, NULL );
- if(ServiceExists(MS_POPUP_REGISTERCLASS)) {
+ if (ServiceExists(MS_POPUP_REGISTERCLASS))
+ {
hPopupIcon = LoadIconEx(I_CHKUPD);
POPUPCLASS test = {0};
test.cbSize = sizeof(test);
test.flags = PCF_TCHAR;
test.hIcon = hPopupIcon;
test.iSeconds = -1;
- test.ptszDescription = TranslateT("Updater");
+ test.ptszDescription = TranslateT(MODULE);
test.pszName = "updaterpopups";
test.PluginWindowProc = NullWindowProc;
CallService(MS_POPUP_REGISTERCLASS, 0, (WPARAM)&test);
}
}
-void DeinitPopups() {
+void DeinitPopups()
+{
CloseHandle(hEventPop);
ReleaseIconEx(hPopupIcon);
}
|