Merge pull request #349 from monich/sound
Made notification sound configurable
This commit is contained in:
commit
444649c3b2
4 changed files with 90 additions and 49 deletions
|
@ -561,11 +561,66 @@ Page {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: feedbackComboBox
|
||||||
|
width: parent.columnWidth
|
||||||
|
label: qsTr("Notification feedback")
|
||||||
|
description: qsTr("Use non-graphical feedback (sound, vibration) for notifications")
|
||||||
|
menu: ContextMenu {
|
||||||
|
id: feedbackMenu
|
||||||
|
x: 0
|
||||||
|
width: feedbackComboBox.width
|
||||||
|
|
||||||
|
MenuItem {
|
||||||
|
readonly property int value: AppSettings.NotificationFeedbackAll
|
||||||
|
text: qsTr("All events")
|
||||||
|
onClicked: {
|
||||||
|
appSettings.notificationFeedback = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MenuItem {
|
||||||
|
readonly property int value: AppSettings.NotificationFeedbackNew
|
||||||
|
text: qsTr("Only new events")
|
||||||
|
onClicked: {
|
||||||
|
appSettings.notificationFeedback = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MenuItem {
|
||||||
|
readonly property int value: AppSettings.NotificationFeedbackNone
|
||||||
|
text: qsTr("None")
|
||||||
|
onClicked: {
|
||||||
|
appSettings.notificationFeedback = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: updateFeedbackSelection()
|
||||||
|
|
||||||
|
function updateFeedbackSelection() {
|
||||||
|
var menuItems = feedbackMenu.children
|
||||||
|
var n = menuItems.length
|
||||||
|
for (var i=0; i<n; i++) {
|
||||||
|
if (menuItems[i].value === appSettings.notificationFeedback) {
|
||||||
|
currentIndex = i
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: appSettings
|
||||||
|
onNotificationFeedbackChanged: {
|
||||||
|
feedbackComboBox.updateFeedbackSelection()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TextSwitch {
|
TextSwitch {
|
||||||
width: parent.columnWidth
|
width: parent.columnWidth
|
||||||
checked: appSettings.notificationTurnsDisplayOn && enabled
|
checked: appSettings.notificationTurnsDisplayOn && enabled
|
||||||
text: qsTr("Notification turns on the display")
|
text: qsTr("Notification turns on the display")
|
||||||
height: appSettings.notificationFeedback === AppSettings.NotificationFeedbackNone ? 0 : implicitHeight
|
enabled: appSettings.notificationFeedback !== AppSettings.NotificationFeedbackNone
|
||||||
|
height: enabled ? implicitHeight: 0
|
||||||
clip: height < implicitHeight
|
clip: height < implicitHeight
|
||||||
visible: height > 0
|
visible: height > 0
|
||||||
automaticCheck: false
|
automaticCheck: false
|
||||||
|
@ -574,57 +629,23 @@ Page {
|
||||||
}
|
}
|
||||||
Behavior on height { SmoothedAnimation { duration: 200 } }
|
Behavior on height { SmoothedAnimation { duration: 200 } }
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
ComboBox {
|
TextSwitch {
|
||||||
id: feedbackComboBox
|
width: parent.columnWidth
|
||||||
label: qsTr("Notification feedback")
|
checked: appSettings.notificationSoundsEnabled && enabled
|
||||||
description: qsTr("Use non-graphical feedback (sound, vibration) for notifications")
|
text: qsTr("Enable notification sounds")
|
||||||
menu: ContextMenu {
|
description: qsTr("When sounds are enabled, Fernschreiber would use Sailfish OS notification sound for chats, which can be configured in system settings.")
|
||||||
id: feedbackMenu
|
enabled: appSettings.notificationFeedback !== AppSettings.NotificationFeedbackNone
|
||||||
|
height: enabled ? implicitHeight: 0
|
||||||
MenuItem {
|
clip: height < implicitHeight
|
||||||
readonly property int value: AppSettings.NotificationFeedbackAll
|
visible: height > 0
|
||||||
text: qsTr("All events")
|
automaticCheck: false
|
||||||
onClicked: {
|
onClicked: {
|
||||||
appSettings.notificationFeedback = value
|
appSettings.notificationSoundsEnabled = !checked
|
||||||
}
|
|
||||||
}
|
|
||||||
MenuItem {
|
|
||||||
readonly property int value: AppSettings.NotificationFeedbackNew
|
|
||||||
text: qsTr("Only new events")
|
|
||||||
onClicked: {
|
|
||||||
appSettings.notificationFeedback = value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MenuItem {
|
|
||||||
readonly property int value: AppSettings.NotificationFeedbackNone
|
|
||||||
text: qsTr("None")
|
|
||||||
onClicked: {
|
|
||||||
appSettings.notificationFeedback = value
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Behavior on height { SmoothedAnimation { duration: 200 } }
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onCompleted: updateFeedbackSelection()
|
|
||||||
|
|
||||||
function updateFeedbackSelection() {
|
|
||||||
var menuItems = feedbackMenu.children
|
|
||||||
var n = menuItems.length
|
|
||||||
for (var i=0; i<n; i++) {
|
|
||||||
if (menuItems[i].value === appSettings.notificationFeedback) {
|
|
||||||
currentIndex = i
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Connections {
|
|
||||||
target: appSettings
|
|
||||||
onNotificationFeedbackChanged: {
|
|
||||||
feedbackComboBox.updateFeedbackSelection()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SectionHeader {
|
SectionHeader {
|
||||||
|
|
|
@ -27,6 +27,7 @@ namespace {
|
||||||
const QString KEY_SHOW_STICKERS_AS_IMAGES("showStickersAsImages");
|
const QString KEY_SHOW_STICKERS_AS_IMAGES("showStickersAsImages");
|
||||||
const QString KEY_ANIMATE_STICKERS("animateStickers");
|
const QString KEY_ANIMATE_STICKERS("animateStickers");
|
||||||
const QString KEY_NOTIFICATION_TURNS_DISPLAY_ON("notificationTurnsDisplayOn");
|
const QString KEY_NOTIFICATION_TURNS_DISPLAY_ON("notificationTurnsDisplayOn");
|
||||||
|
const QString KEY_NOTIFICATION_SOUNDS_ENABLED("notificationSoundsEnabled");
|
||||||
const QString KEY_NOTIFICATION_FEEDBACK("notificationFeedback");
|
const QString KEY_NOTIFICATION_FEEDBACK("notificationFeedback");
|
||||||
const QString KEY_STORAGE_OPTIMIZER("storageOptimizer");
|
const QString KEY_STORAGE_OPTIMIZER("storageOptimizer");
|
||||||
const QString KEY_INLINEBOT_LOCATION_ACCESS("allowInlineBotLocationAccess");
|
const QString KEY_INLINEBOT_LOCATION_ACCESS("allowInlineBotLocationAccess");
|
||||||
|
@ -122,6 +123,20 @@ void AppSettings::setNotificationTurnsDisplayOn(bool turnOn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AppSettings::notificationSoundsEnabled() const
|
||||||
|
{
|
||||||
|
return settings.value(KEY_NOTIFICATION_SOUNDS_ENABLED, true).toBool();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppSettings::setNotificationSoundsEnabled(bool enable)
|
||||||
|
{
|
||||||
|
if (notificationSoundsEnabled() != enable) {
|
||||||
|
LOG(KEY_NOTIFICATION_SOUNDS_ENABLED << enable);
|
||||||
|
settings.setValue(KEY_NOTIFICATION_SOUNDS_ENABLED, enable);
|
||||||
|
emit notificationSoundsEnabledChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AppSettings::NotificationFeedback AppSettings::notificationFeedback() const
|
AppSettings::NotificationFeedback AppSettings::notificationFeedback() const
|
||||||
{
|
{
|
||||||
return (NotificationFeedback) settings.value(KEY_NOTIFICATION_FEEDBACK, (int) NotificationFeedbackAll).toInt();
|
return (NotificationFeedback) settings.value(KEY_NOTIFICATION_FEEDBACK, (int) NotificationFeedbackAll).toInt();
|
||||||
|
|
|
@ -29,6 +29,7 @@ class AppSettings : public QObject {
|
||||||
Q_PROPERTY(bool showStickersAsImages READ showStickersAsImages WRITE setShowStickersAsImages NOTIFY showStickersAsImagesChanged)
|
Q_PROPERTY(bool showStickersAsImages READ showStickersAsImages WRITE setShowStickersAsImages NOTIFY showStickersAsImagesChanged)
|
||||||
Q_PROPERTY(bool animateStickers READ animateStickers WRITE setAnimateStickers NOTIFY animateStickersChanged)
|
Q_PROPERTY(bool animateStickers READ animateStickers WRITE setAnimateStickers NOTIFY animateStickersChanged)
|
||||||
Q_PROPERTY(bool notificationTurnsDisplayOn READ notificationTurnsDisplayOn WRITE setNotificationTurnsDisplayOn NOTIFY notificationTurnsDisplayOnChanged)
|
Q_PROPERTY(bool notificationTurnsDisplayOn READ notificationTurnsDisplayOn WRITE setNotificationTurnsDisplayOn NOTIFY notificationTurnsDisplayOnChanged)
|
||||||
|
Q_PROPERTY(bool notificationSoundsEnabled READ notificationSoundsEnabled WRITE setNotificationSoundsEnabled NOTIFY notificationSoundsEnabledChanged)
|
||||||
Q_PROPERTY(NotificationFeedback notificationFeedback READ notificationFeedback WRITE setNotificationFeedback NOTIFY notificationFeedbackChanged)
|
Q_PROPERTY(NotificationFeedback notificationFeedback READ notificationFeedback WRITE setNotificationFeedback NOTIFY notificationFeedbackChanged)
|
||||||
Q_PROPERTY(bool storageOptimizer READ storageOptimizer WRITE setStorageOptimizer NOTIFY storageOptimizerChanged)
|
Q_PROPERTY(bool storageOptimizer READ storageOptimizer WRITE setStorageOptimizer NOTIFY storageOptimizerChanged)
|
||||||
Q_PROPERTY(bool allowInlineBotLocationAccess READ allowInlineBotLocationAccess WRITE setAllowInlineBotLocationAccess NOTIFY allowInlineBotLocationAccessChanged)
|
Q_PROPERTY(bool allowInlineBotLocationAccess READ allowInlineBotLocationAccess WRITE setAllowInlineBotLocationAccess NOTIFY allowInlineBotLocationAccessChanged)
|
||||||
|
@ -64,6 +65,9 @@ public:
|
||||||
bool notificationTurnsDisplayOn() const;
|
bool notificationTurnsDisplayOn() const;
|
||||||
void setNotificationTurnsDisplayOn(bool turnOn);
|
void setNotificationTurnsDisplayOn(bool turnOn);
|
||||||
|
|
||||||
|
bool notificationSoundsEnabled() const;
|
||||||
|
void setNotificationSoundsEnabled(bool enable);
|
||||||
|
|
||||||
NotificationFeedback notificationFeedback() const;
|
NotificationFeedback notificationFeedback() const;
|
||||||
void setNotificationFeedback(NotificationFeedback feedback);
|
void setNotificationFeedback(NotificationFeedback feedback);
|
||||||
|
|
||||||
|
@ -86,6 +90,7 @@ signals:
|
||||||
void showStickersAsImagesChanged();
|
void showStickersAsImagesChanged();
|
||||||
void animateStickersChanged();
|
void animateStickersChanged();
|
||||||
void notificationTurnsDisplayOnChanged();
|
void notificationTurnsDisplayOnChanged();
|
||||||
|
void notificationSoundsEnabledChanged();
|
||||||
void notificationFeedbackChanged();
|
void notificationFeedbackChanged();
|
||||||
void storageOptimizerChanged();
|
void storageOptimizerChanged();
|
||||||
void allowInlineBotLocationAccessChanged();
|
void allowInlineBotLocationAccessChanged();
|
||||||
|
|
|
@ -373,7 +373,7 @@ void NotificationManager::publishNotification(const NotificationGroup *notificat
|
||||||
} else {
|
} else {
|
||||||
nemoNotification->setPreviewBody(notificationBody);
|
nemoNotification->setPreviewBody(notificationBody);
|
||||||
nemoNotification->setPreviewSummary(summary);
|
nemoNotification->setPreviewSummary(summary);
|
||||||
nemoNotification->setHintValue(HINT_SUPPRESS_SOUND, false);
|
nemoNotification->setHintValue(HINT_SUPPRESS_SOUND, !appSettings->notificationSoundsEnabled());
|
||||||
nemoNotification->setHintValue(HINT_DISPLAY_ON, appSettings->notificationTurnsDisplayOn());
|
nemoNotification->setHintValue(HINT_DISPLAY_ON, appSettings->notificationTurnsDisplayOn());
|
||||||
nemoNotification->setHintValue(HINT_VISIBILITY, VISIBILITY_PUBLIC);
|
nemoNotification->setHintValue(HINT_VISIBILITY, VISIBILITY_PUBLIC);
|
||||||
nemoNotification->setUrgency(Notification::Normal);
|
nemoNotification->setUrgency(Notification::Normal);
|
||||||
|
|
Loading…
Reference in a new issue