GNOME Bugzilla – Bug 656028
Display ongoing calls
Last modified: 2018-07-11 16:42:51 UTC
Atm the Shell can accept and decline audio/video calls (bug #653939). This is just the first step, during the IM hackfest we agreed that it should display ongoing calls as well and probably offer some controls to interact with them (hangup for example). See https://live.gnome.org/Hackfests/IMContacts%20Social2011/Tasks/ShellDesignEvents#preview for details and Allan's awesome mockups.
for the record, I'm working on this.
This is done here: http://cgit.collabora.com/git/user/xclaesse/gnome-shell.git/log/?h=call-approver That branch is more than just ongoing calls, it also merge call approver with the chat notification.
Created attachment 195994 [details] [review] messageTray: Add Notification::addActionArea() This makes possible to have both an entry bar and buttons for chat notifications
Created attachment 195995 [details] [review] messageTray: Notification::addButton() now returns the button
Created attachment 195996 [details] [review] telepathyClient: Merge chat and call notifications This offers a direct way to send message to caller before answer/reject the call.
Created attachment 195997 [details] [review] Notification: Add a 'statusBox' to show actors on top-right corner of a notification
Created attachment 195998 [details] [review] telepathyClient: Show ongoing call icon and timer
Here are screenshots how it looks like: http://people.collabora.com/~xclaesse/call-approver.png http://people.collabora.com/~xclaesse/call-ongoing.png
*** Bug 661188 has been marked as a duplicate of this bug. ***
Review of attachment 195994 [details] [review]: ::: js/ui/messageTray.js @@ +678,3 @@ }, + addActionArea: function(actor, props) { If we're going to have one API, I'd rather it be 'addActionArea'. Remove setActionArea or make it private, and make the telepathy client use addActionArea in the same commit. @@ +681,3 @@ + if (!this._actionAreasBox) { + let box = new St.BoxLayout({ vertical: true, + name: 'notification-actions' }); 'notification-actions' is already used by the buttons below?
Review of attachment 195995 [details] [review]: Looks fine... can you explain why you need this in the commit message?
Review of attachment 195996 [details] [review]: I didn't look too hard, but this seems fine. ::: js/ui/telepathyClient.js @@ +149,3 @@ + request[Tp.PROP_CHANNEL_CHANNEL_TYPE] = Tp.IFACE_CHANNEL_TYPE_TEXT; + request[Tp.PROP_CHANNEL_TARGET_HANDLE_TYPE] = Tp.HandleType.CONTACT; + request[Tp.PROP_CHANNEL_TARGET_HANDLE] = targetHandle Semi. @@ +960,3 @@ }, + canChat: function(value) { "setShowEntry" @@ +993,3 @@ } + if (message.direction == NotificationDirection.RECEIVED && !isLog) { This seems unrelated?
Review of attachment 195997 [details] [review]: ::: js/ui/messageTray.js @@ +478,3 @@ this._bannerLabel = this._bannerUrlHighlighter.actor; this._bannerBox.add_actor(this._bannerLabel); + this._statusBox = new St.BoxLayout({ name: 'notification-status-box'}); Put a space between the closing quote and the closing brace.
Review of attachment 195998 [details] [review]: Adds a new string, so we won't be able to commit it yet until we branch. ::: js/ui/telepathyClient.js @@ +550,3 @@ + { y_expand: true, + y_fill: false, + y_align: St.Align.MIDDLE}); space @@ +554,3 @@ + Shell.notify_when_call_started(this._callChannel, Lang.bind(this, function () { + this._callStartedTime = Date.now(); + this._callTimerId = Mainloop.timeout_add_seconds(1, Lang.bind(this, this._callTimerCb)); I'm sure there's a more efficient way to do this. Talk to Colin or someone who knows more about the "clocks" stuff? ::: src/shell-tp-client.c @@ +511,3 @@ + */ +void +shell_notify_when_call_started (TpChannel *channel, Can you put a comment or something here to let us know which gjs limitation you're trying to work around, so we know when to remove it? @@ +530,3 @@ + else + { + notify_when_call_started_data_free (data); Wouldn't it make sense to do this before you allocated the data?
Due to changes in the wider messaging ecosystem, messaging integration in the system unfortunately hasn't worked out and we are again back to a bunch of walled gardens. Taking that into consideration, keeping call UI in the client instead of having the system provide it is more in line with user expectation now, so closing.