diff --git a/Makefile.in b/Makefile.in index e603897022..ba84464de6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -5875,6 +5875,7 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS = \ monodll_richtooltip.o \ monodll_msw_sound.o \ monodll_msw_taskbar.o \ + monodll_notifmsgrt.o \ monodll_msw_joystick.o @COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_SRC_OBJECTS = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS) COND_TOOLKIT_OSX_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS = \ @@ -5990,6 +5991,7 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_1 = \ monodll_richtooltip.o \ monodll_msw_sound.o \ monodll_msw_taskbar.o \ + monodll_notifmsgrt.o \ monodll_msw_joystick.o @COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_SRC_OBJECTS_1 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_1) COND_TOOLKIT_OSX_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_1 = \ @@ -7877,6 +7879,7 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_2 = \ monolib_richtooltip.o \ monolib_msw_sound.o \ monolib_msw_taskbar.o \ + monolib_notifmsgrt.o \ monolib_msw_joystick.o @COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_SRC_OBJECTS_2 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_2) COND_TOOLKIT_OSX_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_2 = \ @@ -7992,6 +7995,7 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_3 = \ monolib_richtooltip.o \ monolib_msw_sound.o \ monolib_msw_taskbar.o \ + monolib_notifmsgrt.o \ monolib_msw_joystick.o @COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_SRC_OBJECTS_3 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_3) COND_TOOLKIT_OSX_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_3 = \ @@ -11558,6 +11562,7 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_4 = \ advdll_richtooltip.o \ advdll_msw_sound.o \ advdll_msw_taskbar.o \ + advdll_notifmsgrt.o \ advdll_msw_joystick.o @COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_SRC_OBJECTS_4 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_4) COND_TOOLKIT_OSX_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_4 = \ @@ -11673,6 +11678,7 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_5 = \ advdll_richtooltip.o \ advdll_msw_sound.o \ advdll_msw_taskbar.o \ + advdll_notifmsgrt.o \ advdll_msw_joystick.o @COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_SRC_OBJECTS_5 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_5) COND_TOOLKIT_OSX_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_5 = \ @@ -11854,6 +11860,7 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_6 = \ advlib_richtooltip.o \ advlib_msw_sound.o \ advlib_msw_taskbar.o \ + advlib_notifmsgrt.o \ advlib_msw_joystick.o @COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_SRC_OBJECTS_6 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_6) COND_TOOLKIT_OSX_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_6 = \ @@ -11969,6 +11976,7 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_7 = \ advlib_richtooltip.o \ advlib_msw_sound.o \ advlib_msw_taskbar.o \ + advlib_notifmsgrt.o \ advlib_msw_joystick.o @COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_SRC_OBJECTS_7 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_7) COND_TOOLKIT_OSX_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_7 = \ @@ -20028,6 +20036,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1@monodll_msw_taskbar.o: $(srcdir)/src/msw/taskbar.cpp $(MONODLL_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/taskbar.cpp +@COND_TOOLKIT_MSW_USE_GUI_1@monodll_notifmsgrt.o: $(srcdir)/src/msw/rt/notifmsgrt.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/rt/notifmsgrt.cpp + @COND_TOOLKIT_MSW_USE_GUI_1@monodll_msw_joystick.o: $(srcdir)/src/msw/joystick.cpp $(MONODLL_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/joystick.cpp @@ -24840,6 +24851,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1@monolib_msw_taskbar.o: $(srcdir)/src/msw/taskbar.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/taskbar.cpp +@COND_TOOLKIT_MSW_USE_GUI_1@monolib_notifmsgrt.o: $(srcdir)/src/msw/rt/notifmsgrt.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/rt/notifmsgrt.cpp + @COND_TOOLKIT_MSW_USE_GUI_1@monolib_msw_joystick.o: $(srcdir)/src/msw/joystick.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/joystick.cpp @@ -33123,6 +33137,9 @@ advdll_notifmsgcmn.o: $(srcdir)/src/common/notifmsgcmn.cpp $(ADVDLL_ODEP) @COND_TOOLKIT_MSW@advdll_msw_taskbar.o: $(srcdir)/src/msw/taskbar.cpp $(ADVDLL_ODEP) @COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/msw/taskbar.cpp +@COND_TOOLKIT_MSW@advdll_notifmsgrt.o: $(srcdir)/src/msw/rt/notifmsgrt.cpp $(ADVDLL_ODEP) +@COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/msw/rt/notifmsgrt.cpp + @COND_TOOLKIT_MSW@advdll_msw_joystick.o: $(srcdir)/src/msw/joystick.cpp $(ADVDLL_ODEP) @COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/msw/joystick.cpp @@ -33570,6 +33587,9 @@ advlib_notifmsgcmn.o: $(srcdir)/src/common/notifmsgcmn.cpp $(ADVLIB_ODEP) @COND_TOOLKIT_MSW@advlib_msw_taskbar.o: $(srcdir)/src/msw/taskbar.cpp $(ADVLIB_ODEP) @COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/taskbar.cpp +@COND_TOOLKIT_MSW@advlib_notifmsgrt.o: $(srcdir)/src/msw/rt/notifmsgrt.cpp $(ADVLIB_ODEP) +@COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/rt/notifmsgrt.cpp + @COND_TOOLKIT_MSW@advlib_msw_joystick.o: $(srcdir)/src/msw/joystick.cpp $(ADVLIB_ODEP) @COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/joystick.cpp diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 60c45487eb..f235d75d8d 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -2729,6 +2729,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/msw/richtooltip.cpp src/msw/sound.cpp src/msw/taskbar.cpp + src/msw/rt/notifmsgrt.cpp wx/msw/sound.h diff --git a/build/files b/build/files index 8de7b237de..95dee5e985 100644 --- a/build/files +++ b/build/files @@ -2341,6 +2341,7 @@ ADVANCED_MSW_SRC = src/common/taskbarcmn.cpp src/msw/aboutdlg.cpp src/msw/notifmsg.cpp + src/msw/rt/notifmsgrt.cpp src/msw/richtooltip.cpp src/msw/sound.cpp src/msw/taskbar.cpp diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc index b991f9722e..0b9b686c37 100644 --- a/build/msw/makefile.bcc +++ b/build/msw/makefile.bcc @@ -2380,6 +2380,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_richtooltip.obj \ $(OBJS)\monodll_sound.obj \ $(OBJS)\monodll_taskbar.obj \ + $(OBJS)\monodll_notifmsgrt.obj \ $(OBJS)\monodll_joystick.obj \ $(OBJS)\monodll_animateg.obj \ $(OBJS)\monodll_bmpcbox.obj \ @@ -2435,6 +2436,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_richtooltip.obj \ $(OBJS)\monodll_sound.obj \ $(OBJS)\monodll_taskbar.obj \ + $(OBJS)\monodll_notifmsgrt.obj \ $(OBJS)\monodll_joystick.obj \ $(OBJS)\monodll_animateg.obj !endif @@ -3206,6 +3208,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_richtooltip.obj \ $(OBJS)\monolib_sound.obj \ $(OBJS)\monolib_taskbar.obj \ + $(OBJS)\monolib_notifmsgrt.obj \ $(OBJS)\monolib_joystick.obj \ $(OBJS)\monolib_animateg.obj \ $(OBJS)\monolib_bmpcbox.obj \ @@ -3261,6 +3264,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_richtooltip.obj \ $(OBJS)\monolib_sound.obj \ $(OBJS)\monolib_taskbar.obj \ + $(OBJS)\monolib_notifmsgrt.obj \ $(OBJS)\monolib_joystick.obj \ $(OBJS)\monolib_animateg.obj !endif @@ -4485,6 +4489,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\advdll_richtooltip.obj \ $(OBJS)\advdll_sound.obj \ $(OBJS)\advdll_taskbar.obj \ + $(OBJS)\advdll_notifmsgrt.obj \ $(OBJS)\advdll_joystick.obj \ $(OBJS)\advdll_animateg.obj \ $(OBJS)\advdll_bmpcbox.obj \ @@ -4540,6 +4545,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\advdll_richtooltip.obj \ $(OBJS)\advdll_sound.obj \ $(OBJS)\advdll_taskbar.obj \ + $(OBJS)\advdll_notifmsgrt.obj \ $(OBJS)\advdll_joystick.obj \ $(OBJS)\advdll_animateg.obj !endif @@ -4590,6 +4596,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\advlib_richtooltip.obj \ $(OBJS)\advlib_sound.obj \ $(OBJS)\advlib_taskbar.obj \ + $(OBJS)\advlib_notifmsgrt.obj \ $(OBJS)\advlib_joystick.obj \ $(OBJS)\advlib_animateg.obj \ $(OBJS)\advlib_bmpcbox.obj \ @@ -4645,6 +4652,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\advlib_richtooltip.obj \ $(OBJS)\advlib_sound.obj \ $(OBJS)\advlib_taskbar.obj \ + $(OBJS)\advlib_notifmsgrt.obj \ $(OBJS)\advlib_joystick.obj \ $(OBJS)\advlib_animateg.obj !endif @@ -8857,6 +8865,11 @@ $(OBJS)\monodll_taskbar.obj: ..\..\src\msw\taskbar.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\taskbar.cpp !endif +!if "$(USE_GUI)" == "1" +$(OBJS)\monodll_notifmsgrt.obj: ..\..\src\msw\rt\notifmsgrt.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\rt\notifmsgrt.cpp +!endif + !if "$(USE_GUI)" == "1" $(OBJS)\monodll_joystick.obj: ..\..\src\msw\joystick.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\joystick.cpp @@ -11377,6 +11390,11 @@ $(OBJS)\monolib_taskbar.obj: ..\..\src\msw\taskbar.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\taskbar.cpp !endif +!if "$(USE_GUI)" == "1" +$(OBJS)\monolib_notifmsgrt.obj: ..\..\src\msw\rt\notifmsgrt.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\rt\notifmsgrt.cpp +!endif + !if "$(USE_GUI)" == "1" $(OBJS)\monolib_joystick.obj: ..\..\src\msw\joystick.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\joystick.cpp @@ -15256,6 +15274,9 @@ $(OBJS)\advdll_sound.obj: ..\..\src\msw\sound.cpp $(OBJS)\advdll_taskbar.obj: ..\..\src\msw\taskbar.cpp $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\taskbar.cpp +$(OBJS)\advdll_notifmsgrt.obj: ..\..\src\msw\rt\notifmsgrt.cpp + $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\rt\notifmsgrt.cpp + $(OBJS)\advdll_joystick.obj: ..\..\src\msw\joystick.cpp $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\joystick.cpp @@ -15415,6 +15436,9 @@ $(OBJS)\advlib_sound.obj: ..\..\src\msw\sound.cpp $(OBJS)\advlib_taskbar.obj: ..\..\src\msw\taskbar.cpp $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\taskbar.cpp +$(OBJS)\advlib_notifmsgrt.obj: ..\..\src\msw\rt\notifmsgrt.cpp + $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\rt\notifmsgrt.cpp + $(OBJS)\advlib_joystick.obj: ..\..\src\msw\joystick.cpp $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\joystick.cpp diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index 406c7352fe..9976728d70 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -2402,6 +2402,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_richtooltip.o \ $(OBJS)\monodll_sound.o \ $(OBJS)\monodll_taskbar.o \ + $(OBJS)\monodll_notifmsgrt.o \ $(OBJS)\monodll_joystick.o \ $(OBJS)\monodll_animateg.o \ $(OBJS)\monodll_bmpcbox.o \ @@ -2457,6 +2458,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_richtooltip.o \ $(OBJS)\monodll_sound.o \ $(OBJS)\monodll_taskbar.o \ + $(OBJS)\monodll_notifmsgrt.o \ $(OBJS)\monodll_joystick.o \ $(OBJS)\monodll_animateg.o endif @@ -3234,6 +3236,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_richtooltip.o \ $(OBJS)\monolib_sound.o \ $(OBJS)\monolib_taskbar.o \ + $(OBJS)\monolib_notifmsgrt.o \ $(OBJS)\monolib_joystick.o \ $(OBJS)\monolib_animateg.o \ $(OBJS)\monolib_bmpcbox.o \ @@ -3289,6 +3292,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_richtooltip.o \ $(OBJS)\monolib_sound.o \ $(OBJS)\monolib_taskbar.o \ + $(OBJS)\monolib_notifmsgrt.o \ $(OBJS)\monolib_joystick.o \ $(OBJS)\monolib_animateg.o endif @@ -4541,6 +4545,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\advdll_richtooltip.o \ $(OBJS)\advdll_sound.o \ $(OBJS)\advdll_taskbar.o \ + $(OBJS)\advdll_notifmsgrt.o \ $(OBJS)\advdll_joystick.o \ $(OBJS)\advdll_animateg.o \ $(OBJS)\advdll_bmpcbox.o \ @@ -4596,6 +4601,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\advdll_richtooltip.o \ $(OBJS)\advdll_sound.o \ $(OBJS)\advdll_taskbar.o \ + $(OBJS)\advdll_notifmsgrt.o \ $(OBJS)\advdll_joystick.o \ $(OBJS)\advdll_animateg.o endif @@ -4650,6 +4656,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\advlib_richtooltip.o \ $(OBJS)\advlib_sound.o \ $(OBJS)\advlib_taskbar.o \ + $(OBJS)\advlib_notifmsgrt.o \ $(OBJS)\advlib_joystick.o \ $(OBJS)\advlib_animateg.o \ $(OBJS)\advlib_bmpcbox.o \ @@ -4705,6 +4712,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\advlib_richtooltip.o \ $(OBJS)\advlib_sound.o \ $(OBJS)\advlib_taskbar.o \ + $(OBJS)\advlib_notifmsgrt.o \ $(OBJS)\advlib_joystick.o \ $(OBJS)\advlib_animateg.o endif @@ -9032,6 +9040,11 @@ $(OBJS)\monodll_taskbar.o: ../../src/msw/taskbar.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< endif +ifeq ($(USE_GUI),1) +$(OBJS)\monodll_notifmsgrt.o: ../../src/msw/rt/notifmsgrt.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< +endif + ifeq ($(USE_GUI),1) $(OBJS)\monodll_joystick.o: ../../src/msw/joystick.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< @@ -11552,6 +11565,11 @@ $(OBJS)\monolib_taskbar.o: ../../src/msw/taskbar.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< endif +ifeq ($(USE_GUI),1) +$(OBJS)\monolib_notifmsgrt.o: ../../src/msw/rt/notifmsgrt.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< +endif + ifeq ($(USE_GUI),1) $(OBJS)\monolib_joystick.o: ../../src/msw/joystick.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< @@ -15431,6 +15449,9 @@ $(OBJS)\advdll_sound.o: ../../src/msw/sound.cpp $(OBJS)\advdll_taskbar.o: ../../src/msw/taskbar.cpp $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\advdll_notifmsgrt.o: ../../src/msw/rt/notifmsgrt.cpp + $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\advdll_joystick.o: ../../src/msw/joystick.cpp $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $< @@ -15590,6 +15611,9 @@ $(OBJS)\advlib_sound.o: ../../src/msw/sound.cpp $(OBJS)\advlib_taskbar.o: ../../src/msw/taskbar.cpp $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\advlib_notifmsgrt.o: ../../src/msw/rt/notifmsgrt.cpp + $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\advlib_joystick.o: ../../src/msw/joystick.cpp $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $< diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index a57adf3fd8..feabace107 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -2680,6 +2680,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_richtooltip.obj \ $(OBJS)\monodll_sound.obj \ $(OBJS)\monodll_taskbar.obj \ + $(OBJS)\monodll_notifmsgrt.obj \ $(OBJS)\monodll_joystick.obj \ $(OBJS)\monodll_animateg.obj \ $(OBJS)\monodll_bmpcbox.obj \ @@ -2735,6 +2736,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_richtooltip.obj \ $(OBJS)\monodll_sound.obj \ $(OBJS)\monodll_taskbar.obj \ + $(OBJS)\monodll_notifmsgrt.obj \ $(OBJS)\monodll_joystick.obj \ $(OBJS)\monodll_animateg.obj !endif @@ -3512,6 +3514,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_richtooltip.obj \ $(OBJS)\monolib_sound.obj \ $(OBJS)\monolib_taskbar.obj \ + $(OBJS)\monolib_notifmsgrt.obj \ $(OBJS)\monolib_joystick.obj \ $(OBJS)\monolib_animateg.obj \ $(OBJS)\monolib_bmpcbox.obj \ @@ -3567,6 +3570,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_richtooltip.obj \ $(OBJS)\monolib_sound.obj \ $(OBJS)\monolib_taskbar.obj \ + $(OBJS)\monolib_notifmsgrt.obj \ $(OBJS)\monolib_joystick.obj \ $(OBJS)\monolib_animateg.obj !endif @@ -4881,6 +4885,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\advdll_richtooltip.obj \ $(OBJS)\advdll_sound.obj \ $(OBJS)\advdll_taskbar.obj \ + $(OBJS)\advdll_notifmsgrt.obj \ $(OBJS)\advdll_joystick.obj \ $(OBJS)\advdll_animateg.obj \ $(OBJS)\advdll_bmpcbox.obj \ @@ -4936,6 +4941,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\advdll_richtooltip.obj \ $(OBJS)\advdll_sound.obj \ $(OBJS)\advdll_taskbar.obj \ + $(OBJS)\advdll_notifmsgrt.obj \ $(OBJS)\advdll_joystick.obj \ $(OBJS)\advdll_animateg.obj !endif @@ -4992,6 +4998,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\advlib_richtooltip.obj \ $(OBJS)\advlib_sound.obj \ $(OBJS)\advlib_taskbar.obj \ + $(OBJS)\advlib_notifmsgrt.obj \ $(OBJS)\advlib_joystick.obj \ $(OBJS)\advlib_animateg.obj \ $(OBJS)\advlib_bmpcbox.obj \ @@ -5047,6 +5054,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\advlib_richtooltip.obj \ $(OBJS)\advlib_sound.obj \ $(OBJS)\advlib_taskbar.obj \ + $(OBJS)\advlib_notifmsgrt.obj \ $(OBJS)\advlib_joystick.obj \ $(OBJS)\advlib_animateg.obj !endif @@ -9549,6 +9557,11 @@ $(OBJS)\monodll_taskbar.obj: ..\..\src\msw\taskbar.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\taskbar.cpp !endif +!if "$(USE_GUI)" == "1" +$(OBJS)\monodll_notifmsgrt.obj: ..\..\src\msw\rt\notifmsgrt.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\rt\notifmsgrt.cpp +!endif + !if "$(USE_GUI)" == "1" $(OBJS)\monodll_joystick.obj: ..\..\src\msw\joystick.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\joystick.cpp @@ -12069,6 +12082,11 @@ $(OBJS)\monolib_taskbar.obj: ..\..\src\msw\taskbar.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\taskbar.cpp !endif +!if "$(USE_GUI)" == "1" +$(OBJS)\monolib_notifmsgrt.obj: ..\..\src\msw\rt\notifmsgrt.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\rt\notifmsgrt.cpp +!endif + !if "$(USE_GUI)" == "1" $(OBJS)\monolib_joystick.obj: ..\..\src\msw\joystick.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\joystick.cpp @@ -15948,6 +15966,9 @@ $(OBJS)\advdll_sound.obj: ..\..\src\msw\sound.cpp $(OBJS)\advdll_taskbar.obj: ..\..\src\msw\taskbar.cpp $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\taskbar.cpp +$(OBJS)\advdll_notifmsgrt.obj: ..\..\src\msw\rt\notifmsgrt.cpp + $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\rt\notifmsgrt.cpp + $(OBJS)\advdll_joystick.obj: ..\..\src\msw\joystick.cpp $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\joystick.cpp @@ -16107,6 +16128,9 @@ $(OBJS)\advlib_sound.obj: ..\..\src\msw\sound.cpp $(OBJS)\advlib_taskbar.obj: ..\..\src\msw\taskbar.cpp $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\taskbar.cpp +$(OBJS)\advlib_notifmsgrt.obj: ..\..\src\msw\rt\notifmsgrt.cpp + $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\rt\notifmsgrt.cpp + $(OBJS)\advlib_joystick.obj: ..\..\src\msw\joystick.cpp $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\joystick.cpp diff --git a/build/msw/wx_adv.vcxproj b/build/msw/wx_adv.vcxproj index db284de3ce..ad0522f3e8 100644 --- a/build/msw/wx_adv.vcxproj +++ b/build/msw/wx_adv.vcxproj @@ -508,6 +508,7 @@ + diff --git a/build/msw/wx_adv.vcxproj.filters b/build/msw/wx_adv.vcxproj.filters index 1707dd9520..d180183885 100644 --- a/build/msw/wx_adv.vcxproj.filters +++ b/build/msw/wx_adv.vcxproj.filters @@ -174,6 +174,9 @@ MSW Sources + + MSW Sources + MSW Sources diff --git a/build/msw/wx_vc7_adv.vcproj b/build/msw/wx_vc7_adv.vcproj index 5df855d911..38a4a7347d 100644 --- a/build/msw/wx_vc7_adv.vcproj +++ b/build/msw/wx_vc7_adv.vcproj @@ -391,6 +391,9 @@ Name="Release|Win32" ExcludedFromBuild="TRUE"/> + + + + + + + Application User Model ID. If empty it will be extracted from + the shortcut. If the shortcut does not contain an id an id will be + automatically created from the applications vendor and app name. + + @return @false if toast notifications could not be enabled. + + @onlyfor{wxmsw} + + @see wxAppConsole::SetAppName(), wxAppConsole::SetVendorName() + + @since 3.1.0 + */ + static bool MSWUseToasts( + const wxString& shortcutPath = wxString(), + const wxString& appId = wxString()); }; diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index ba16c55edf..8e5e133c0f 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -2289,6 +2289,14 @@ private: void MyFrame::OnNotifMsg(wxCommandEvent& WXUNUSED(event)) { +#ifdef __WXMSW__ + // Try to enable toast notifications (available since Win8) + if ( !wxNotificationMessage::MSWUseToasts() ) + { + wxLogDebug("Toast notifications not available."); + } +#endif + TestNotificationMessageWindow* dlg = new TestNotificationMessageWindow(this); dlg->Show(); } diff --git a/src/msw/notifmsg.cpp b/src/msw/notifmsg.cpp index b1a91330a0..72c415c812 100644 --- a/src/msw/notifmsg.cpp +++ b/src/msw/notifmsg.cpp @@ -33,11 +33,11 @@ #include "wx/toplevel.h" #include "wx/app.h" #include "wx/string.h" + #include "wx/app.h" #endif // WX_PRECOMP #include "wx/private/notifmsg.h" -#include "wx/generic/notifmsg.h" -#include "wx/generic/private/notifmsg.h" +#include "wx/msw/rt/private/notifmsg.h" #include "wx/taskbar.h" @@ -337,9 +337,19 @@ wxTaskBarIcon *wxNotificationMessage::UseTaskBarIcon(wxTaskBarIcon *icon) return wxBalloonNotifMsgImpl::UseTaskBarIcon(icon); } +bool wxNotificationMessage::MSWUseToasts( + const wxString& shortcutPath, + const wxString& appId) +{ + return wxToastNotificationHelper::UseToasts(shortcutPath, appId); +} + void wxNotificationMessage::Init() { - m_impl = new wxBalloonNotifMsgImpl(this); + if ( wxToastNotificationHelper::IsEnabled() ) + m_impl = wxToastNotificationHelper::CreateInstance(this); + else + m_impl = new wxBalloonNotifMsgImpl(this); } #endif // wxUSE_NOTIFICATION_MESSAGE && wxUSE_TASKBARICON diff --git a/src/msw/rt/notifmsgrt.cpp b/src/msw/rt/notifmsgrt.cpp new file mode 100644 index 0000000000..1d2808d685 --- /dev/null +++ b/src/msw/rt/notifmsgrt.cpp @@ -0,0 +1,545 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/msw/notifmsgrt.cpp +// Purpose: WinRT implementation of wxNotificationMessageImpl +// Author: Tobias Taschner +// Created: 2015-09-13 +// Copyright: (c) 2015 wxWidgets development team +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// +// for compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/string.h" +#endif // WX_PRECOMP + +#include "wx/msw/rt/private/notifmsg.h" + +#if wxUSE_NOTIFICATION_MESSAGE && wxUSE_WINRT +#include "wx/notifmsg.h" +#include "wx/msw/rt/utils.h" +#include "wx/msw/private/comptr.h" +#include "wx/msw/wrapshl.h" +#include "wx/msw/ole/oleutils.h" + +#include "wx/filename.h" +#include "wx/stdpaths.h" + +#include +#include +#include +#include +#include + +using namespace ABI::Windows::UI::Notifications; +using namespace ABI::Windows::Data::Xml::Dom; + +namespace rt = wxWinRT; + +typedef ABI::Windows::Foundation::ITypedEventHandler DesktopToastActivatedEventHandler; +typedef ABI::Windows::Foundation::ITypedEventHandler DesktopToastDismissedEventHandler; +typedef ABI::Windows::Foundation::ITypedEventHandler DesktopToastFailedEventHandler; + +class wxToastNotifMsgImpl; + +class wxToastEventHandler : + public Microsoft::WRL::Implements +{ +public: + wxToastEventHandler(wxToastNotifMsgImpl* toastImpl) : + m_impl(toastImpl) + { + + } + + void Detach() + { + m_impl = NULL; + } + + // DesktopToastActivatedEventHandler + IFACEMETHODIMP Invoke(IToastNotification *sender, IInspectable* args); + + // DesktopToastDismissedEventHandler + IFACEMETHODIMP Invoke(IToastNotification *sender, IToastDismissedEventArgs *e); + + // DesktopToastFailedEventHandler + IFACEMETHODIMP Invoke(IToastNotification *sender, IToastFailedEventArgs *e); + + // IUnknown + IFACEMETHODIMP_(ULONG) AddRef() + { + return ++m_cRef; + } + + IFACEMETHODIMP_(ULONG) Release() + { + if ( --m_cRef == wxAutoULong(0) ) + { + delete this; + return 0; + } + else + return m_cRef; + } + + IFACEMETHODIMP QueryInterface(REFIID riid, void **ppv) + { + if ( IsEqualIID(riid, IID_IUnknown) ) + *ppv = static_cast(static_cast(this)); + else if ( IsEqualIID(riid, __uuidof(DesktopToastActivatedEventHandler)) ) + *ppv = static_cast(this); + else if ( IsEqualIID(riid, __uuidof(DesktopToastDismissedEventHandler)) ) + *ppv = static_cast(this); + else if ( IsEqualIID(riid, __uuidof(DesktopToastFailedEventHandler)) ) + *ppv = static_cast(this); + else + *ppv = NULL; + + if ( *ppv ) + { + reinterpret_cast(*ppv)->AddRef(); + return S_OK; + } + + return E_NOINTERFACE; + } + +private: + wxAutoULong m_cRef; + + wxToastNotifMsgImpl* m_impl; +}; + +class wxToastNotifMsgImpl : public wxNotificationMessageImpl +{ +public: + wxToastNotifMsgImpl(wxNotificationMessageBase* notification) : + wxNotificationMessageImpl(notification), + m_toastEventHandler(NULL) + { + + } + + virtual ~wxToastNotifMsgImpl() + { + if ( m_toastEventHandler ) + m_toastEventHandler->Detach(); + } + + virtual bool Show(int WXUNUSED(timeout)) wxOVERRIDE + { + wxCOMPtr toastXml; + HRESULT hr = CreateToastXML(&toastXml); + if ( SUCCEEDED(hr) ) + { + hr = CreateToast(toastXml); + } + + return SUCCEEDED(hr); + } + + virtual bool Close() wxOVERRIDE + { + if ( m_notifier.get() && m_toast.get() ) + { + bool success = SUCCEEDED(m_notifier->Hide(m_toast)); + ReleaseToast(); + return success; + } + else + return false; + } + + virtual void SetTitle(const wxString& title) wxOVERRIDE + { + m_title = title; + } + + virtual void SetMessage(const wxString& message) wxOVERRIDE + { + m_message = message; + } + + virtual void SetParent(wxWindow *WXUNUSED(parent)) wxOVERRIDE + { + + } + + virtual void SetFlags(int WXUNUSED(flags)) wxOVERRIDE + { + + } + + virtual void SetIcon(const wxIcon& WXUNUSED(icon)) wxOVERRIDE + { + // Icon would have to be saved to disk (temporarily?) + // to be used as a file:// url in the notifications XML + } + + virtual bool AddAction(wxWindowID WXUNUSED(actionid), const wxString &WXUNUSED(label)) wxOVERRIDE + { + return false; + } + + void ReleaseToast() + { + if ( m_toastEventHandler ) + m_toastEventHandler->Detach(); + m_notifier = NULL; + m_toast = NULL; + } + + HRESULT CreateToast(IXmlDocument *xml) + { + HRESULT hr = ms_toastMgr->CreateToastNotifierWithId(rt::TempStringRef::Make(ms_appId), &m_notifier); + if ( SUCCEEDED(hr) ) + { + wxCOMPtr factory; + hr = rt::GetActivationFactory(RuntimeClass_Windows_UI_Notifications_ToastNotification, + IID_IToastNotificationFactory, reinterpret_cast(&factory)); + if ( SUCCEEDED(hr) ) + { + hr = factory->CreateToastNotification(xml, &m_toast); + if ( SUCCEEDED(hr) ) + { + // Register the event handlers + EventRegistrationToken activatedToken, dismissedToken, failedToken; + m_toastEventHandler = new wxToastEventHandler(this); + wxCOMPtr eventHandler(m_toastEventHandler); + + hr = m_toast->add_Activated(eventHandler, &activatedToken); + if ( SUCCEEDED(hr) ) + { + hr = m_toast->add_Dismissed(eventHandler, &dismissedToken); + if ( SUCCEEDED(hr) ) + { + hr = m_toast->add_Failed(eventHandler, &failedToken); + if ( SUCCEEDED(hr) ) + { + hr = m_notifier->Show(m_toast); + } + } + } + } + } + } + + if ( FAILED(hr) ) + ReleaseToast(); + + return hr; + } + + HRESULT CreateToastXML(IXmlDocument** toastXml) const + { + HRESULT hr = ms_toastMgr->GetTemplateContent(ToastTemplateType_ToastText02, toastXml); + if ( SUCCEEDED(hr) ) + { + wxCOMPtr nodeList; + hr = (*toastXml)->GetElementsByTagName(rt::TempStringRef::Make("text"), &nodeList); + if ( SUCCEEDED(hr) ) + { + hr = SetNodeListValueString(0, m_title, nodeList, *toastXml); + if ( SUCCEEDED(hr) ) + hr = SetNodeListValueString(1, m_message, nodeList, *toastXml); + } + } + + return hr; + } + + static HRESULT SetNodeListValueString(UINT32 index, const wxString& str, IXmlNodeList* nodeList, IXmlDocument *toastXml) + { + wxCOMPtr textNode; + // Set title node + HRESULT hr = nodeList->Item(index, &textNode); + if ( SUCCEEDED(hr) ) + { + hr = SetNodeValueString(str, textNode, toastXml); + } + + return hr; + } + + static HRESULT SetNodeValueString(const wxString& str, IXmlNode *node, IXmlDocument *xml) + { + wxCOMPtr inputText; + + HRESULT hr = xml->CreateTextNode(rt::TempStringRef::Make(str), &inputText); + if ( SUCCEEDED(hr) ) + { + wxCOMPtr inputTextNode; + + hr = inputText->QueryInterface(IID_IXmlNode, reinterpret_cast(&inputTextNode)); + if ( SUCCEEDED(hr) ) + { + wxCOMPtr pAppendedChild; + hr = node->AppendChild(inputTextNode, &pAppendedChild); + } + } + + return hr; + } + + static bool IsEnabled() + { + return ms_enabled; + } + + static wxString BuildAppId() + { + // Build a Application User Model IDs based on app info + wxString vendorId = wxTheApp->GetVendorName(); + if ( vendorId.empty() ) + vendorId = "wxWidgetsApp"; + wxString appId = vendorId + "." + wxTheApp->GetAppName(); + // Remove potential spaces + appId.Replace(" ", "", true); + return appId; + } + + static bool CheckShortcut(const wxFileName& filename) + { + // Prepare interfaces + wxCOMPtr shellLink; + if ( FAILED(CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, + IID_IShellLinkW, reinterpret_cast(&shellLink))) ) + return false; + wxCOMPtr persistFile; + if ( FAILED(shellLink->QueryInterface(IID_IPersistFile, reinterpret_cast(&persistFile))) ) + return false; + wxCOMPtr propertyStore; + if ( FAILED(shellLink->QueryInterface(IID_IPropertyStore, reinterpret_cast(&propertyStore))) ) + return false; + + bool writeShortcut = false; + + if ( filename.Exists() ) + { + // Check existing shortcut for application id + if ( SUCCEEDED(persistFile->Load(filename.GetFullPath().wc_str(), 0)) ) + { + PROPVARIANT appIdPropVar; + if ( SUCCEEDED(propertyStore->GetValue(PKEY_AppUserModel_ID, &appIdPropVar)) ) + { + wxString appId; + if ( appIdPropVar.vt == VT_LPWSTR ) + appId = appIdPropVar.pwszVal; + if ( appId.empty() || (!ms_appId.empty() && ms_appId != appId) ) + { + // Update shortcut if app id does not match or is empty + writeShortcut = true; + } + else if ( ms_appId.empty() ) + { + // Use if no app id has been set + ms_appId = appId; + } + } + } + else + return false; + } + else + { + // Create new shortcut + if ( FAILED(shellLink->SetPath(wxStandardPaths::Get().GetExecutablePath().wc_str())) ) + return false; + if ( FAILED(shellLink->SetArguments(L"")) ) + return false; + + writeShortcut = true; + } + + if ( writeShortcut ) + { + if ( ms_appId.empty() ) + ms_appId = BuildAppId(); + + // Set application id in shortcut + PROPVARIANT appIdPropVar; + if ( FAILED(InitPropVariantFromString(ms_appId.wc_str(), &appIdPropVar)) ) + return false; + if ( FAILED(propertyStore->SetValue(PKEY_AppUserModel_ID, appIdPropVar)) ) + return false; + if ( FAILED(propertyStore->Commit()) ) + return false; + if ( FAILED(persistFile->Save(filename.GetFullPath().wc_str(), TRUE)) ) + return false; + } + + return true; + } + + static bool UseToasts( + const wxString& shortcutPath, + const wxString& appId) + { + ms_enabled = false; + + // WinRT runtime is required (available since Win8) + if ( !rt::IsAvailable() ) + return false; + + // Toast notification manager has to be available + if ( ms_toastStaticsInitialized == -1 ) + { + if ( SUCCEEDED(rt::GetActivationFactory(RuntimeClass_Windows_UI_Notifications_ToastNotificationManager, + IID_IToastNotificationManagerStatics, reinterpret_cast(&ms_toastMgr))) ) + { + ms_toastStaticsInitialized = 1; + } + else + ms_toastStaticsInitialized = 0; + } + + if ( ms_toastStaticsInitialized != 1 ) + return false; + + // Build/complete shortcut path + wxFileName shortcutFilename(shortcutPath); + if ( !shortcutFilename.HasName() ) + shortcutFilename.SetName(wxTheApp->GetAppDisplayName()); + if ( !shortcutFilename.HasExt() ) + shortcutFilename.SetExt("lnk"); + if ( shortcutFilename.IsRelative() ) + shortcutFilename.MakeAbsolute(wxStandardPaths::MSWGetShellDir(CSIDL_STARTMENU)); + + ms_appId = appId; + + if ( CheckShortcut(shortcutFilename) ) + ms_enabled = true; + + return ms_enabled; + } + + static void Uninitalize() + { + if (ms_toastStaticsInitialized == 1) + { + ms_toastMgr = NULL; + ms_toastStaticsInitialized = -1; + } + } + +private: + wxString m_title; + wxString m_message; + wxCOMPtr m_notifier; + wxCOMPtr m_toast; + wxToastEventHandler* m_toastEventHandler; + + static bool ms_enabled; + static wxString ms_appId; + static int ms_toastStaticsInitialized; + static wxCOMPtr ms_toastMgr; + + friend class wxToastEventHandler; +}; + +bool wxToastNotifMsgImpl::ms_enabled = false; +int wxToastNotifMsgImpl::ms_toastStaticsInitialized = -1; +wxString wxToastNotifMsgImpl::ms_appId; +wxCOMPtr wxToastNotifMsgImpl::ms_toastMgr; + +HRESULT wxToastEventHandler::Invoke( + IToastNotification *WXUNUSED(sender), + IInspectable *WXUNUSED(args)) +{ + if ( m_impl ) + { + wxCommandEvent evt(wxEVT_NOTIFICATION_MESSAGE_CLICK); + m_impl->ProcessNotificationEvent(evt); + } + + return S_OK; +} + +HRESULT wxToastEventHandler::Invoke( + IToastNotification *WXUNUSED(sender), + IToastDismissedEventArgs *WXUNUSED(e)) +{ + if ( m_impl ) + { + wxCommandEvent evt(wxEVT_NOTIFICATION_MESSAGE_DISMISSED); + m_impl->ProcessNotificationEvent(evt); + } + + return S_OK; +} + +HRESULT wxToastEventHandler::Invoke(IToastNotification *WXUNUSED(sender), + IToastFailedEventArgs *WXUNUSED(e)) +{ + //TODO: Handle toast failed event + return S_OK; +} + +// +// wxToastNotifMsgModule +// + +class wxToastNotifMsgModule : public wxModule +{ +public: + wxToastNotifMsgModule() + { + } + + virtual bool OnInit() wxOVERRIDE + { + return true; + } + + virtual void OnExit() wxOVERRIDE + { + wxToastNotifMsgImpl::Uninitalize(); + } + +private: + wxDECLARE_DYNAMIC_CLASS(wxToastNotifMsgModule); +}; + +wxIMPLEMENT_DYNAMIC_CLASS(wxToastNotifMsgModule, wxModule); + +#endif // wxUSE_NOTIFICATION_MESSAGE && wxUSE_WINRT + +// +// wxToastNotificationHelper +// + +bool wxToastNotificationHelper::UseToasts(const wxString& shortcutPath, + const wxString& appId) +{ +#if wxUSE_NOTIFICATION_MESSAGE && wxUSE_WINRT + return wxToastNotifMsgImpl::UseToasts(shortcutPath, appId); +#else + wxUnusedVar(shortcutPath); + wxUnusedVar(appId); + return false; +#endif +} + +bool wxToastNotificationHelper::IsEnabled() +{ +#if wxUSE_NOTIFICATION_MESSAGE && wxUSE_WINRT + return wxToastNotifMsgImpl::IsEnabled(); +#else + return false; +#endif +} + +wxNotificationMessageImpl* wxToastNotificationHelper::CreateInstance(wxNotificationMessageBase* notification) +{ +#if wxUSE_NOTIFICATION_MESSAGE && wxUSE_WINRT + return new wxToastNotifMsgImpl(notification); +#else + wxUnusedVar(notification); + return NULL; +#endif +}