(k)ubuntu 10.04+ notification support (based on @zwierzak his code)

This commit is contained in:
Wladimir J. van der Laan
2011-09-03 20:52:54 +02:00
parent 69e87633bc
commit cf9195c808
6 changed files with 336 additions and 28 deletions

View File

@@ -20,6 +20,7 @@
#include "bitcoinunits.h"
#include "guiconstants.h"
#include "askpassphrasedialog.h"
#include "notificator.h"
#include <QApplication>
#include <QMainWindow>
@@ -51,7 +52,8 @@ BitcoinGUI::BitcoinGUI(QWidget *parent):
walletModel(0),
encryptWalletAction(0),
changePassphraseAction(0),
trayIcon(0)
trayIcon(0),
notificator(0)
{
resize(850, 550);
setWindowTitle(tr("Bitcoin Wallet"));
@@ -287,6 +289,8 @@ void BitcoinGUI::createTrayIcon()
connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
this, SLOT(trayIconActivated(QSystemTrayIcon::ActivationReason)));
trayIcon->show();
notificator = new Notificator(tr("bitcoin-qt"), trayIcon);
}
void BitcoinGUI::trayIconActivated(QSystemTrayIcon::ActivationReason reason)
@@ -394,18 +398,7 @@ void BitcoinGUI::setNumBlocks(int count)
void BitcoinGUI::error(const QString &title, const QString &message)
{
// Report errors from network/worker thread
if(trayIcon->supportsMessages())
{
// Show as "balloon" message if possible
trayIcon->showMessage(title, message, QSystemTrayIcon::Critical);
}
else
{
// Fall back to old fashioned popup dialog if not
QMessageBox::critical(this, title,
message,
QMessageBox::Ok, QMessageBox::Ok);
}
notificator->notify(Notificator::Critical, title, message);
}
void BitcoinGUI::changeEvent(QEvent *e)
@@ -453,8 +446,6 @@ void BitcoinGUI::askFee(qint64 nFeeRequired, bool *payFee)
void BitcoinGUI::incomingTransaction(const QModelIndex & parent, int start, int end)
{
if(start == end)
return;
TransactionTableModel *ttm = walletModel->getTransactionTableModel();
qint64 amount = ttm->index(start, TransactionTableModel::Amount, parent)
.data(Qt::EditRole).toULongLong();
@@ -468,14 +459,21 @@ void BitcoinGUI::incomingTransaction(const QModelIndex & parent, int start, int
.data().toString();
QString address = ttm->index(start, TransactionTableModel::ToAddress, parent)
.data().toString();
QIcon icon = qvariant_cast<QIcon>(ttm->index(start,
TransactionTableModel::ToAddress, parent)
.data(Qt::DecorationRole));
trayIcon->showMessage((amount)<0 ? tr("Sent transaction") :
tr("Incoming transaction"),
tr("Date: ") + date + "\n" +
tr("Amount: ") + BitcoinUnits::formatWithUnit(walletModel->getOptionsModel()->getDisplayUnit(), amount, true) + "\n" +
tr("Type: ") + type + "\n" +
tr("Address: ") + address + "\n",
QSystemTrayIcon::Information);
notificator->notify(Notificator::Information,
(amount)<0 ? tr("Sent transaction") :
tr("Incoming transaction"),
tr("Date: %1\n"
"Amount: %2\n"
"Type: %3\n"
"Address: %4\n")
.arg(date)
.arg(BitcoinUnits::formatWithUnit(walletModel->getOptionsModel()->getDisplayUnit(), amount, true))
.arg(type)
.arg(address), icon);
}
}