SPlitted kde and appindicator code into shared libraries to avoid
additional dependencies.
This commit is contained in:
@@ -19,18 +19,31 @@
|
||||
|
||||
#include "qtrayicon.h"
|
||||
|
||||
#include <QSystemTrayIcon>
|
||||
|
||||
#ifdef ENABLE_KDE_NOTIFIER
|
||||
#include <kmenu.h>
|
||||
#else
|
||||
#include <QIcon>
|
||||
#include <QMenu>
|
||||
#include <QSystemTrayIcon>
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
#undef signals
|
||||
extern "C" {
|
||||
#include <libnotify/notify.h>
|
||||
}
|
||||
#define signals public
|
||||
#endif
|
||||
|
||||
QTrayIcon::QTrayIcon(QWidget *parent)
|
||||
: TrayIndicator(parent)
|
||||
{
|
||||
#ifdef Q_OS_LINUX
|
||||
notify_init("qcma");
|
||||
#endif
|
||||
}
|
||||
|
||||
QTrayIcon::~QTrayIcon()
|
||||
{
|
||||
#ifdef Q_OS_LINUX
|
||||
notify_uninit();
|
||||
#endif
|
||||
}
|
||||
|
||||
void QTrayIcon::init()
|
||||
@@ -49,11 +62,7 @@ void QTrayIcon::init()
|
||||
connect(about_qt, SIGNAL(triggered()), this, SIGNAL(showAboutQt()));
|
||||
connect(quit, SIGNAL(triggered()), this, SIGNAL(stopServer()));
|
||||
|
||||
#ifndef ENABLE_KDE_NOTIFIER
|
||||
QMenu *tray_icon_menu = new QMenu(this);
|
||||
#else
|
||||
KMenu *tray_icon_menu = new KMenu(this);
|
||||
#endif
|
||||
|
||||
tray_icon_menu->addAction(options);
|
||||
tray_icon_menu->addAction(reload);
|
||||
@@ -64,37 +73,25 @@ void QTrayIcon::init()
|
||||
tray_icon_menu->addSeparator();
|
||||
tray_icon_menu->addAction(quit);
|
||||
|
||||
#ifndef ENABLE_KDE_NOTIFIER
|
||||
m_tray_icon = new QSystemTrayIcon(this);
|
||||
m_tray_icon->setContextMenu(tray_icon_menu);
|
||||
#else
|
||||
m_notifier_item = new KDENotifier("QcmaNotifier", this);
|
||||
m_notifier_item->setContextMenu(tray_icon_menu);
|
||||
m_notifier_item->setTitle("Qcma");
|
||||
m_notifier_item->setCategory(KStatusNotifierItem::ApplicationStatus);
|
||||
m_notifier_item->setIconByPixmap(QIcon(":/main/resources/images/tray/qcma_off.png"));
|
||||
m_notifier_item->setStatus(KStatusNotifierItem::Active);
|
||||
m_notifier_item->setToolTipTitle(tr("Qcma status"));
|
||||
m_notifier_item->setToolTipIconByPixmap(QIcon(":/main/resources/images/qcma.png"));
|
||||
m_notifier_item->setToolTipSubTitle(tr("Disconnected"));
|
||||
m_notifier_item->setStandardActionsEnabled(false);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef Q_OS_LINUX
|
||||
|
||||
void QTrayIcon::showMessage(const QString &title, const QString &message)
|
||||
{
|
||||
#ifdef Q_OS_LINUX
|
||||
NotifyNotification *notif = notify_notification_new(qPrintable(title), qPrintable(message), "dialog-information");
|
||||
notify_notification_show(notif, NULL);
|
||||
g_object_unref(G_OBJECT(notif));
|
||||
#else
|
||||
m_tray_icon->showMessage(title, message);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool QTrayIcon::isVisible()
|
||||
{
|
||||
#ifndef ENABLE_KDE_NOTIFIER
|
||||
return m_tray_icon->isVisible();
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
void QTrayIcon::setIcon(const QString &icon)
|
||||
@@ -104,14 +101,16 @@ void QTrayIcon::setIcon(const QString &icon)
|
||||
|
||||
void QTrayIcon::show()
|
||||
{
|
||||
#ifndef ENABLE_KDE_NOTIFIER
|
||||
m_tray_icon->show();
|
||||
#endif
|
||||
}
|
||||
|
||||
void QTrayIcon::hide()
|
||||
{
|
||||
#ifndef ENABLE_KDE_NOTIFIER
|
||||
m_tray_icon->hide();
|
||||
#endif
|
||||
}
|
||||
|
||||
// exported library function
|
||||
TrayIndicator *createTrayIndicator(QWidget *parent)
|
||||
{
|
||||
return new QTrayIcon(parent);
|
||||
}
|
||||
|
Reference in New Issue
Block a user