diff options
author | MikalaiR <nikolay.romanovich@narod.ru> | 2015-09-13 14:32:38 +0000 |
---|---|---|
committer | MikalaiR <nikolay.romanovich@narod.ru> | 2015-09-13 14:32:38 +0000 |
commit | 6f20ee4beb6b840ed81489358bca01ed41a0ea56 (patch) | |
tree | da2fc7068b010d80f60f48c6dcf54440603bad14 /plugins/Toaster | |
parent | 5429863e98b0037b14eccc53eae2b16226138deb (diff) |
Toaster: MS_POPUP_SHOWMEESGAE(W) support
git-svn-id: http://svn.miranda-ng.org/main/trunk@15344 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/Toaster')
-rw-r--r-- | plugins/Toaster/src/main.cpp | 14 | ||||
-rw-r--r-- | plugins/Toaster/src/services.cpp | 39 | ||||
-rw-r--r-- | plugins/Toaster/src/stdafx.h | 19 |
3 files changed, 58 insertions, 14 deletions
diff --git a/plugins/Toaster/src/main.cpp b/plugins/Toaster/src/main.cpp index 13296b3889..a005a1b8c6 100644 --- a/plugins/Toaster/src/main.cpp +++ b/plugins/Toaster/src/main.cpp @@ -59,6 +59,14 @@ extern "C" int __declspec(dllexport) Load(void) extern "C" int __declspec(dllexport) Unload(void)
{
+ return 0;
+}
+
+int OnPreShutdown(WPARAM, LPARAM)
+{
+ CallFunctionAsync(&HideAllToasts, NULL);
+ CleanupClasses();
+
SHFILEOPSTRUCT file_op = {
NULL,
FO_DELETE,
@@ -70,12 +78,6 @@ extern "C" int __declspec(dllexport) Unload(void) _T("")
};
SHFileOperation(&file_op);
- return 0;
-}
-int OnPreShutdown(WPARAM, LPARAM)
-{
- CallFunctionAsync(&HideAllToasts, NULL);
- CleanupClasses();
return 0;
}
\ No newline at end of file diff --git a/plugins/Toaster/src/services.cpp b/plugins/Toaster/src/services.cpp index 02a92f24ab..82d9c9413d 100644 --- a/plugins/Toaster/src/services.cpp +++ b/plugins/Toaster/src/services.cpp @@ -28,7 +28,11 @@ void __stdcall ShowToastNotification(void* p) if (imagePath == NULL)
{
- if ((td->hIcon && td->bForcehIcon) || !szProto)
+ if (td->iType == 1 && td->hBitmap)
+ {
+ imagePath = ToasterImage(td->hBitmap);
+ }
+ else if (td->iType == 2 && td->hIcon)
{
imagePath = ToasterImage(td->hIcon);
}
@@ -119,7 +123,13 @@ static INT_PTR CreatePopup2(WPARAM wParam, LPARAM) title = mir_a2u(ppd->lpzTitle);
}
- ToastData *td = new ToastData(ppd->lchContact, title, text, ppd->lchIcon);
+ ToastData *td = NULL;
+
+ if (ppd->hbmAvatar)
+ td = new ToastData(ppd->lchContact, title, text, ppd->hbmAvatar);
+ else
+ td = new ToastData(ppd->lchContact, title, text, ppd->lchIcon);
+
td->vPopupData = ppd->PluginData;
td->pPopupProc = ppd->PluginWindowProc;
@@ -151,11 +161,11 @@ static INT_PTR CreateClassPopup(WPARAM, LPARAM lParam) if (it->second->iFlags & PCF_TCHAR)
{
- td = new ToastData(ppc->hContact, ppc->ptszTitle, ppc->ptszText, it->second->hIcon, 1);
+ td = new ToastData(ppc->hContact, ppc->ptszTitle, ppc->ptszText, it->second->hIcon);
}
else
{
- td = new ToastData(ppc->hContact, mir_utf8decodeT(ppc->pszTitle), mir_utf8decodeT(ppc->pszText), it->second->hIcon, 1);
+ td = new ToastData(ppc->hContact, mir_utf8decodeT(ppc->pszTitle), mir_utf8decodeT(ppc->pszText), it->second->hIcon);
}
td->vPopupData = ppc->PluginData;
@@ -219,6 +229,23 @@ static INT_PTR PopupQuery(WPARAM wParam, LPARAM) }
}
+static INT_PTR ShowMessage(WPARAM wParam, LPARAM)
+{
+ ptrT tszText(mir_utf8decodeT((char*)wParam));
+ ToastData *td = new ToastData(NULL, NULL, tszText, HICON(0));
+
+ CallFunctionAsync(&ShowToastNotification, td);
+
+ return 0;
+}
+static INT_PTR ShowMessageW(WPARAM wParam, LPARAM)
+{
+ ToastData *td = new ToastData(NULL, NULL, (wchar_t*)wParam, HICON(0));
+ CallFunctionAsync(&ShowToastNotification, td);
+
+ return 0;
+}
+
void __stdcall HideAllToasts(void*)
{
mir_cslock lck(csNotifications);
@@ -231,10 +258,14 @@ void __stdcall HideAllToasts(void*) void InitServices()
{
+ CreateServiceFunction(MS_POPUP_SHOWMESSAGE, ShowMessage);
+ CreateServiceFunction(MS_POPUP_SHOWMESSAGEW, ShowMessageW);
+
CreateServiceFunction(MS_POPUP_ADDPOPUP, CreatePopup);
CreateServiceFunction(MS_POPUP_ADDPOPUPW, CreatePopupW);
CreateServiceFunction(MS_POPUP_ADDPOPUP2, CreatePopup2);
CreateServiceFunction(MS_POPUP_QUERY, PopupQuery);
+
CreateServiceFunction(MS_POPUP_ADDPOPUPCLASS, CreateClassPopup);
CreateServiceFunction(MS_POPUP_REGISTERCLASS, RegisterClass);
CreateServiceFunction(MS_POPUP_UNREGISTERCLASS, UnRegisterClass);
diff --git a/plugins/Toaster/src/stdafx.h b/plugins/Toaster/src/stdafx.h index 5c7537641d..a0b2a3509e 100644 --- a/plugins/Toaster/src/stdafx.h +++ b/plugins/Toaster/src/stdafx.h @@ -62,18 +62,29 @@ struct ToastData MCONTACT hContact;
TCHAR *tszTitle;
TCHAR *tszText;
- HICON hIcon;
- bool bForcehIcon;
+ union
+ {
+ HICON hIcon;
+ HBITMAP hBitmap;
+ };
+ int iType; // 0 = none, 1 = hBitmap, 2 = hIcon
WNDPROC pPopupProc;
void *vPopupData;
- ToastData(MCONTACT _hContact, const TCHAR *_tszTitle, const TCHAR *_tszText, HICON _hIcon = NULL, bool b = false) :
+ ToastData(MCONTACT _hContact, const TCHAR *_tszTitle, const TCHAR *_tszText, HICON _hIcon = NULL) :
hContact(_hContact),
tszTitle(mir_tstrdup(_tszTitle)),
tszText(mir_tstrdup(_tszText)),
hIcon(_hIcon),
- bForcehIcon(b)
+ iType(_hIcon ? 2 : 0)
+ {}
+ ToastData(MCONTACT _hContact, const TCHAR *_tszTitle, const TCHAR *_tszText, HBITMAP bmp = NULL) :
+ hContact(_hContact),
+ tszTitle(mir_tstrdup(_tszTitle)),
+ tszText(mir_tstrdup(_tszText)),
+ hBitmap(bmp),
+ iType(bmp ? 1 : 0)
{}
~ToastData()
{
|