The Battle for Wesnoth
1.17.21+dev
desktop
notifications.cpp
Go to the documentation of this file.
1
/*
2
Copyright (C) 2003 - 2023
3
by David White <dave@whitevine.net>
4
Part of the Battle for Wesnoth Project https://www.wesnoth.org/
5
6
This program is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2 of the License, or
9
(at your option) any later version.
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY.
12
13
See the COPYING file for more details.
14
*/
15
16
#include "
desktop/notifications.hpp
"
17
18
#include "
preferences/game.hpp
"
19
#include "
gettext.hpp
"
20
21
#include "
video.hpp
"
// window_has_flags()
22
23
#ifdef HAVE_LIBDBUS
24
#include "
desktop/dbus_features.hpp
"
25
#endif
26
27
#ifdef __APPLE__
28
#include "
desktop/apple_notification.hpp
"
29
#endif
30
31
#ifdef _WIN32
32
#include "
desktop/windows_tray_notification.hpp
"
33
#endif
34
35
namespace
desktop
{
36
37
namespace
notifications {
38
39
#if !(defined(HAVE_LIBDBUS) || defined(__APPLE__) || defined(_WIN32))
40
41
bool
available
() {
return
false
; }
42
43
void
send
(
const
std::string&
/*owner*/
,
const
std::string&
/*message*/
,
type
/*t*/
)
44
{}
45
46
#else
47
48
bool
available
()
49
{
50
#ifdef __APPLE__
51
return
apple_notifications::available
();
52
#else
53
return
true
;
54
#endif
55
}
56
57
void
send
(
const
std::string& owner,
const
std::string& message,
type
t
)
58
{
59
// Do not show notifications when the window is visible and has focus
60
if
(
video::window_is_visible
() &&
video::window_has_focus
()) {
61
return
;
62
}
63
64
#ifdef HAVE_LIBDBUS
65
dbus::send_notification
(owner, message,
t
==
CHAT
);
66
#endif
67
68
#ifdef __APPLE__
69
apple_notifications::send_notification
(owner, message,
t
);
70
#endif
71
72
#ifdef _WIN32
73
std::string notification_title;
74
std::string notification_message;
75
76
switch
(
t
) {
77
case
CHAT
:
78
notification_title =
_
(
"Chat message"
);
79
notification_message = owner +
": "
+
message
;
80
break
;
81
case
TURN_CHANGED
:
82
case
OTHER
:
83
notification_title = owner;
84
notification_message =
message
;
85
break
;
86
}
87
88
windows_tray_notification::show
(notification_title, notification_message);
89
#endif
90
}
91
#endif
//end #else (defined(HAVE_LIBDBUS) || defined(_WIN32))
92
93
}
//end namespace notifications
94
95
}
//end namespace desktop
apple_notification.hpp
t
double t
Definition:
astarsearch.cpp:65
windows_tray_notification::show
static bool show(std::string title, std::string message)
Displays a tray notification.
Definition:
windows_tray_notification.cpp:210
dbus_features.hpp
gettext.hpp
_
static std::string _(const char *str)
Definition:
gettext.hpp:93
apple_notifications::send_notification
void send_notification(const std::string &owner, const std::string &message, const desktop::notifications::type note_type)
apple_notifications::available
bool available()
dbus::send_notification
void send_notification(const std::string &owner, const std::string &message, bool with_history)
Definition:
dbus_features.cpp:266
desktop::notifications::available
bool available()
Returns whether we were compiled with support for desktop notifications.
Definition:
notifications.cpp:41
desktop::notifications::type
type
Definition:
notifications.hpp:24
desktop::notifications::CHAT
@ CHAT
Definition:
notifications.hpp:24
desktop::notifications::TURN_CHANGED
@ TURN_CHANGED
Definition:
notifications.hpp:24
desktop::notifications::OTHER
@ OTHER
Definition:
notifications.hpp:24
desktop::notifications::send
void send(const std::string &, const std::string &, type)
Displays a desktop notification message, from owner, of type t.
Definition:
notifications.cpp:43
desktop
Definition:
apple_battery_info.hpp:20
mp::notify_mode::message
@ message
video::window_is_visible
bool window_is_visible()
True iff the window is not hidden.
Definition:
video.cpp:676
video::window_has_focus
bool window_has_focus()
True iff the window has mouse or input focus.
Definition:
video.cpp:681
notifications.hpp
game.hpp
video.hpp
windows_tray_notification.hpp
Generated by
1.9.1