diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 4ae10ce..b2e5f2c 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -432,7 +432,7 @@ void MainWindow::initWalletContext() { connect(m_wallet, &Wallet::unconfirmedMoneyReceived, this, [this](const QString &txId, uint64_t amount){ if (m_wallet->isSynchronized()) { auto notify = QString("%1 XMR (pending)").arg(WalletManager::displayAmount(amount, false)); - Utils::desktopNotify("Payment received", notify, 5000); + m_windowManager->notify("Payment received", notify, 5000); } }); diff --git a/src/WindowManager.cpp b/src/WindowManager.cpp index e777df5..153a8e2 100644 --- a/src/WindowManager.cpp +++ b/src/WindowManager.cpp @@ -579,6 +579,18 @@ void WindowManager::buildTrayMenu() { menu->addAction("Exit Feather", this, &WindowManager::close); } +void WindowManager::notify(const QString &title, const QString &message, int duration) { + if (!m_tray || !QSystemTrayIcon::supportsMessages()) { + return; + } + + if (config()->get(Config::hideNotifications).toBool()) { + return; + } + + m_tray->showMessage(title, message, icons()->icon("appicons/64x64.png"), duration); +} + // ######################## NETWORKING ######################## void WindowManager::onInitialNetworkConfigured() { diff --git a/src/WindowManager.h b/src/WindowManager.h index 89c0a22..7cb3d66 100644 --- a/src/WindowManager.h +++ b/src/WindowManager.h @@ -30,6 +30,8 @@ public: void showSettings(Nodes *nodes, QWidget *parent, bool showProxyTab = false); + void notify(const QString &title, const QString &message, int duration); + EventFilter *eventFilter; signals: diff --git a/src/utils/Utils.cpp b/src/utils/Utils.cpp index 137b6c0..1e8f6df 100644 --- a/src/utils/Utils.cpp +++ b/src/utils/Utils.cpp @@ -465,7 +465,7 @@ QString blockExplorerLink(const QString &blockExplorer, NetworkType::Type nettyp return QString("https://testnet.xmrchain.net/tx/%1").arg(txid); } - return QString(""); + return {}; } void externalLinkWarning(QWidget *parent, const QString &url){ @@ -493,33 +493,6 @@ void externalLinkWarning(QWidget *parent, const QString &url){ } } -void desktopNotify(const QString &title, const QString &message, int duration) { - if (config()->get(Config::hideNotifications).toBool()) { - return; - } - - QStringList notify_send = QStringList() << title << message << "-t" << QString::number(duration); - QStringList kdialog = QStringList() << title << message; - QStringList macos = QStringList() << "-e" << QString(R"(display notification "%1" with title "%2")").arg(message).arg(title); -#if defined(Q_OS_LINUX) - QProcess process; - if (fileExists("/usr/bin/kdialog")) - process.start("/usr/bin/kdialog", kdialog); - else if (fileExists("/usr/bin/notify-send")) - process.start("/usr/bin/notify-send", notify_send); - process.waitForFinished(-1); - QString stdout = process.readAllStandardOutput(); - QString stderr = process.readAllStandardError(); -#elif defined(Q_OS_MACOS) - QProcess process; - // @TODO: need to escape special chars with "\" - process.start("osascript", macos); - process.waitForFinished(-1); - QString stdout = process.readAllStandardOutput(); - QString stderr = process.readAllStandardError(); -#endif -} - QString displayAddress(const QString& address, int sections, const QString& sep) { QStringList list; if (sections < 1) sections = 1; @@ -557,23 +530,23 @@ void applicationLogHandler(QtMsgType type, const QMessageLogContext &context, co switch (type) { case QtDebugMsg: - line = QString("[%1 D] %2(:%3) %4\n").arg(date).arg(fn).arg(context.line).arg(msg); + line = QString("[%1 D] %2(:%3) %4\n").arg(date, fn, QString::number(context.line), msg); fprintf(stderr, "%s", line.toLatin1().data()); break; case QtInfoMsg: - line = QString("[%1 I] %2\n").arg(date).arg(msg); + line = QString("[%1 I] %2\n").arg(date, msg); fprintf(stdout, "%s", line.toLatin1().data()); break; case QtWarningMsg: - line = QString("[%1 W] %2(:%3) %4\n").arg(date).arg(fn).arg(context.line).arg(msg); + line = QString("[%1 W] %2(:%3) %4\n").arg(date, fn, QString::number(context.line), msg); fprintf(stdout, "%s", line.toLatin1().data()); break; case QtCriticalMsg: - line = QString("[%1 C] %2(:%3) %4\n").arg(date).arg(fn).arg(context.line).arg(msg); + line = QString("[%1 C] %2(:%3) %4\n").arg(date, fn, QString::number(context.line), msg); fprintf(stderr, "%s", line.toLatin1().data()); break; case QtFatalMsg: - line = QString("[%1 F] %2(:%3) %4\n").arg(date).arg(fn).arg(context.line).arg(msg); + line = QString("[%1 F] %2(:%3) %4\n").arg(date, fn, QString::number(context.line), msg); fprintf(stderr, "%s", line.toLatin1().data()); break; } diff --git a/src/utils/Utils.h b/src/utils/Utils.h index bd4e77f..24590ac 100644 --- a/src/utils/Utils.h +++ b/src/utils/Utils.h @@ -59,8 +59,6 @@ namespace Utils QString blockExplorerLink(const QString &blockExplorer, NetworkType::Type nettype, const QString &txid); void externalLinkWarning(QWidget *parent, const QString &url); - void desktopNotify(const QString &title, const QString &message, int duration); - QString displayAddress(const QString& address, int sections = 3, const QString & sep = " "); QTextCharFormat addressTextFormat(const SubaddressIndex &index, quint64 amount);