controlcenter: new DoNotDisturb

main
reionwong 4 years ago
parent 8787990fc0
commit ab879c0d39

@ -27,6 +27,7 @@ set(SRCS
src/processprovider.cpp
src/activity.cpp
src/capplications.cpp
src/notifications.cpp
src/systemtray/statusnotifieritemsource.cpp
src/systemtray/systemtraytypes.cpp

@ -74,6 +74,10 @@ ControlCenterDialog {
id: appearance
}
Notifications {
id: notifications
}
SinkModel {
id: paSinkModel
@ -272,6 +276,16 @@ ControlCenterDialog {
onClicked: appearance.switchDarkMode(!FishUI.Theme.darkMode)
}
CardItem {
Layout.fillHeight: true
Layout.preferredWidth: cardItems.cellWidth
icon: FishUI.Theme.darkMode || checked ? "qrc:/images/dark/dark-mode.svg"
: "qrc:/images/light/dark-mode.svg"
checked: notifications.doNotDisturb
label: qsTr("Do Not Disturb")
onClicked: notifications.doNotDisturb = !notifications.doNotDisturb
}
CardItem {
Layout.fillHeight: true
Layout.preferredWidth: cardItems.cellWidth

@ -27,6 +27,7 @@
#include "appmenu/appmenumodel.h"
#include "appmenu/appmenuapplet.h"
#include "poweractions.h"
#include "notifications.h"
#include "appearance.h"
#include "brightness.h"
@ -46,6 +47,7 @@ int main(int argc, char *argv[])
qmlRegisterType<AppMenuModel>(uri, 1, 0, "AppMenuModel");
qmlRegisterType<AppMenuApplet>(uri, 1, 0, "AppMenuApplet");
qmlRegisterType<PowerActions>(uri, 1, 0, "PowerActions");
qmlRegisterType<Notifications>(uri, 1, 0, "Notifications");
QString qmFilePath = QString("%1/%2.qm").arg("/usr/share/cutefish-statusbar/translations/").arg(QLocale::system().name());
if (QFile::exists(qmFilePath)) {

@ -0,0 +1,60 @@
/*
* Copyright (C) 2021 - 2022 CutefishOS Team.
*
* Author: Reion Wong <reion@cutefishos.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "notifications.h"
Notifications::Notifications(QObject *parent)
: QObject(parent)
, m_iface("com.cutefish.Notification",
"/Notification",
"com.cutefish.Notification", QDBusConnection::sessionBus())
{
m_doNotDisturb = m_iface.property("doNotDisturb").toBool();
QDBusConnection::sessionBus().connect("com.cutefish.Notification",
"/Notification",
"com.cutefish.Notification",
"doNotDisturbChanged", this, SLOT(onDBusDoNotDisturbChanged()));
}
bool Notifications::doNotDisturb() const
{
return m_doNotDisturb;
}
void Notifications::setDoNotDisturb(bool enabled)
{
m_doNotDisturb = enabled;
QDBusInterface iface("com.cutefish.Notification",
"/Notification",
"com.cutefish.Notification", QDBusConnection::sessionBus());
if (iface.isValid()) {
iface.asyncCall("setDoNotDisturb", enabled);
}
emit doNotDisturbChanged();
}
void Notifications::onDBusDoNotDisturbChanged()
{
m_doNotDisturb = m_iface.property("doNotDisturb").toBool();
emit doNotDisturbChanged();
}

@ -0,0 +1,49 @@
/*
* Copyright (C) 2021 - 2022 CutefishOS Team.
*
* Author: Reion Wong <reion@cutefishos.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef NOTIFICATIONS_H
#define NOTIFICATIONS_H
#include <QObject>
#include <QDBusInterface>
#include <QDBusPendingCall>
class Notifications : public QObject
{
Q_OBJECT
Q_PROPERTY(bool doNotDisturb READ doNotDisturb WRITE setDoNotDisturb NOTIFY doNotDisturbChanged)
public:
explicit Notifications(QObject *parent = nullptr);
bool doNotDisturb() const;
void setDoNotDisturb(bool enabled);
private slots:
void onDBusDoNotDisturbChanged();
signals:
void doNotDisturbChanged();
private:
QDBusInterface m_iface;
bool m_doNotDisturb;
};
#endif // NOTIFICATIONS_H
Loading…
Cancel
Save