[sip-comm-dev] some feedbacks, mainly regarding the contactlist GUI


#1

hi dudes

I am a student at ULP, living in Strasbourg and I like rice. My
preferred color is red, sometimes it's blue or yellow, or green also.
My father name's ...

Okay okay let's make short, it will be more easy, given my level
in english : I'am a guy interessed by SIP communicator and as I have made a small related work, (http://wsympho.free.fr/fac/ter/), I have some feedbacks.
I hope it's the good mailing list.

I have seen a few bugs in the contactlist :
It's seems like Sip contacts in sc are handled like IM contacts in the contactlist GUI, so, it's impossible to make a call using a sip contact in the contact list. Even if we have an address in our contact list, we need to type this address to issue a call. Except if we are using a compatible USB phone of course :wink:

here is the current implementation of protocolContactSelected in
net.java.sip.communicator.impl.gui.main.contactlist.ContactListPanel.java:119

     /**
      * Implements the ContactListListener.protocolContactSelected method.
      */
     public void protocolContactSelected(ContactListEvent evt)
     {
         SwingUtilities.invokeLater(new RunMessageWindow(evt.getSourceContact(),
                 evt.getSourceProtoContact()));
     }

It's asummed that the only reason for wich a contact will be selected
is to send a message to that contact. Why ? Maybe we want to call him.
In fact this behaviour later lead to nullPointerExceptions because when
a user try to send IM to a sip contact, the protocol provider of this contact
do not have an OperationSetBasicInstantMessaging. We then have to answer the following question :

What action must be taken when a contact is selected ?
Open a chatwindow, issue a call or just select the contact ...

Other softwares just selects the contact and let the user choose an action either by showing a small popup or by extending an area under the selected contact, with a set of actions specific to the contact (metacontact).
It's look like a good solution but it's not the quickest way to fix the current problem. We can start by adding a "call this contact" JMenuItem under "send a message" in ContactRightButtonMenu and when a sip contact is selected, issue a call rather than opening a chat window, or just select the contact and let the user call by using the call button.

Another thing : when I use icons located in the bottom of the mainFrame to
switch from online to offline with a sip user, my contacts desappear. and when
I switch back to online, they dont return. The only way to have my contacts again is to exit and relaunch sc. And I see we can rename a sip contact to have a friendly username in the contact list rather than his address, but the Contact.getDisplayName() method always return the address of the sip contact.

Third : to make a sip call, there is a "call via" option wich gives the
possibility to select the account from which the call will be made.
It can be a usefull option, but I think it will "logic" to have a "default"
account to use with each contact.
This account could simply be the one to which the contact belong. Here is how I have done in the scphone plugin :
http://wsympho.free.fr/fac/ter/javadoc/net/java/sip/communicator/plugin/scphone/SCPhoneActivator.html#primaryProtocolProvider
The purpose is that when we add a contact, we have to choose an account
to attach that contact to.
So there is a kind of affinity betwen contact and accounts. I will prefer to use my account located at voip.example.com to call user located to the same server. And sometimes, with some servers, it will be impossible to do otherwise due to servers "incompatibility" or accounts limitations for example.

Fourth and last (for today :slight_smile:

It's not possible to add a contact when there isn't any group created. hence,
in the second window of the add contact wizard we can't go forward if the select group menu is empty and we have nullpointer exception at
net.java.sip.communicator.impl.gui.main.contactlist.addcontact.SelectGroupPanel.setGroup(SelectGroupPanel.java:121)
Here is the line : newContact.setGroup(((GroupWrapper)group).getMetaGroup());

Reason of the Exception : the value of group is null, because we do not have any group in the select menu.

How to reproduce : Try to add a contact when you do not have any group created

Proposition : show a warning window to the user when he try to add a contact and
he don't have any group in his contact list or have a default group.

Sorry I haven't produced any patch, I will try to be more productive in the
future :o)

···

++

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#2

Hi Sympho,

sorry for the late reply, I was really busy these days.

hi dudes

I am a student at ULP, living in Strasbourg and I like rice. My
preferred color is red, sometimes it's blue or yellow, or green also.
My father name's ...

One thing is sure we definitely have some common preferred colors:)

Okay okay let's make short, it will be more easy, given my level
in english : I'am a guy interessed by SIP communicator and as I have made a small related work, (http://wsympho.free.fr/fac/ter/), I have some feedbacks.
I hope it's the good mailing list.

It is:)

I have seen a few bugs in the contactlist :
It's seems like Sip contacts in sc are handled like IM contacts in the contactlist GUI, so, it's impossible to make a call using a sip contact in the contact list. Even if we have an address in our contact list, we need to type this address to issue a call. Except if we are using a compatible USB phone of course :wink:

