[polari/wip/raresv/GSoC: 9/17] userDetails: add notification support.
- From: Rares Visalom <raresvisalom src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [polari/wip/raresv/GSoC: 9/17] userDetails: add notification support.
- Date: Mon, 22 Aug 2016 19:33:18 +0000 (UTC)
commit a7c2a5234f2edcac123edb19402074484392503f
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 | 40 ++++++++++++++++++++++++
src/userList.js | 24 +++++++++++++-
4 files changed, 82 insertions(+), 1 deletions(-)
---
diff --git a/data/org.gnome.Polari.data.gresource.xml b/data/org.gnome.Polari.data.gresource.xml
index 65ee61b..fbd184e 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 91be102..f166d62 100644
--- a/data/resources/user-details.ui
+++ b/data/resources/user-details.ui
@@ -126,6 +126,46 @@
<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="visible">True</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 c4136af..29db9ab 100644
--- a/src/userList.js
+++ b/src/userList.js
@@ -108,12 +108,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) {
this._expanded = false;
@@ -128,6 +134,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;
@@ -146,6 +167,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]