[polari/wip/raresv/nick-popover: 15/16] userDetails: Add notification support.
- From: Rares Visalom <raresvisalom src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [polari/wip/raresv/nick-popover: 15/16] userDetails: Add notification support.
- Date: Mon, 5 Sep 2016 12:06:43 +0000 (UTC)
commit 44f30583ccd33d68b93e68290834cae32b732187
Author: raresv <rares visalom gmail com>
Date: Thu Aug 18 20:58:10 2016 +0300
userDetails: Add notification support.
We want to be able to emit a notification whenever a
watched user comes online. The notification will be
emitted by the new userTracker module, but we also need
support for it in both the UserDetails and the UserPopover.
The UserDetails class needs to show an icon and a label
whenever the corresponding user is being watched, and
hide those when the user is not being watched. The new
notifications-enabled property is used to set the
visibility of the two widgets. This property is controlled
by the ToggleButton located in the UserPopover. We also
add a new icon that will be used in the UserDetails and
UserPopover classes.
data/org.gnome.Polari.data.gresource.xml | 1 +
data/resources/polari-user-notify-symbolic.svg | 18 +++++++++++
data/resources/user-details.ui | 39 ++++++++++++++++++++++++
src/userList.js | 24 ++++++++++++++-
4 files changed, 81 insertions(+), 1 deletions(-)
---
diff --git a/data/org.gnome.Polari.data.gresource.xml b/data/org.gnome.Polari.data.gresource.xml
index 1c4d3fc..b21bb85 100644
--- a/data/org.gnome.Polari.data.gresource.xml
+++ b/data/org.gnome.Polari.data.gresource.xml
@@ -5,6 +5,7 @@
<file alias="data/networks.json">resources/networks.json</file>
<file alias="gtk/help-overlay.ui" preprocess="xml-stripblanks">resources/help-overlay.ui</file>
<file alias="gtk/menus.ui" preprocess="xml-stripblanks">resources/menus.ui</file>
+ <file alias="icons/polari-user-notify-symbolic.svg"
preprocess="xml-stripblanks">resources/polari-user-notify-symbolic.svg</file>
<file alias="ui/connection-details.ui"
preprocess="xml-stripblanks">resources/connection-details.ui</file>
<file alias="ui/connection-properties.ui"
preprocess="xml-stripblanks">resources/connection-properties.ui</file>
<file alias="ui/entry-area.ui" preprocess="xml-stripblanks">resources/entry-area.ui</file>
diff --git a/data/resources/polari-user-notify-symbolic.svg b/data/resources/polari-user-notify-symbolic.svg
new file mode 100644
index 0000000..c28a4d4
--- /dev/null
+++ b/data/resources/polari-user-notify-symbolic.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" id="svg10865" viewBox="0 0
15.999999 15.999999" height="4.5155554mm" width="4.5155554mm" inkscape:version="0.91 r13725"
sodipodi:docname="polari-user-notify-symbolic.svg">
+ <sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10"
gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2"
inkscape:window-width="1920" inkscape:window-height="1080" id="namedview10" showgrid="false"
inkscape:zoom="29.500001" inkscape:cx="1.6963679" inkscape:cy="10.950363" inkscape:window-x="0"
inkscape:window-y="0" inkscape:window-maximized="0" inkscape:current-layer="svg10865"/>
+ <defs id="defs10867"/>
+ <metadata id="metadata10870">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g id="g35541" transform="translate(-346.1907,-963.1781)">
+ <path inkscape:connector-curvature="0" style="fill:#bebebe;fill-opacity:1;stroke:none" d="m
354.25319,964.67814 c -1.65686,0 -3,1.34315 -3,3 0,1.27269 -0.0169,4.99999 -3.5625,7 l 13,0 c
-3.45455,-2.00001 -3.4375,-5.72731 -3.4375,-7 0,-1.65685 -1.34314,-3 -3,-3 z" id="path5705-7"/>
+ <path inkscape:connector-curvature="0" style="fill:#bebebe;fill-opacity:1;stroke:none" id="path5707-8"
d="m 356.24405,975.6781 a 2.0000288,2.0000186 0 0 1 -1.00002,1.73207 2.0000288,2.0000186 0 0 1 -2.00003,0
2.0000288,2.0000186 0 0 1 -1.00001,-1.73207 l 2.00003,0 z"/>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/data/resources/user-details.ui b/data/resources/user-details.ui
index a9349ec..3269cfc 100644
--- a/data/resources/user-details.ui
+++ b/data/resources/user-details.ui
@@ -127,6 +127,45 @@
<property name="left-attach">0</property>
</packing>
</child>
+ <child>
+ <object class="GtkImage">
+ <property name="icon-name">polari-user-notify-symbolic</property>
+ <property name="visible" bind-source="notificationLabel"
+ bind-property="visible" bind-flags="sync-create"/>
+ <property name="opacity" bind-source="notificationLabel"
+ bind-property="opacity" bind-flags="sync-create"/>
+ <property name="no-show-all">True</property>
+ <property name="halign">start</property>
+ <property name="margin-left">0</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ </object>
+ <packing>
+ <property name="width">1</property>
+ <property name="top-attach">2</property>
+ <property name="left-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="notificationLabel">
+ <property name="ellipsize">end</property>
+ <property name="halign">start</property>
+ <property name="margin-start">20</property>
+ <property name="hexpand">True</property>
+ <property name="no-show-all">True</property>
+ <property name="use-markup">True</property>
+ <property name="label" translatable="yes">Will notify if user appears online.</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ </object>
+ <packing>
+ <property name="width">2</property>
+ <property name="top-attach">2</property>
+ <property name="left-attach">0</property>
+ </packing>
+ </child>
</object>
</child>
<child>
diff --git a/src/userList.js b/src/userList.js
index cfcb337..1f1e6bc 100644
--- a/src/userList.js
+++ b/src/userList.js
@@ -109,12 +109,18 @@ const UserDetails = new Lang.Class({
'detailsGrid',
'fullnameLabel',
'lastLabel',
+ 'notificationLabel',
'messageButton'],
Properties: { 'expanded': GObject.ParamSpec.boolean('expanded',
'expanded',
'expanded',
READWRITE,
- false)},
+ false),
+ 'notifications-enabled': GObject.ParamSpec.boolean('notifications-enabled',
+ 'notifications-enabled',
+ 'notifications-enabled',
+ READWRITE,
+ false)},
_init: function(params = {}) {
if (params.user) {
@@ -134,6 +140,21 @@ const UserDetails = new Lang.Class({
this._detailsGrid.hide();
},
+ get notifications_enabled() {
+ return this._notificationsEnabled;
+ },
+
+ set notifications_enabled(value) {
+ if (this._notificationsEnabled == value)
+ return;
+
+ this._notificationsEnabled = value;
+
+ this.notify('notifications-enabled');
+
+ this._notificationLabel.opacity = value ? 1. : 0.;
+ },
+
set user(user) {
if (this._user == user)
return;
@@ -152,6 +173,7 @@ const UserDetails = new Lang.Class({
this._expand();
this._updateButtonVisibility();
+ this._notificationLabel.visible = this._user == null;
this._lastLabel.visible = this._user != null;
},
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]