here is the current implementation of protocolContactSelected in
net.java.sip.communicator.impl.gui.main.contactlist.ContactListPanel.java:119

    /**
     * Implements the ContactListListener.protocolContactSelected method.
     */
    public void protocolContactSelected(ContactListEvent evt)
    {
        SwingUtilities.invokeLater(new RunMessageWindow(evt.getSourceContact(),
                evt.getSourceProtoContact()));
    }

It's asummed that the only reason for wich a contact will be selected
is to send a message to that contact. Why ? Maybe we want to call him.
In fact this behaviour later lead to nullPointerExceptions because when
a user try to send IM to a sip contact, the protocol provider of this contact
do not have an OperationSetBasicInstantMessaging. We then have to answer the following question :

What action must be taken when a contact is selected ?
Open a chatwindow, issue a call or just select the contact ...

I prefer to divide the problem, that you described here, in two parts.

The first problem you describe is that there's no way to call a
MetaContact. The quick reply here is that actually the call action over
a MetaContact was already implemented in the gui and the
NullPointerException was caused by a bug. I've fixed that and now it
works. If you have a selected contact

The second problem (respectively question) is: What should be the
default action on user left click, right click and double click? When we
should open a chat, call the user, see some info, etc? That's a very
good question and I'm happy that you started this discussion on the
mailing list. We have had some offline discussions already, but this
question is really important and deserves to be posted here and
everybody give his opinion. Emcho what do you think about this point?

Other softwares just selects the contact and let the user choose an action either by showing a small popup or by extending an area under the selected contact, with a set of actions specific to the contact (metacontact).

I like this approach, but isn't it useful to have some default actions?
Like for example, pressing enter makes a call, double click opens a chat
window, right click opens a menu. We could still have the extended area,
but my question is what do you think about the key actions and the mouse
clicks? How we use them?

It's look like a good solution but it's not the quickest way to fix the current problem. We can start by adding a "call this contact" JMenuItem under "send a message" in ContactRightButtonMenu and when a sip contact is selected, issue a call rather than opening a chat window, or just select the contact and let the user call by using the call button.

I agree for adding a JMenuItem in the right button menu, it's a good
idea. Presently if we want to call some one without opening the chat
window, we should select the contact with the middle mouse button and
click ok. I agree that it isn't very intuitive, I just let you know how
it works.

Another thing : when I use icons located in the bottom of the mainFrame to
switch from online to offline with a sip user, my contacts desappear. and when
I switch back to online, they dont return. The only way to have my contacts again is to exit and relaunch sc.

I have tested this one and I think that the problem is that the sip
contact doesn't become online on reconnect. It probably disappears in
your case because you have pressed the "Hide offline contacts" button.

And I see we can rename a sip contact to have a friendly username in the contact list rather than his address, but the Contact.getDisplayName() method always return the address of the sip contact.

Actually when you rename a contact in the contact list you rename the meta contact. I have tried to rename a sip contact and it works for me, so could you please provide more details on what exactly happens and if there's an exception.

Third : to make a sip call, there is a "call via" option wich gives the
possibility to select the account from which the call will be made.
It can be a usefull option, but I think it will "logic" to have a "default"
account to use with each contact.
This account could simply be the one to which the contact belong. Here is how I have done in the scphone plugin :
http://wsympho.free.fr/fac/ter/javadoc/net/java/sip/communicator/plugin/scphone/SCPhoneActivator.html#primaryProtocolProvider The purpose is that when we add a contact, we have to choose an account
to attach that contact to.
So there is a kind of affinity betwen contact and accounts. I will prefer to use my account located at voip.example.com to call user located to the same server. And sometimes, with some servers, it will be impossible to do otherwise due to servers "incompatibility" or accounts limitations for example.

Good point! I have to verify if this is already done and if not I'll implement that.

Fourth and last (for today :slight_smile:

It's not possible to add a contact when there isn't any group created. hence,
in the second window of the add contact wizard we can't go forward if the select group menu is empty and we have nullpointer exception at
net.java.sip.communicator.impl.gui.main.contactlist.addcontact.SelectGroupPanel.setGroup(SelectGroupPanel.java:121)

Here is the line : newContact.setGroup(((GroupWrapper)group).getMetaGroup());

Reason of the Exception : the value of group is null, because we do not have any group in the select menu.

How to reproduce : Try to add a contact when you do not have any group created

Proposition : show a warning window to the user when he try to add a contact and
he don't have any group in his contact list or have a default group.

Nice catch! I'll fix that.

Thanks Sympho! You've done a very good work!

Yana

···

symphorien.wanko-tchuente@ulp.u-strasbg.fr wrote:

Sorry I haven't produced any patch, I will try to be more productive in the
future :o)

++

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net