add a setting to display the snore backend nitification in a different screen corner
This commit is contained in:
parent
82ebb45b2c
commit
44bd51c3f5
|
@ -23,13 +23,26 @@ Rectangle {
|
||||||
|
|
||||||
|
|
||||||
if (!isUpdate) {
|
if (!isUpdate) {
|
||||||
|
var corner = window.corner
|
||||||
var id = window.id
|
var id = window.id
|
||||||
var space = (id + 1) * height * 0.025
|
var space = (id + 1) * height * 0.025
|
||||||
|
|
||||||
window.y = space + (space + height) * id
|
|
||||||
animation.target = window
|
animation.target = window
|
||||||
animation.from = Screen.desktopAvailableWidth
|
|
||||||
animation.to = Screen.desktopAvailableWidth - width
|
window.y = space + (space + height) * id
|
||||||
|
if (corner == Qt.TopRightCorner || corner == Qt.BottomRightCorner) {
|
||||||
|
animation.from = Screen.desktopAvailableWidth
|
||||||
|
animation.to = Screen.desktopAvailableWidth - width
|
||||||
|
} else if(corner == Qt.TopLeftCorner || corner == Qt.BottomLeftCorner) {
|
||||||
|
animation.from = -width
|
||||||
|
animation.to = 0
|
||||||
|
}
|
||||||
|
if (corner == Qt.TopRightCorner || corner == Qt.TopLeftCorner) {
|
||||||
|
window.y = space + (space + height) * id
|
||||||
|
} else {
|
||||||
|
window.y = Screen.desktopAvailableHeight - (space + (space + height) * (id + 1))
|
||||||
|
}
|
||||||
|
|
||||||
animation.start()
|
animation.start()
|
||||||
window.visible = true
|
window.visible = true
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,9 +26,10 @@
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
using namespace Snore;
|
using namespace Snore;
|
||||||
|
|
||||||
NotifyWidget::NotifyWidget(int pos, QWindow *parent) :
|
NotifyWidget::NotifyWidget(int pos, Qt::Corner corner, QWindow *parent) :
|
||||||
QQuickView(QUrl("qrc:/notification.qml"),parent),
|
QQuickView(QUrl("qrc:/notification.qml"),parent),
|
||||||
m_id(pos),
|
m_id(pos),
|
||||||
|
m_corner(corner),
|
||||||
m_mem(QString("SnoreNotifyWidget_rev%1_id%2").arg(QString::number(SHARED_MEM_TYPE_REV()), QString::number(m_id))),
|
m_mem(QString("SnoreNotifyWidget_rev%1_id%2").arg(QString::number(SHARED_MEM_TYPE_REV()), QString::number(m_id))),
|
||||||
m_ready(true)
|
m_ready(true)
|
||||||
{
|
{
|
||||||
|
@ -147,6 +148,11 @@ int NotifyWidget::id()
|
||||||
return m_id;
|
return m_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Qt::Corner NotifyWidget::corner()
|
||||||
|
{
|
||||||
|
return m_corner;
|
||||||
|
}
|
||||||
|
|
||||||
void NotifyWidget::slotDismissed()
|
void NotifyWidget::slotDismissed()
|
||||||
{
|
{
|
||||||
emit dismissed();
|
emit dismissed();
|
||||||
|
|
|
@ -44,7 +44,8 @@ class NotifyWidget : public QQuickView
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Q_PROPERTY(int id READ id)
|
Q_PROPERTY(int id READ id)
|
||||||
explicit NotifyWidget(int pos, QWindow *parent = 0);
|
Q_PROPERTY(Qt::Corner corner READ corner)
|
||||||
|
explicit NotifyWidget(int pos, Qt::Corner corner, QWindow *parent = 0);
|
||||||
~NotifyWidget();
|
~NotifyWidget();
|
||||||
|
|
||||||
void display(const Snore::Notification ¬ification);
|
void display(const Snore::Notification ¬ification);
|
||||||
|
@ -55,6 +56,7 @@ public:
|
||||||
Snore::Notification ¬ification();
|
Snore::Notification ¬ification();
|
||||||
|
|
||||||
int id();
|
int id();
|
||||||
|
Qt::Corner corner();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void invoked();
|
void invoked();
|
||||||
|
@ -71,6 +73,7 @@ private:
|
||||||
Snore::Notification m_notification;
|
Snore::Notification m_notification;
|
||||||
QObject *m_qmlNotification;
|
QObject *m_qmlNotification;
|
||||||
int m_id;
|
int m_id;
|
||||||
|
Qt::Corner m_corner;
|
||||||
QSharedMemory m_mem;
|
QSharedMemory m_mem;
|
||||||
bool m_ready;
|
bool m_ready;
|
||||||
};
|
};
|
||||||
|
|
|
@ -123,8 +123,9 @@ void SnoreNotifier::slotProcessQueue()
|
||||||
|
|
||||||
void SnoreNotifier::setup()
|
void SnoreNotifier::setup()
|
||||||
{
|
{
|
||||||
|
Qt::Corner displayPos = static_cast<Qt::Corner>(value("Position").toInt());
|
||||||
for (int i = 0; i < m_widgets.size(); ++i) {
|
for (int i = 0; i < m_widgets.size(); ++i) {
|
||||||
NotifyWidget *w = new NotifyWidget(i);
|
NotifyWidget *w = new NotifyWidget(i,displayPos);
|
||||||
m_widgets[i] = w;
|
m_widgets[i] = w;
|
||||||
connect(w, SIGNAL(dismissed()), this, SLOT(slotDismissed()));
|
connect(w, SIGNAL(dismissed()), this, SLOT(slotDismissed()));
|
||||||
connect(w, SIGNAL(invoked()), this, SLOT(slotInvoked()));
|
connect(w, SIGNAL(invoked()), this, SLOT(slotInvoked()));
|
||||||
|
@ -138,6 +139,7 @@ void SnoreNotifier::setup()
|
||||||
bool SnoreNotifier::initialize(SnoreCore *snore)
|
bool SnoreNotifier::initialize(SnoreCore *snore)
|
||||||
{
|
{
|
||||||
if (SnoreBackend::initialize(snore)) {
|
if (SnoreBackend::initialize(snore)) {
|
||||||
|
setDefaultValue("Position", Qt::TopRightCorner, "The position for the notification.");
|
||||||
return metaObject()->invokeMethod(this, "setup", Qt::QueuedConnection);
|
return metaObject()->invokeMethod(this, "setup", Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue