add settings
This commit is contained in:
parent
026dd21055
commit
dddc425b78
|
@ -61,7 +61,7 @@ public:
|
|||
std::cout << "Started logging to " << name.toUtf8().constData() << std::endl;
|
||||
|
||||
s_file = new QFile(name);
|
||||
if(!s_file->open(QFile::WriteOnly)) {
|
||||
if (!s_file->open(QFile::WriteOnly)) {
|
||||
qFatal("Failed to open log file %s", qPrintable(name));
|
||||
}
|
||||
s_out = new QTextStream(s_file);
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
|
||||
#include "../snore.h"
|
||||
#include "../snore_p.h"
|
||||
#include "snorebackend.h"
|
||||
#include "snorefrontend.h"
|
||||
#include "../notification/notification_p.h"
|
||||
|
@ -66,6 +67,29 @@ SnoreCore *SnorePlugin::snore()
|
|||
return m_snore.data();
|
||||
}
|
||||
|
||||
QVariant SnorePlugin::value(const QString &key)
|
||||
{
|
||||
return snore()->d()->settings()->value(normaliseKey(key));
|
||||
}
|
||||
|
||||
void SnorePlugin::setValue(const QString &key, const QVariant &value)
|
||||
{
|
||||
snore()->d()->settings()->setValue(normaliseKey(key), value);
|
||||
}
|
||||
|
||||
void SnorePlugin::setDefaultValue(const QString &key, const QVariant &value)
|
||||
{
|
||||
QString pk(normaliseKey(key));
|
||||
if (!snore()->d()->settings()->contains(pk)) {
|
||||
snore()->d()->settings()->setValue(normaliseKey(key), value);
|
||||
}
|
||||
}
|
||||
|
||||
QString SnorePlugin::normaliseKey(const QString &key)
|
||||
{
|
||||
return QString("%1/%2").arg(name(), key);
|
||||
}
|
||||
|
||||
const QString &SnorePlugin::name() const
|
||||
{
|
||||
return m_name;
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <QHash>
|
||||
#include <QTimer>
|
||||
#include <QtPlugin>
|
||||
#include <QSettings>
|
||||
|
||||
namespace Snore
|
||||
{
|
||||
|
@ -53,8 +54,14 @@ public:
|
|||
SnoreCore *snore();
|
||||
const QString &name() const;
|
||||
|
||||
QVariant value(const QString &key);
|
||||
void setValue(const QString &key, const QVariant &value);
|
||||
void setDefaultValue(const QString &key, const QVariant &value);
|
||||
|
||||
private:
|
||||
SnorePlugin() {}
|
||||
QString normaliseKey(const QString &key);
|
||||
|
||||
QString m_name;
|
||||
bool m_initialized;
|
||||
QPointer<SnoreCore> m_snore;
|
||||
|
|
|
@ -34,7 +34,8 @@ using namespace Snore;
|
|||
|
||||
SnoreCorePrivate::SnoreCorePrivate(QSystemTrayIcon *trayIcon):
|
||||
m_trayIcon(trayIcon),
|
||||
m_defaultApp("SnoreNotify", Icon(":/root/snore.png"))
|
||||
m_defaultApp("SnoreNotify", Icon(":/root/snore.png")),
|
||||
m_settings(new QSettings("Snorenotify", "libsnore", this))
|
||||
{
|
||||
snoreDebug(SNORE_INFO) << "Version:" << Version::version();
|
||||
if (!Version::revision().isEmpty()) {
|
||||
|
@ -42,6 +43,7 @@ SnoreCorePrivate::SnoreCorePrivate(QSystemTrayIcon *trayIcon):
|
|||
}
|
||||
|
||||
snoreDebug(SNORE_DEBUG) << "Temp dir is" << tempPath();
|
||||
snoreDebug(SNORE_DEBUG) << "Snore settings are located in" << m_settings->fileName();
|
||||
|
||||
m_defaultApp.addAlert(Alert("Default", Icon(":/root/snore.png")));
|
||||
connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(slotAboutToQuit()));
|
||||
|
@ -88,7 +90,7 @@ QString SnoreCorePrivate::tempPath()
|
|||
return dir.path();
|
||||
#else
|
||||
static QString dir;
|
||||
if(dir.isEmpty()) {
|
||||
if (dir.isEmpty()) {
|
||||
dir = QString("%1/%2").arg(QDir::tempPath(), "libsnore");
|
||||
QDir::temp().mkpath("libsnore");
|
||||
}
|
||||
|
@ -101,6 +103,11 @@ bool SnoreCorePrivate::primaryBackendCanUpdateNotification() const
|
|||
return m_notificationBackend->canUpdateNotification();
|
||||
}
|
||||
|
||||
QSettings *SnoreCorePrivate::settings() const
|
||||
{
|
||||
return m_settings;
|
||||
}
|
||||
|
||||
void SnoreCorePrivate::slotNotificationClosed(Notification n)
|
||||
{
|
||||
Q_Q(SnoreCore);
|
||||
|
|
|
@ -62,6 +62,8 @@ public:
|
|||
*/
|
||||
bool primaryBackendCanUpdateNotification() const;
|
||||
|
||||
QSettings *settings() const;
|
||||
|
||||
signals:
|
||||
void applicationRegistered(const Snore::Application &);
|
||||
void applicationDeregistered(const Snore::Application &);
|
||||
|
@ -83,6 +85,8 @@ private:
|
|||
QSystemTrayIcon *m_trayIcon;
|
||||
|
||||
Application m_defaultApp;
|
||||
|
||||
QSettings *m_settings;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ if(NOT WITH_FREEDESKTOP_FRONTEND AND UNIX AND NOT APPLE)
|
|||
|
||||
|
||||
add_library(libsnore_backend_freedesktop MODULE ${FREEDESKTOP_NOTIFICATION_SRC} )
|
||||
target_link_libraries(libsnore_backend_freedesktop libsnore ${QT_QTGUI_LIBRARY} ${QT_QTDBUS_LIBRARY} )
|
||||
target_link_libraries(libsnore_backend_freedesktop Snore::Libsnore ${QT_QTGUI_LIBRARY} ${QT_QTDBUS_LIBRARY} )
|
||||
|
||||
install(TARGETS libsnore_backend_freedesktop ${SNORE_PLUGIN_INSTALL_PATH})
|
||||
endif()
|
||||
|
|
|
@ -49,7 +49,7 @@ NotifyWidget::NotifyWidget(int pos, QWidget *parent) :
|
|||
);
|
||||
|
||||
setFocusPolicy(Qt::NoFocus);
|
||||
setAttribute(Qt::WA_ShowWithoutActivating,true);
|
||||
setAttribute(Qt::WA_ShowWithoutActivating, true);
|
||||
|
||||
if (m_mem.create(sizeof(SHARED_MEM_TYPE))) {
|
||||
m_mem.lock();
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
add_subdirectory(toasty)
|
|
@ -0,0 +1,8 @@
|
|||
set( TOASTY_SRC
|
||||
toasty.cpp
|
||||
)
|
||||
add_library(libsnore_secondary_backend_toasty MODULE ${TOASTY_SRC} )
|
||||
target_link_libraries(libsnore_secondary_backend_toasty Snore::Libsnore ${QT_QTCORE_LIBRARY} )
|
||||
|
||||
install(TARGETS libsnore_secondary_backend_toasty ${SNORE_PLUGIN_INSTALL_PATH})
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
#include "toasty.h"
|
||||
|
||||
#include <QtNetwork>
|
||||
|
||||
Q_EXPORT_PLUGIN2(libsnore_secondary_backend_toasty, Toasty)
|
||||
|
||||
using namespace Snore;
|
||||
|
||||
Toasty::Toasty():
|
||||
SnoreSecondaryBackend("Toasty", false)
|
||||
{
|
||||
}
|
||||
|
||||
void Toasty::slotNotify(Notification notification)
|
||||
{
|
||||
QString id = value("DEVICEID").toString();
|
||||
if (!id.isEmpty()) {
|
||||
QNetworkRequest request(QString("http://api.supertoasty.com/notify/%1").arg(id));
|
||||
QHttpMultiPart *mp = new QHttpMultiPart(QHttpMultiPart::FormDataType);
|
||||
QHttpPart title;
|
||||
title.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"title\""));
|
||||
title.setBody(Snore::toPlainText(notification.title()).toLatin1().constData());
|
||||
mp->append(title);
|
||||
|
||||
QHttpPart text;
|
||||
text.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\""));
|
||||
text.setBody(Snore::toPlainText(notification.text()).toLatin1().constData());
|
||||
mp->append(text);
|
||||
|
||||
QHttpPart app;
|
||||
app.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"sender\""));
|
||||
app.setBody(notification.application().name().toLatin1().constData());
|
||||
mp->append(app);
|
||||
|
||||
QHttpPart icon;
|
||||
Icon sIcon(notification.icon().scaled(QSize(127, 127)));
|
||||
icon.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(QString("form-data; name=\"image\"; filename=\"%1\"").arg(sIcon.localUrl())));
|
||||
icon.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/png"));
|
||||
QFile *file = new QFile(sIcon.localUrl());
|
||||
file->open(QIODevice::ReadOnly);
|
||||
icon.setBodyDevice(file);
|
||||
mp->append(icon);
|
||||
|
||||
QNetworkReply *reply = m_manager.post(request, mp);
|
||||
mp->setParent(reply);
|
||||
file->setParent(reply);
|
||||
|
||||
connect(reply, SIGNAL(finished()), this, SLOT(slotRequestFinished()));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void Toasty::slotRequestFinished()
|
||||
{
|
||||
QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
|
||||
snoreDebug(SNORE_DEBUG) << reply->readAll();
|
||||
reply->close();
|
||||
reply->deleteLater();
|
||||
}
|
||||
|
||||
bool Toasty::initialize(SnoreCore *snore)
|
||||
{
|
||||
if (SnoreSecondaryBackend::initialize(snore)) {
|
||||
setDefaultValue("DEVICEID", "");
|
||||
snoreDebug(SNORE_DEBUG) << value("DEVICEID");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Toasty::deinitialize()
|
||||
{
|
||||
return SnoreSecondaryBackend::deinitialize();
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
#ifndef TOASTY_H
|
||||
#define TOASTY_H
|
||||
|
||||
#include "core/plugins/snorebackend.h"
|
||||
|
||||
#include <QNetworkAccessManager>
|
||||
|
||||
class Toasty : public Snore::SnoreSecondaryBackend
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_INTERFACES(Snore::SnoreSecondaryBackend)
|
||||
Q_PLUGIN_METADATA(IID "org.Snore.SecondaryNotificationBackend/1.0")
|
||||
public:
|
||||
Toasty();
|
||||
virtual bool initialize(Snore::SnoreCore *snore);
|
||||
virtual bool deinitialize();
|
||||
|
||||
public slots:
|
||||
virtual void slotNotify(Snore::Notification notification);
|
||||
|
||||
private slots:
|
||||
void slotRequestFinished();
|
||||
|
||||
private:
|
||||
QNetworkAccessManager m_manager;
|
||||
|
||||
};
|
||||
|
||||
#endif // TOASTY_H
|
Loading…
Reference in New Issue