diff options
-rw-r--r-- | updater/popups.cpp | 151 | ||||
-rw-r--r-- | updater/updater_8.vcproj | 2 | ||||
-rw-r--r-- | updater/version.h | 2 |
3 files changed, 96 insertions, 59 deletions
diff --git a/updater/popups.cpp b/updater/popups.cpp index addcf60..813d58c 100644 --- a/updater/popups.cpp +++ b/updater/popups.cpp @@ -52,7 +52,7 @@ LRESULT CALLBACK NullWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM if ((unsigned)popup != CALLSERVICE_NOTFOUND)
{
if (popup->flags & POPFLAG_SAVEHWND) hwndPop = 0;
- ReleaseIconEx(popup->hIcon);
+ if(popup->hIcon) ReleaseIconEx(popup->hIcon);
free(popup);
}
return TRUE;
@@ -109,42 +109,53 @@ void ShowPopupA( HANDLE hContact, const char* line1, const char* line2, int flag SetEvent(hEventPop);
ResetEvent(hEventPop);
- POPUPDATAEX* ppd = ( POPUPDATAEX* )malloc( sizeof( POPUPDATAEX ));
- memset((void *)ppd, 0, sizeof(POPUPDATAEX));
+ if(ServiceExists(MS_POPUP_ADDPOPUPCLASS)) {
+ POPUPDATACLASS d = {sizeof(d), "updaterpopups"};
+ d.pszTitle = (char *)line1;
+ d.pszText = (char *)line2;
+ d.PluginData = malloc(sizeof(PopupDataType));
+ ((PopupDataType*)d.PluginData)->flags = flags;
+ ((PopupDataType*)d.PluginData)->hIcon = 0;
+ CallService(MS_POPUP_ADDPOPUPCLASS, 0, (LPARAM)&d);
+ } else {
- ppd->lchContact = hContact;
- ppd->lchIcon = LoadIconEx(I_CHKUPD);
+ POPUPDATAEX* ppd = ( POPUPDATAEX* )malloc( sizeof( POPUPDATAEX ));
+ memset((void *)ppd, 0, sizeof(POPUPDATAEX));
- if(line1 && line2) {
- strcpy( ppd->lpzContactName, line1 );
- strcpy( ppd->lpzText, line2 );
- } else {
- if(line1) {
- strcpy( ppd->lpzText, line1 );
+ ppd->lchContact = hContact;
+ ppd->lchIcon = LoadIconEx(I_CHKUPD);
+
+ if(line1 && line2) {
+ strcpy( ppd->lpzContactName, line1 );
+ strcpy( ppd->lpzText, line2 );
} else {
- if(line2)
- strcpy( ppd->lpzText, line2 );
+ if(line1) {
+ strcpy( ppd->lpzText, line1 );
+ } else {
+ if(line2)
+ strcpy( ppd->lpzText, line2 );
+ }
}
- }
- if(options.set_colours) {
- ppd->colorBack = options.bkCol;
- ppd->colorText = options.textCol;
- } else {
- //ppd->colorText = 0x00FFFFFF; // otherwise old popups are black on black
- ppd->colorText = 0;
- //ppd->colorBack = POPUP_USE_SKINNED_BG;
- ppd->colorBack = 0;
- }
+ if(options.set_colours) {
+ ppd->colorBack = options.bkCol;
+ ppd->colorText = options.textCol;
+ } else {
+ //ppd->colorText = 0x00FFFFFF; // otherwise old popups are black on black
+ ppd->colorText = 0;
+ //ppd->colorBack = POPUP_USE_SKINNED_BG;
+ ppd->colorBack = 0;
+ }
- ppd->iSeconds = timeout;
+ ppd->iSeconds = timeout;
- ppd->PluginWindowProc = ( WNDPROC )NullWindowProc;
- ppd->PluginData = malloc(sizeof(PopupDataType));
- ((PopupDataType*)ppd->PluginData)->flags = flags;
- ((PopupDataType*)ppd->PluginData)->hIcon = ppd->lchIcon;
+ ppd->PluginWindowProc = ( WNDPROC )NullWindowProc;
+ ppd->PluginData = malloc(sizeof(PopupDataType));
+ ((PopupDataType*)ppd->PluginData)->flags = flags;
+ ((PopupDataType*)ppd->PluginData)->hIcon = ppd->lchIcon;
- QueueUserAPC( sttPopupProcA , mainThread, ( ULONG )ppd );
+ QueueUserAPC( sttPopupProcA , mainThread, ( ULONG )ppd );
+ }
}
void ShowPopupW( HANDLE hContact, const wchar_t* line1, const wchar_t* line2, int flags, int timeout )
@@ -171,43 +182,52 @@ void ShowPopupW( HANDLE hContact, const wchar_t* line1, const wchar_t* line2, in SetEvent(hEventPop);
ResetEvent(hEventPop);
- POPUPDATAW* ppd = ( POPUPDATAW* )malloc( sizeof( POPUPDATAW ));
- memset((void *)ppd, 0, sizeof(POPUPDATAW));
+ 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);
+ ppd->lchContact = hContact;
+ ppd->lchIcon = LoadIconEx(I_CHKUPD);
- if(line1 && line2) {
- wcscpy( ppd->lpwzContactName, line1 );
- wcscpy( ppd->lpwzText, line2 );
- } else {
- if(line1) {
- wcscpy( ppd->lpwzText, line1 );
+ if(line1 && line2) {
+ wcscpy( ppd->lpwzContactName, line1 );
+ wcscpy( ppd->lpwzText, line2 );
} else {
- if(line2)
- wcscpy( ppd->lpwzText, line2 );
+ 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;
+ 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->PluginWindowProc = ( WNDPROC )NullWindowProc;
- ppd->PluginData = malloc(sizeof(PopupDataType));
- ((PopupDataType*)ppd->PluginData)->flags = flags;
- ((PopupDataType*)ppd->PluginData)->hIcon = ppd->lchIcon;
+ ppd->iSeconds = timeout;
- QueueUserAPC( sttPopupProcW , mainThread, ( ULONG )ppd );
+ ppd->PluginWindowProc = ( WNDPROC )NullWindowProc;
+ ppd->PluginData = malloc(sizeof(PopupDataType));
+ ((PopupDataType*)ppd->PluginData)->flags = flags;
+ ((PopupDataType*)ppd->PluginData)->hIcon = ppd->lchIcon;
+ QueueUserAPC( sttPopupProcW , mainThread, ( ULONG )ppd );
+ }
}
void ShowWarning(TCHAR *msg) {
@@ -285,14 +305,29 @@ bool ArePopupsEnabled() { return bPopupsEnabled;
}
+HICON hPopupIcon;
void InitPopups() {
bPopupsEnabled = (ServiceExists(MS_POPUP_ADDPOPUP) == 0 && ServiceExists(MS_POPUP_ADDPOPUPW) == 0 ? false : true);
hEventPop = CreateEvent( NULL, TRUE, FALSE, NULL );
+
+ if(ServiceExists(MS_POPUP_ADDPOPUPCLASS)) {
+ 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.pszName = "updaterpopups";
+ test.PluginWindowProc = NullWindowProc;
+ CallService(MS_POPUP_REGISTERCLASS, 0, (WPARAM)&test);
+ }
}
void DeinitPopups() {
CloseHandle(hEventPop);
+ ReleaseIconEx(hPopupIcon);
}
diff --git a/updater/updater_8.vcproj b/updater/updater_8.vcproj index 8283b49..707d00f 100644 --- a/updater/updater_8.vcproj +++ b/updater/updater_8.vcproj @@ -281,6 +281,7 @@ LinkIncremental="1"
SuppressStartupBanner="true"
GenerateManifest="false"
+ GenerateDebugInformation="true"
ProgramDatabaseFile=".\updater___Win32_Release_Unicode/updater.pdb"
BaseAddress="0x22000000"
ImportLibrary="$(IntDir)/$(TargetName).lib"
@@ -381,6 +382,7 @@ LinkIncremental="1"
SuppressStartupBanner="true"
GenerateManifest="false"
+ GenerateDebugInformation="true"
ProgramDatabaseFile=".\Release/updater.pdb"
BaseAddress="0x22000000"
ImportLibrary="$(IntDir)/$(TargetName).lib"
diff --git a/updater/version.h b/updater/version.h index 064b0d0..8538f69 100644 --- a/updater/version.h +++ b/updater/version.h @@ -4,7 +4,7 @@ #define __MAJOR_VERSION 0
#define __MINOR_VERSION 5
-#define __RELEASE_NUM 1
+#define __RELEASE_NUM 2
#define __BUILD_NUM 0
#define __FILEVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM
|