From c4613b210ee6003be91b7e21a44ef1a918f96657 Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Sat, 14 Jul 2018 16:27:51 +0300 Subject: Fix Windows build --- src/Olm.cpp | 9 +- src/notifications/ManagerLinux.cpp | 182 ++++++++++++++++++------------------- src/notifications/ManagerWin.cpp | 42 ++++----- 3 files changed, 113 insertions(+), 120 deletions(-) (limited to 'src') diff --git a/src/Olm.cpp b/src/Olm.cpp index cf54f4d4..d040e0ca 100644 --- a/src/Olm.cpp +++ b/src/Olm.cpp @@ -90,9 +90,9 @@ handle_olm_message(const OlmMessage &msg) auto payload = try_olm_decryption(msg.sender_key, cipher.second); - if (payload) { - nhlog::crypto()->info("decrypted olm payload: {}", payload.value().dump(2)); - create_inbound_megolm_session(msg.sender, msg.sender_key, payload.value()); + if (!payload.is_null()) { + nhlog::crypto()->info("decrypted olm payload: {}", payload.dump(2)); + create_inbound_megolm_session(msg.sender, msg.sender_key, payload); return; } @@ -184,7 +184,7 @@ encrypt_group_message(const std::string &room_id, return data; } -boost::optional +nlohmann::json try_olm_decryption(const std::string &sender_key, const mtx::events::msg::OlmCipherContent &msg) { auto session_ids = cache::client()->getOlmSessions(sender_key); @@ -203,7 +203,6 @@ try_olm_decryption(const std::string &sender_key, const mtx::events::msg::OlmCip try { text = olm::client()->decrypt_message(session->get(), msg.type, msg.body); cache::client()->saveOlmSession(id, std::move(session.value())); - } catch (const olm_exception &e) { nhlog::crypto()->info("failed to decrypt olm message ({}, {}) with {}: {}", msg.type, diff --git a/src/notifications/ManagerLinux.cpp b/src/notifications/ManagerLinux.cpp index 80fdb9d8..34bfeb8a 100644 --- a/src/notifications/ManagerLinux.cpp +++ b/src/notifications/ManagerLinux.cpp @@ -1,50 +1,45 @@ #include "notifications/Manager.h" -#include #include +#include +#include #include #include -#include -NotificationsManager::NotificationsManager(QObject *parent) : - QObject(parent), - dbus( - "org.freedesktop.Notifications", - "/org/freedesktop/Notifications", - "org.freedesktop.Notifications", - QDBusConnection::sessionBus(), - this) +NotificationsManager::NotificationsManager(QObject *parent) + : QObject(parent) + , dbus("org.freedesktop.Notifications", + "/org/freedesktop/Notifications", + "org.freedesktop.Notifications", + QDBusConnection::sessionBus(), + this) { qDBusRegisterMetaType(); - //connectSlot("ActionInvoked", SLOT(actionInvoked(uint, QString))); - //connectSlot("NotificationClosed", SLOT(notificationClosed(uint, uint))); - QDBusConnection::sessionBus().connect( - "org.freedesktop.Notifications", - "/org/freedesktop/Notifications", - "org.freedesktop.Notifications", - "ActionInvoked", - this, - SLOT(actionInvoked(uint, QString))); - QDBusConnection::sessionBus().connect( - "org.freedesktop.Notifications", - "/org/freedesktop/Notifications", - "org.freedesktop.Notifications", - "NotificationClosed", - this, - SLOT(notificationClosed(uint, uint))); + QDBusConnection::sessionBus().connect("org.freedesktop.Notifications", + "/org/freedesktop/Notifications", + "org.freedesktop.Notifications", + "ActionInvoked", + this, + SLOT(actionInvoked(uint, QString))); + QDBusConnection::sessionBus().connect("org.freedesktop.Notifications", + "/org/freedesktop/Notifications", + "org.freedesktop.Notifications", + "NotificationClosed", + this, + SLOT(notificationClosed(uint, uint))); } void NotificationsManager::postNotification(const QString &roomid, - const QString &eventid, - const QString &roomname, - const QString &sender, - const QString &text, - const QImage &icon) + const QString &eventid, + const QString &roomname, + const QString &sender, + const QString &text, + const QImage &icon) { - uint id = showNotification(roomname, sender+": "+text, icon); - notificationIds[id] = roomEventId{roomid,eventid}; + uint id = showNotification(roomname, sender + ": " + text, icon); + notificationIds[id] = roomEventId{roomid, eventid}; } /** * This function is based on code from @@ -53,33 +48,32 @@ NotificationsManager::postNotification(const QString &roomid, * Licensed under the GNU General Public License, version 3 */ uint -NotificationsManager::showNotification(const QString summary, const QString text, const QImage image) +NotificationsManager::showNotification(const QString summary, + const QString text, + const QImage image) { QVariantMap hints; hints["image_data"] = image; QList argumentList; - argumentList << "nheko"; //app_name - argumentList << (uint)0; // replace_id - argumentList << ""; // app_icon - argumentList << summary; // summary - argumentList << text; // body - argumentList << (QStringList("default")<<"reply"); // actions - argumentList << hints; // hints - argumentList << (int)0; // timeout in ms + argumentList << "nheko"; // app_name + argumentList << (uint)0; // replace_id + argumentList << ""; // app_icon + argumentList << summary; // summary + argumentList << text; // body + argumentList << (QStringList("default") << "reply"); // actions + argumentList << hints; // hints + argumentList << (int)0; // timeout in ms - static QDBusInterface notifyApp( - "org.freedesktop.Notifications", - "/org/freedesktop/Notifications", - "org.freedesktop.Notifications"); - QDBusMessage reply = notifyApp.callWithArgumentList( - QDBus::AutoDetect, - "Notify", - argumentList); - if(reply.type() == QDBusMessage::ErrorMessage) { - qDebug() << "D-Bus Error:" << reply.errorMessage(); - return 0; + static QDBusInterface notifyApp("org.freedesktop.Notifications", + "/org/freedesktop/Notifications", + "org.freedesktop.Notifications"); + QDBusMessage reply = + notifyApp.callWithArgumentList(QDBus::AutoDetect, "Notify", argumentList); + if (reply.type() == QDBusMessage::ErrorMessage) { + qDebug() << "D-Bus Error:" << reply.errorMessage(); + return 0; } else { - return reply.arguments().first().toUInt(); + return reply.arguments().first().toUInt(); } return true; } @@ -109,50 +103,54 @@ NotificationsManager::notificationClosed(uint id, uint reason) * * Copyright 2010, David Sansome */ -QDBusArgument& operator<<(QDBusArgument& arg, const QImage& image) { - if(image.isNull()) { - arg.beginStructure(); - arg << 0 << 0 << 0 << false << 0 << 0 << QByteArray(); - arg.endStructure(); - return arg; - } +QDBusArgument & +operator<<(QDBusArgument &arg, const QImage &image) +{ + if (image.isNull()) { + arg.beginStructure(); + arg << 0 << 0 << 0 << false << 0 << 0 << QByteArray(); + arg.endStructure(); + return arg; + } - QImage scaled = image.scaledToHeight(100, Qt::SmoothTransformation); - scaled = scaled.convertToFormat(QImage::Format_ARGB32); + QImage scaled = image.scaledToHeight(100, Qt::SmoothTransformation); + scaled = scaled.convertToFormat(QImage::Format_ARGB32); #if Q_BYTE_ORDER == Q_LITTLE_ENDIAN - // ABGR -> ARGB - QImage i = scaled.rgbSwapped(); + // ABGR -> ARGB + QImage i = scaled.rgbSwapped(); #else - // ABGR -> GBAR - QImage i(scaled.size(), scaled.format()); - for (int y = 0; y < i.height(); ++y) { - QRgb* p = (QRgb*) scaled.scanLine(y); - QRgb* q = (QRgb*) i.scanLine(y); - QRgb* end = p + scaled.width(); - while (p < end) { - *q = qRgba(qGreen(*p), qBlue(*p), qAlpha(*p), qRed(*p)); - p++; - q++; - } - } + // ABGR -> GBAR + QImage i(scaled.size(), scaled.format()); + for (int y = 0; y < i.height(); ++y) { + QRgb *p = (QRgb *)scaled.scanLine(y); + QRgb *q = (QRgb *)i.scanLine(y); + QRgb *end = p + scaled.width(); + while (p < end) { + *q = qRgba(qGreen(*p), qBlue(*p), qAlpha(*p), qRed(*p)); + p++; + q++; + } + } #endif - arg.beginStructure(); - arg << i.width(); - arg << i.height(); - arg << i.bytesPerLine(); - arg << i.hasAlphaChannel(); - int channels = i.isGrayscale() ? 1 : (i.hasAlphaChannel() ? 4 : 3); - arg << i.depth() / channels; - arg << channels; - arg << QByteArray(reinterpret_cast(i.bits()), i.byteCount()); - arg.endStructure(); - return arg; + arg.beginStructure(); + arg << i.width(); + arg << i.height(); + arg << i.bytesPerLine(); + arg << i.hasAlphaChannel(); + int channels = i.isGrayscale() ? 1 : (i.hasAlphaChannel() ? 4 : 3); + arg << i.depth() / channels; + arg << channels; + arg << QByteArray(reinterpret_cast(i.bits()), i.byteCount()); + arg.endStructure(); + return arg; } -const QDBusArgument& operator>>(const QDBusArgument& arg, QImage&) { - // This is needed to link but shouldn't be called. - Q_ASSERT(0); - return arg; +const QDBusArgument & +operator>>(const QDBusArgument &arg, QImage &) +{ + // This is needed to link but shouldn't be called. + Q_ASSERT(0); + return arg; } diff --git a/src/notifications/ManagerWin.cpp b/src/notifications/ManagerWin.cpp index 90367d9a..9cc4da9b 100644 --- a/src/notifications/ManagerWin.cpp +++ b/src/notifications/ManagerWin.cpp @@ -27,43 +27,39 @@ init() } } -NotificationsManager::NotificationsManager(QObject *parent): QObject(parent) -{ - -} +NotificationsManager::NotificationsManager(QObject *parent) + : QObject(parent) +{} void -NotificationsManager::postNotification(const QString &, //roomid - const QString &, //eventid - const QString &roomname, - const QString &sender, - const QString &text, - const QImage &) //icon +NotificationsManager::postNotification(const QString &room_id, + const QString &event_id, + const QString &room_name, + const QString &sender, + const QString &text, + const QImage &icon) { + Q_UNUSED(room_id) + Q_UNUSED(event_id) + Q_UNUSED(icon) + if (!isInitialized) init(); auto templ = WinToastTemplate(WinToastTemplate::ImageAndText02); - if (roomname != sender) - templ.setTextField(QString("%1 - %2").arg(sender).arg(roomname).toStdWString(), + if (room_name != sender) + templ.setTextField(QString("%1 - %2").arg(sender).arg(room_name).toStdWString(), WinToastTemplate::FirstLine); else - templ.setTextField(QString("%1").arg(user).toStdWString(), + templ.setTextField(QString("%1").arg(sender).toStdWString(), WinToastTemplate::FirstLine); - templ.setTextField(QString("%1").arg(msg).toStdWString(), WinToastTemplate::SecondLine); + templ.setTextField(QString("%1").arg(text).toStdWString(), WinToastTemplate::SecondLine); // TODO: implement room or user avatar // templ.setImagePath(L"C:/example.png"); WinToast::instance()->showToast(templ, new CustomHandler()); } -//unused -void -NotificationsManager::actionInvoked(uint, QString) -{ -} +void NotificationsManager::actionInvoked(uint, QString) {} -void -NotificationsManager::notificationClosed(uint, uint) -{ -} +void NotificationsManager::notificationClosed(uint, uint) {} -- cgit v1.2.3