solve MacOS Catalina compile
This commit is contained in:
@@ -1,12 +1,11 @@
|
||||
// Copyright (c) 2011-2014 The Bitcoin Core developers
|
||||
// Copyright (c) 2011-2018 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include "notificator.h"
|
||||
#include <qt/notificator.h>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QByteArray>
|
||||
#include <QIcon>
|
||||
#include <QImageWriter>
|
||||
#include <QMessageBox>
|
||||
#include <QMetaType>
|
||||
@@ -24,7 +23,7 @@
|
||||
// #define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
|
||||
#ifdef Q_OS_MAC
|
||||
#include <ApplicationServices/ApplicationServices.h>
|
||||
#include "macnotificationhandler.h"
|
||||
#include <qt/macnotificationhandler.h>
|
||||
#endif
|
||||
|
||||
|
||||
@@ -33,17 +32,17 @@
|
||||
const int FREEDESKTOP_NOTIFICATION_ICON_SIZE = 128;
|
||||
#endif
|
||||
|
||||
Notificator::Notificator(const QString &programName, QSystemTrayIcon *trayicon, QWidget *parent) :
|
||||
QObject(parent),
|
||||
parent(parent),
|
||||
programName(programName),
|
||||
Notificator::Notificator(const QString &_programName, QSystemTrayIcon *_trayIcon, QWidget *_parent) :
|
||||
QObject(_parent),
|
||||
parent(_parent),
|
||||
programName(_programName),
|
||||
mode(None),
|
||||
trayIcon(trayicon)
|
||||
trayIcon(_trayIcon)
|
||||
#ifdef USE_DBUS
|
||||
,interface(0)
|
||||
#endif
|
||||
{
|
||||
if(trayicon && trayicon->supportsMessages())
|
||||
if(_trayIcon && _trayIcon->supportsMessages())
|
||||
{
|
||||
mode = QSystemTray;
|
||||
}
|
||||
@@ -60,22 +59,6 @@ Notificator::Notificator(const QString &programName, QSystemTrayIcon *trayicon,
|
||||
if( MacNotificationHandler::instance()->hasUserNotificationCenterSupport()) {
|
||||
mode = UserNotificationCenter;
|
||||
}
|
||||
else {
|
||||
// Check if Growl is installed (based on Qt's tray icon implementation)
|
||||
CFURLRef cfurl;
|
||||
OSStatus status = LSGetApplicationForInfo(kLSUnknownType, kLSUnknownCreator, CFSTR("growlTicket"), kLSRolesAll, 0, &cfurl);
|
||||
if (status != kLSApplicationNotFoundErr) {
|
||||
CFBundleRef bundle = CFBundleCreate(0, cfurl);
|
||||
if (CFStringCompare(CFBundleGetIdentifier(bundle), CFSTR("com.Growl.GrowlHelperApp"), kCFCompareCaseInsensitive | kCFCompareBackwards) == kCFCompareEqualTo) {
|
||||
if (CFStringHasSuffix(CFURLGetString(cfurl), CFSTR("/Growl.app/")))
|
||||
mode = Growl13;
|
||||
else
|
||||
mode = Growl12;
|
||||
}
|
||||
CFRelease(cfurl);
|
||||
CFRelease(bundle);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -93,7 +76,7 @@ class FreedesktopImage
|
||||
{
|
||||
public:
|
||||
FreedesktopImage() {}
|
||||
FreedesktopImage(const QImage &img);
|
||||
explicit FreedesktopImage(const QImage &img);
|
||||
|
||||
static int metaType();
|
||||
|
||||
@@ -241,52 +224,6 @@ void Notificator::notifySystray(Class cls, const QString &title, const QString &
|
||||
|
||||
// Based on Qt's tray icon implementation
|
||||
#ifdef Q_OS_MAC
|
||||
void Notificator::notifyGrowl(Class cls, const QString &title, const QString &text, const QIcon &icon)
|
||||
{
|
||||
const QString script(
|
||||
"tell application \"%5\"\n"
|
||||
" set the allNotificationsList to {\"Notification\"}\n" // -- Make a list of all the notification types (all)
|
||||
" set the enabledNotificationsList to {\"Notification\"}\n" // -- Make a list of the notifications (enabled)
|
||||
" register as application \"%1\" all notifications allNotificationsList default notifications enabledNotificationsList\n" // -- Register our script with Growl
|
||||
" notify with name \"Notification\" title \"%2\" description \"%3\" application name \"%1\"%4\n" // -- Send a Notification
|
||||
"end tell"
|
||||
);
|
||||
|
||||
QString notificationApp(QApplication::applicationName());
|
||||
if (notificationApp.isEmpty())
|
||||
notificationApp = "Application";
|
||||
|
||||
QPixmap notificationIconPixmap;
|
||||
if (icon.isNull()) { // If no icon specified, set icon based on class
|
||||
QStyle::StandardPixmap sicon = QStyle::SP_MessageBoxQuestion;
|
||||
switch (cls)
|
||||
{
|
||||
case Information: sicon = QStyle::SP_MessageBoxInformation; break;
|
||||
case Warning: sicon = QStyle::SP_MessageBoxWarning; break;
|
||||
case Critical: sicon = QStyle::SP_MessageBoxCritical; break;
|
||||
}
|
||||
notificationIconPixmap = QApplication::style()->standardPixmap(sicon);
|
||||
}
|
||||
else {
|
||||
QSize size = icon.actualSize(QSize(48, 48));
|
||||
notificationIconPixmap = icon.pixmap(size);
|
||||
}
|
||||
|
||||
QString notificationIcon;
|
||||
QTemporaryFile notificationIconFile;
|
||||
if (!notificationIconPixmap.isNull() && notificationIconFile.open()) {
|
||||
QImageWriter writer(¬ificationIconFile, "PNG");
|
||||
if (writer.write(notificationIconPixmap.toImage()))
|
||||
notificationIcon = QString(" image from location \"file://%1\"").arg(notificationIconFile.fileName());
|
||||
}
|
||||
|
||||
QString quotedTitle(title), quotedText(text);
|
||||
quotedTitle.replace("\\", "\\\\").replace("\"", "\\");
|
||||
quotedText.replace("\\", "\\\\").replace("\"", "\\");
|
||||
QString growlApp(this->mode == Notificator::Growl13 ? "Growl" : "GrowlHelperApp");
|
||||
MacNotificationHandler::instance()->sendAppleScript(script.arg(notificationApp, quotedTitle, quotedText, notificationIcon, growlApp));
|
||||
}
|
||||
|
||||
void Notificator::notifyMacUserNotificationCenter(Class cls, const QString &title, const QString &text, const QIcon &icon) {
|
||||
// icon is not supported by the user notification center yet. OSX will use the app icon.
|
||||
MacNotificationHandler::instance()->showNotification(title, text);
|
||||
@@ -310,10 +247,6 @@ void Notificator::notify(Class cls, const QString &title, const QString &text, c
|
||||
case UserNotificationCenter:
|
||||
notifyMacUserNotificationCenter(cls, title, text, icon);
|
||||
break;
|
||||
case Growl12:
|
||||
case Growl13:
|
||||
notifyGrowl(cls, title, text, icon);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
if(cls == Critical)
|
||||
|
||||
Reference in New Issue
Block a user