0003-Configuration-support-for-desktop-notifications.patch
src/qtui/mainwin.cpp | ||
---|---|---|
578 | 578 |
UiSettings uiSettings; |
579 | 579 | |
580 | 580 |
#ifndef SPUTDEV |
581 |
if(uiSettings.value("DisplayPopupMessages", QVariant(true)).toBool()) { |
|
581 |
bool displayBubble = uiSettings.value("NotificationBubble", QVariant(true)).toBool(); |
|
582 |
bool displayDesktop = uiSettings.value("NotificationDesktop", QVariant(true)).toBool(); |
|
583 |
if(displayBubble || displayDesktop) { |
|
582 | 584 |
// FIXME don't invoke style engine for this! |
583 | 585 |
QString text = QtUi::style()->styleString(Message::mircToInternal(msg.contents())).plainText; |
584 |
displayTrayIconMessage(title, text);
|
|
585 |
sendDesktopNotification(title, text); |
|
586 |
if (displayBubble) displayTrayIconMessage(title, text);
|
|
587 |
if (displayDesktop) sendDesktopNotification(title, text);
|
|
586 | 588 |
} |
587 | 589 |
#endif |
588 | 590 |
if(uiSettings.value("AnimateTrayIcon", QVariant(true)).toBool()) { |
... | ... | |
607 | 609 |
{ |
608 | 610 |
QStringList actions; |
609 | 611 |
QMap<QString, QVariant> hints; |
612 |
UiSettings uiSettings; |
|
610 | 613 | |
611 |
hints["x"] = 100; // Standard hint: x location for the popup to show up
|
|
612 |
hints["y"] = 100; // Standard hint: y location for the popup to show up
|
|
614 |
hints["x"] = uiSettings.value("NotificationDesktopHintX", QVariant(0)).toInt(); // Standard hint: x location for the popup to show up
|
|
615 |
hints["y"] = uiSettings.value("NotificationDesktopHintY", QVariant(0)).toInt(); // Standard hint: y location for the popup to show up
|
|
613 | 616 | |
614 | 617 |
actions << "click" << "Click Me!"; |
615 | 618 | |
... | ... | |
621 | 624 |
QString("%1: %2:\n%2").arg(QTime::currentTime().toString()).arg(title).arg(message), // Body of the message to display |
622 | 625 |
actions, // Actions from which the user may choose |
623 | 626 |
hints, // Hints to the server displaying the message |
624 |
5000 // Timeout in milliseconds
|
|
627 |
uiSettings.value("NotificationDesktopTimeout", QVariant(5000)).toInt() // Timeout in milliseconds
|
|
625 | 628 |
); |
626 | 629 | |
627 | 630 |
if (!reply.isValid()) |
src/qtui/settingspages/generalsettingspage.cpp | ||
---|---|---|
44 | 44 |
connect(ui.minimizeOnClose, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); |
45 | 45 | |
46 | 46 |
connect(ui.animateTrayIcon, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); |
47 |
connect(ui.displayPopupMessages, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); |
|
47 |
connect(ui.bubbleBox, SIGNAL(toggled(bool)), this, SLOT(widgetHasChanged())); |
|
48 |
connect(ui.desktopBox, SIGNAL(toggled(bool)), this, SLOT(widgetHasChanged())); |
|
49 |
connect(ui.timeout_value, SIGNAL(valueChanged(int)), this, SLOT(widgetHasChanged())); |
|
50 |
connect(ui.x_value, SIGNAL(valueChanged(int)), this, SLOT(widgetHasChanged())); |
|
51 |
connect(ui.y_value, SIGNAL(valueChanged(int)), this, SLOT(widgetHasChanged())); |
|
48 | 52 | |
49 | 53 |
connect(ui.userMessagesInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); |
50 | 54 |
connect(ui.userMessagesInQueryBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); |
... | ... | |
65 | 69 |
ui.minimizeOnClose->setChecked(false); |
66 | 70 | |
67 | 71 |
ui.animateTrayIcon->setChecked(true); |
68 |
ui.displayPopupMessages->setChecked(true); |
|
72 |
ui.bubbleBox->setChecked(true); |
|
73 |
ui.desktopBox->setChecked(true); |
|
74 |
ui.timeout_value->setValue(5000); |
|
75 |
ui.x_value->setValue(0); |
|
76 |
ui.y_value->setValue(0); |
|
69 | 77 | |
70 | 78 |
ui.userMessagesInStatusBuffer->setChecked(true); |
71 | 79 |
ui.userMessagesInQueryBuffer->setChecked(false); |
... | ... | |
96 | 104 |
settings["AnimateTrayIcon"] = uiSettings.value("AnimateTrayIcon", QVariant(true)); |
97 | 105 |
ui.animateTrayIcon->setChecked(settings["AnimateTrayIcon"].toBool()); |
98 | 106 | |
99 |
settings["DisplayPopupMessages"] = uiSettings.value("DisplayPopupMessages", QVariant(true)); |
|
100 |
ui.displayPopupMessages->setChecked(settings["DisplayPopupMessages"].toBool()); |
|
107 |
settings["NotificationBubble"] = uiSettings.value("NotificationBubble", QVariant(true)); |
|
108 |
ui.bubbleBox->setChecked(settings["NotificationBubble"].toBool()); |
|
109 | ||
110 |
settings["NotificationDesktop"] = uiSettings.value("NotificationDesktop", QVariant(true)); |
|
111 |
ui.desktopBox->setChecked(settings["NotificationDesktop"].toBool()); |
|
112 |
settings["NotificationDesktopTimeout"] = uiSettings.value("NotificationDesktopTimeout", QVariant(5000)); |
|
113 |
ui.timeout_value->setValue(settings["NotificationDesktopTimeout"].toInt()); |
|
114 |
settings["NotificationDesktopHintX"] = uiSettings.value("NotificationDesktopHintX", QVariant(0)); |
|
115 |
ui.x_value->setValue(settings["NotificationDesktopHintX"].toInt()); |
|
116 |
settings["NotificationDesktopHintY"] = uiSettings.value("NotificationDesktopHintY", QVariant(0)); |
|
117 |
ui.y_value->setValue(settings["NotificationDesktopHintY"].toInt()); |
|
101 | 118 | |
102 | 119 |
// bufferSettings: |
103 | 120 |
BufferSettings bufferSettings; |
... | ... | |
124 | 141 |
uiSettings.setValue("MouseWheelChangesBuffers", ui.mouseWheelChangesBuffers->isChecked()); |
125 | 142 | |
126 | 143 |
uiSettings.setValue("AnimateTrayIcon", ui.animateTrayIcon->isChecked()); |
127 |
uiSettings.setValue("DisplayPopupMessages", ui.displayPopupMessages->isChecked()); |
|
144 |
uiSettings.setValue("NotificationBubble", ui.bubbleBox->isChecked()); |
|
145 |
uiSettings.setValue("NotificationDesktop", ui.desktopBox->isChecked()); |
|
146 |
uiSettings.setValue("NotificationDesktopTimeout", ui.timeout_value->value()); |
|
147 |
uiSettings.setValue("NotificationDesktopHintX", ui.x_value->value()); |
|
148 |
uiSettings.setValue("NotificationDesktopHintY", ui.y_value->value()); |
|
128 | 149 | |
129 | 150 |
BufferSettings bufferSettings; |
130 | 151 |
bufferSettings.setValue("UserMessagesInStatusBuffer", ui.userMessagesInStatusBuffer->isChecked()); |
... | ... | |
148 | 169 |
if(settings["MinimizeOnClose"].toBool() != ui.minimizeOnClose->isChecked()) return true; |
149 | 170 | |
150 | 171 |
if(settings["AnimateTrayIcon"].toBool() != ui.animateTrayIcon->isChecked()) return true; |
151 |
if(settings["DisplayPopupMessages"].toBool() != ui.displayPopupMessages->isChecked()) return true; |
|
172 |
if(settings["NotificationBubble"].toBool() != ui.bubbleBox->isChecked()) return true; |
|
173 |
if(settings["NotificationDesktop"].toBool() != ui.desktopBox->isChecked()) return true; |
|
174 |
if(settings["NotificationDesktopTimeout"].toInt() != ui.timeout_value->value()) return true; |
|
175 |
if(settings["NotificationDesktopHintX"].toInt() != ui.x_value->value()) return true; |
|
176 |
if(settings["NotificationDesktopHintY"].toInt() != ui.y_value->value()) return true; |
|
152 | 177 | |
153 | 178 |
if(settings["UserMessagesInStatusBuffer"].toBool() != ui.userMessagesInStatusBuffer->isChecked()) return true; |
154 | 179 |
if(settings["UserMessagesInQueryBuffer"].toBool() != ui.userMessagesInQueryBuffer->isChecked()) return true; |
src/qtui/settingspages/generalsettingspage.ui | ||
---|---|---|
6 | 6 |
<x>0</x> |
7 | 7 |
<y>0</y> |
8 | 8 |
<width>453</width> |
9 |
<height>632</height>
|
|
9 |
<height>800</height>
|
|
10 | 10 |
</rect> |
11 | 11 |
</property> |
12 | 12 |
<property name="windowTitle" > |
... | ... | |
64 | 64 |
<string>User Notification:</string> |
65 | 65 |
</property> |
66 | 66 |
<layout class="QGridLayout" > |
67 |
<item row="0" column="0" >
|
|
68 |
<widget class="QCheckBox" name="animateTrayIcon" >
|
|
69 |
<property name="text" >
|
|
70 |
<string>Animate tray icon</string>
|
|
67 |
<item row="2" column="0" >
|
|
68 |
<widget class="QGroupBox" name="bubbleBox" >
|
|
69 |
<property name="title" >
|
|
70 |
<string>Bubble</string>
|
|
71 | 71 |
</property> |
72 |
<property name="checked" >
|
|
72 |
<property name="checkable" >
|
|
73 | 73 |
<bool>true</bool> |
74 | 74 |
</property> |
75 |
<layout class="QVBoxLayout" name="verticalLayout" /> |
|
76 |
</widget> |
|
77 |
</item> |
|
78 |
<item row="2" column="1" > |
|
79 |
<widget class="QGroupBox" name="desktopBox" > |
|
80 |
<property name="title" > |
|
81 |
<string>Desktop</string> |
|
82 |
</property> |
|
83 |
<property name="checkable" > |
|
84 |
<bool>true</bool> |
|
85 |
</property> |
|
86 |
<layout class="QVBoxLayout" name="verticalLayout_2" > |
|
87 |
<item> |
|
88 |
<widget class="QFrame" name="desktopFrame" > |
|
89 |
<property name="frameShape" > |
|
90 |
<enum>QFrame::StyledPanel</enum> |
|
91 |
</property> |
|
92 |
<property name="frameShadow" > |
|
93 |
<enum>QFrame::Raised</enum> |
|
94 |
</property> |
|
95 |
<layout class="QFormLayout" name="formLayout" > |
|
96 |
<item row="0" column="0" > |
|
97 |
<widget class="QLabel" name="timeout_label" > |
|
98 |
<property name="text" > |
|
99 |
<string>Timeout</string> |
|
100 |
</property> |
|
101 |
</widget> |
|
102 |
</item> |
|
103 |
<item row="0" column="1" > |
|
104 |
<widget class="QSpinBox" name="timeout_value" > |
|
105 |
<property name="minimum" > |
|
106 |
<number>-1</number> |
|
107 |
</property> |
|
108 |
<property name="maximum" > |
|
109 |
<number>100000</number> |
|
110 |
</property> |
|
111 |
<property name="value" > |
|
112 |
<number>5000</number> |
|
113 |
</property> |
|
114 |
</widget> |
|
115 |
</item> |
|
116 |
<item row="1" column="0" > |
|
117 |
<widget class="QLabel" name="x_label" > |
|
118 |
<property name="text" > |
|
119 |
<string>X</string> |
|
120 |
</property> |
|
121 |
</widget> |
|
122 |
</item> |
|
123 |
<item row="2" column="0" > |
|
124 |
<widget class="QLabel" name="y_label" > |
|
125 |
<property name="text" > |
|
126 |
<string>Y</string> |
|
127 |
</property> |
|
128 |
</widget> |
|
129 |
</item> |
|
130 |
<item row="1" column="1" > |
|
131 |
<widget class="QSpinBox" name="x_value" > |
|
132 |
<property name="maximum" > |
|
133 |
<number>10000</number> |
|
134 |
</property> |
|
135 |
</widget> |
|
136 |
</item> |
|
137 |
<item row="2" column="1" > |
|
138 |
<widget class="QSpinBox" name="y_value" > |
|
139 |
<property name="maximum" > |
|
140 |
<number>10000</number> |
|
141 |
</property> |
|
142 |
</widget> |
|
143 |
</item> |
|
144 |
</layout> |
|
145 |
</widget> |
|
146 |
</item> |
|
147 |
</layout> |
|
75 | 148 |
</widget> |
76 | 149 |
</item> |
77 | 150 |
<item row="1" column="0" > |
78 |
<widget class="QCheckBox" name="displayPopupMessages" >
|
|
151 |
<widget class="QCheckBox" name="animateTrayIcon" >
|
|
79 | 152 |
<property name="text" > |
80 |
<string>Display pop-up messages</string>
|
|
153 |
<string>Animate tray icon</string>
|
|
81 | 154 |
</property> |
82 | 155 |
<property name="checked" > |
83 | 156 |
<bool>true</bool> |
... | ... | |
156 | 229 |
</widget> |
157 | 230 |
</item> |
158 | 231 |
<item> |
159 |
<spacer> |
|
232 |
<spacer name="verticalSpacer" >
|
|
160 | 233 |
<property name="orientation" > |
161 | 234 |
<enum>Qt::Vertical</enum> |
162 | 235 |
</property> |
163 |
<property name="sizeHint" > |
|
236 |
<property name="sizeHint" stdset="0" >
|
|
164 | 237 |
<size> |
165 | 238 |
<width>20</width> |
166 | 239 |
<height>40</height> |
167 |
- |