Skip to content

Commit 77c42f5

Browse files
committed
WinToast Handler is an interface
1 parent a85ca5d commit 77c42f5

File tree

3 files changed

+11
-45
lines changed

3 files changed

+11
-45
lines changed

example/qt-gui-example/WinToastExample/mainwindow.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ void MainWindow::on_showToast_clicked()
4141
templ.setTextField(ui->secondLine->text().toStdWString(), WinToastTemplate::SecondLine);
4242
templ.setTextField(ui->secondLine->text().toStdWString(), WinToastTemplate::ThirdLine);
4343

44-
if (!WinToast::instance()->showToast(templ, new WinToastHandler)) {
44+
/* if (!WinToast::instance()->showToast(templ, new IWinToastHandler)) {
4545
QMessageBox::warning(this, "Error", "Could not launch your toast notification!");
46-
}
46+
}*/
4747
}

src/wintoastlib.cpp

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ namespace Util {
132132
return hr;
133133
}
134134

135-
inline HRESULT setEventHandlers(_In_ IToastNotification* notification, _In_ std::shared_ptr<WinToastHandler> eventHandler) {
135+
inline HRESULT setEventHandlers(_In_ IToastNotification* notification, _In_ std::shared_ptr<IWinToastHandler> eventHandler) {
136136
EventRegistrationToken activatedToken, dismissedToken, failedToken;
137137
HRESULT hr = notification->add_Activated(
138138
Callback < Implements < RuntimeClassFlags<ClassicCom>,
@@ -151,7 +151,7 @@ namespace Util {
151151
ToastDismissalReason reason;
152152
if (SUCCEEDED(e->get_Reason(&reason)))
153153
{
154-
eventHandler->toastDismissed(static_cast<WinToastHandler::WinToastDismissalReason>(reason));
154+
eventHandler->toastDismissed(static_cast<IWinToastHandler::WinToastDismissalReason>(reason));
155155
}
156156
return S_OK;
157157
}).Get(), &dismissedToken);
@@ -366,7 +366,7 @@ HRESULT WinToast::createShellLink() {
366366

367367

368368

369-
bool WinToast::showToast(_In_ const WinToastTemplate& toast, _In_ WinToastHandler* handler) {
369+
bool WinToast::showToast(_In_ const WinToastTemplate& toast, _In_ IWinToastHandler* handler) {
370370
if (!isInitialized()) {
371371
DEBUG_MSG("Error when launching the toast. WinToast is not initialized =(");
372372
return _isInitialized;
@@ -383,7 +383,7 @@ bool WinToast::showToast(_In_ const WinToastTemplate& toast, _In_ WinToastHandl
383383
if (SUCCEEDED(hr)) {
384384
hr = _notificationFactory->CreateToastNotification(xmlDocument(), &_notification);
385385
if (SUCCEEDED(hr)) {
386-
hr = Util::setEventHandlers(notification(), std::shared_ptr<WinToastHandler>(handler));
386+
hr = Util::setEventHandlers(notification(), std::shared_ptr<IWinToastHandler>(handler));
387387
if (SUCCEEDED(hr)) {
388388
hr = _notifier->Show(notification());
389389
}
@@ -441,7 +441,6 @@ WinToastTemplate::WinToastTemplate(const WinToastTemplateType& type) :
441441
initComponentsFromType();
442442
}
443443

444-
445444
WinToastTemplate::~WinToastTemplate()
446445
{
447446
_textFields.clear();
@@ -461,35 +460,3 @@ void WinToastTemplate::initComponentsFromType() {
461460
_hasImage = _type < Text01;
462461
_textFields = std::vector<std::wstring>(TextFieldsCount[_type], L"");
463462
}
464-
465-
466-
void WinToastHandler::toastActivated() const {
467-
std::wcout << L"The user clicked in this toast" << std::endl;
468-
469-
}
470-
471-
void WinToastHandler::toastFailed() const {
472-
std::wcout << L"Error showing current toast" << std::endl;
473-
}
474-
475-
void WinToastHandler::toastDismissed(WinToastHandler::WinToastDismissalReason state) const {
476-
switch (state) {
477-
case UserCanceled:
478-
std::wcout << L"The user dismissed this toast" << std::endl;
479-
break;
480-
case ApplicationHidden:
481-
std::wcout << L"The application hid the toast using ToastNotifier.hide()" << std::endl;
482-
break;
483-
case TimedOut:
484-
std::wcout << L"The toast has timed out" << std::endl;
485-
break;
486-
default:
487-
std::wcout << L"Toast not activated" << std::endl;
488-
break;
489-
}
490-
}
491-
492-
493-
494-
495-

src/wintoastlib.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,16 @@ using namespace Windows::Foundation;
2626
#define DEFAULT_SHELL_LINKS_PATH L"\\Microsoft\\Windows\\Start Menu\\Programs\\"
2727
#define DEFAULT_LINK_FORMAT L".lnk"
2828
namespace WinToastLib {
29-
class WinToastHandler {
29+
class IWinToastHandler {
3030
public:
3131
enum WinToastDismissalReason {
3232
UserCanceled = ToastDismissalReason::ToastDismissalReason_UserCanceled,
3333
ApplicationHidden = ToastDismissalReason::ToastDismissalReason_ApplicationHidden,
3434
TimedOut = ToastDismissalReason::ToastDismissalReason_TimedOut
3535
};
36-
virtual ~WinToastHandler() {}
37-
virtual void toastActivated() const;
38-
virtual void toastDismissed(WinToastDismissalReason state) const;
39-
virtual void toastFailed() const;
36+
virtual void toastActivated() const = 0;
37+
virtual void toastDismissed(WinToastDismissalReason state) const = 0;
38+
virtual void toastFailed() const = 0;
4039
};
4140

4241
class WinToastTemplate {
@@ -86,7 +85,7 @@ namespace WinToastLib {
8685
);
8786
virtual bool initialize();
8887
virtual bool isInitialized() const { return _isInitialized; }
89-
virtual bool showToast(_In_ const WinToastTemplate& toast, _In_ WinToastHandler* handler);
88+
virtual bool showToast(_In_ const WinToastTemplate& toast, _In_ IWinToastHandler* handler);
9089
std::wstring appName() const;
9190
std::wstring appUserModelId() const;
9291
void setAppUserModelId(_In_ const std::wstring& appName);

0 commit comments

Comments
 (0)