aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 9d8c6aa..fa33556 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -19,11 +19,14 @@
#include <odhtdb/hex2bin.hpp>
#include <ntp/NtpClient.hpp>
#include <sibs/SafeSerializer.hpp>
+#include <libnotify/notify.h>
#include <X11/Xlib.h>
using namespace std;
using namespace dchat;
-using namespace TinyProcessLib;
+
+static bool focused = true;
+static NotifyNotification *notification = nullptr;
void channelChangeUserNickname(Channel *channel, const StringView data, const odhtdb::Signature::PublicKey &userPublicKey)
{
@@ -63,6 +66,12 @@ void channelAddStoredMessage(Channel *channel, const odhtdb::Hash &requestHash,
{
string msg(decryptedData.data, decryptedData.size);
channel->addLocalMessage(msg, user, ntp::NtpTimestamp::fromCombined(timestamp).seconds, requestHash);
+ if(!focused)
+ {
+ notify_notification_update(notification, "dchat", msg.c_str(), 0);
+ notify_notification_set_timeout(notification, 5000); // 5 sec timeout
+ notify_notification_show(notification, 0);
+ }
break;
}
case ChannelDataType::DELETE_MESSAGE:
@@ -104,6 +113,8 @@ int main(int argc, char **argv)
printf("parent path: %s\n", parentPath.string().c_str());
boost::filesystem::current_path(parentPath); // Ensures loading of resources works no matter which path we run this executable from
*/
+ notify_init("dchat");
+ notification = notify_notification_new("dchat", "", 0);
const int FRAMERATE_FOCUSED = 200;
const int FRAMERATE_NOT_FOCUSED = 30;
@@ -673,6 +684,12 @@ int main(int argc, char **argv)
window.setFramerateLimit(FRAMERATE_FOCUSED);
//else if(event.type == sf::Event::LostFocus)
// window.setFramerateLimit(FRAMERATE_NOT_FOCUSED);
+
+ if(event.type == sf::Event::GainedFocus)
+ focused = true;
+ else if(event.type == sf::Event::LostFocus)
+ focused = false;
+
GlobalContextMenu::processEvent(event);
currentChannel->processEvent(event);
}