SPlitted kde and appindicator code into shared libraries to avoid

additional dependencies.
This commit is contained in:
codestation
2014-10-04 21:55:09 -04:30
parent fb5b881345
commit 992bb2ec41
17 changed files with 328 additions and 174 deletions

View File

@@ -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);
}