User Edit improvements:
+ last seen
+ redesigned layout
look at examples for more details
on server with changes
on server without changes
This patch modifies the wording and/or whitespace of the license. It cannot be accepted as is.
While I'm not sure, I think tr() can specialcase zero of a plural form, so you don't need the logic at all. Please test this?
Adding 'days ago' to every single entry seems a bit excessive, especially since they are all identical. Either make the column simply be "Inactive Days" (or some shorter formulation) or do the full days/weeks/months/years analysis (which means custom sort order to maintain the relationships).
Dates need to be ISO format and in UTC.
This will break on servers that have third-party authentication. Either modify Server::getRegisteredUsers to return what you need, or at the very least base your returned data on the output from Server::getRegisteredUsers.
Channel IDs are not unsigned, please update your proto definiton.
If the server does not support the updated info, the columns should be removed. Since the data is either always there, or never there, simply check whether or not any of the received entries have last on fields.
I'm not sure where the UserInfo struct belongs, but I don't think Net.h is the right place. It's probably better to put it in User.h (and add a comment to it). Also, please use QDateTime for the storage of a in-memory date instead of a string.
I understand that 'last channel' is what you use on your server, and that a highly hierarchical structure with a high correlation between social group association and channel structure makes this handy. However, this is not universally true for all servers, and hence will feel rather strange on a server that does not use strong channel hierarchies, but instead uses e.g. strong ACL group hierarchies. Please see if there is a method of differentiation that is slightly less instance-specific.
This patch has been re-submitted as a pull-request.
See there https://github.com/mumble-voip/mumble/pull/148