* partly rewrote join_room because it was hard to read
* Correctly handle invites from anonymous rooms. Fixes#4057
* Use HIG dialog for invitation requests
* Fix bug where minimized groupchats where hidden after a reconnect
* Removed some duplicated code
This is, however, only a half fix as this fixes that it fails when
there's None in waiting_descriptors[2], but actually, there never
should be None, so I have to investigate why there was none.
This patch is, however, correct and needed and the other queues also
have that check. It's just that I also need to fix the reason for
the None in the queue.
An idea: Currently, we don't send the message when the key has not
enough trust. How about showing the unauthenticated icon then, but
sending the message?
This workaround will still work once fallback to disco is supported,
though it SHOULD be removed then as it's not necassary anymore then.
@bct: Now we only need to get rid of that password dialog :).
We can assume the user's PC is safe, otherwise encryption won't help
anyway as the key could be stolen. If the user is too paranoid, he can
still disable it and thus also force the other end to stop logging.
Remove some usage of has_key() in the contacts module. It is a bit slower (method overhead) and will be deprecated soon.
In roster_window. make a small if-clause more pythonic.
Caps is now used for: File Transfers, MUC Invites, Ad-Hoc Commands.
TODO:
* Also handle it this way for typing notifications
(This might give some trouble / compatibility issues)
* Fall back to service discovery if no caps are available. Otherwise,
we break compatibility with a lot of clients. (Asterix?)
This also fixes the problem of showing the wrong icon when expanding metacontacts.
Example:
We have the groups A, B, C in our child model
But only A and C are visible (and therefore in modelfilter)
Imagine we have a childIter_G pointing to group B
Getting its path in the childmodel, will give us (lets say) 2
2 means now the second group/row in the CHILD model
We now pass this to the tree and tell him "Expand row 2"
The tree itself is looking at the 2nd row of modelfilter: "Hey modelfilter, expand row number 2"
For modelfilter row number 2 is C and NOT B
* Do not double escape group names
* Try to remove SelfContact on disconnect only once
* Do not show minimized groupchats which were minimized after disconnect
* Always reset group expand state after adding a contact to roster.
* Don't traceback when another resource of us is moving contacts to new/different groups.
* Always refilter all involved groups.
* It is now possible to not update contacts severside when using add/remove_from_groups
* Added NS_RECEIPTS to protocol namespace list.
* Show our support of XEP-0184 in caps.
* Added a big, fat warning to get_contact as this does not work as
expected.
* There was some strangeness in our XEP-0022, it added an id tag to
the x tag, which isn't mentioned anywhere in the XEP. And for some
strange reason, that id even was the same all the time.
* Fixed a typo.
* Change metacontact ordering. Fallback to priority only if two contacts have the same show, not the other way round.
* Move contacts that just signed out to the bottom of the group, not to the top.
-Use a method to get_shown_groups (possibly more work to do (special group attribute))
-Show contact only if contact.ask, not according to modified xep 0162 logic. (I don't get neither the xep
meaning, neither this modified logic, can you explain steve-e ?)
-Remove contact before we modify it req_sub(). Else we can't remove it because iter is not found.
-When removing a contact and we let him in see us (observer), manually set show to offline, so he is not set as
visible.
-Remove observer from observer group if we asked him auth (I mean before he answer). Xep 0162 say he is not an
observer then. Fix contact staying in observer group when we get auth later.
-Renaming groups seems fixed (it's an accident :p )
More work on group to follow
* don't traceback when selfcontact is disconnecting
* make more use of "remove contact after last event removed" mechanism
* correctly redraw bigbrothers after status change
* handle situation where we receive a message, go offline without reading it and reconnect after another resource has moved the sending contact to another group.
know bugs: newly added transports added to "not in roster group"
* show correct expand icon for metacontacts in different groups
* only redraw parent when really necessary
* remove obscure code
* fix draw_parent_contact
Do not risk invalidating child_model iters when redrawing a contact.
Move logic to update the family when the big brother has changed to an extra function.
ToDo:
* nearby_family code duplication
* totaly restructure and cleanup draw_contact
-When creating self-contact contact instance, store it with group 'self_contact', so it never goes in General
-Make general group not be seen visible because of self contact even if self.regroup
-Remove the self contact instance itself too when WE deconnect or when IT deconnect, so we will
not see it as offline if refilling roster (regroup account for example)
Sorry, it just wasn't maintainable. The problem is the current libotr
API. I'm sick of working around the strange libotr API, sick of getting
HTML messages, sick of losing messages. The final argument for
completely removing it was that we can't get the message ID of a sent
msg anymore - which we need. I tried to work around this as well, but
there seems to be no way to wait for a signal in glib the way I would
need it for the workaround (I wanted to emit a signal in inject_message
and then wait for it after the call to otr_message_fragment_and_send
so the signal can pass us the message id). And the last reason is that
we're heading towards a new release and thus want to stabilize the code,
thus don't have time to work around even more libotr API strangeness.
I will give feedback to the libotr developers, who are currently
planning a new API, so that we can hopefully see OTR support once again
as soon as libotr4 is released.
Kjell already announced that he will continue his branch:
https://code.launchpad.net/~afflux/gajim/otr
I really hope the libotr devs will provide a sane API with libotr4 so
we can integrate OTR support again.
Oh, and I added one more try/except block for OS X.
This code seems not necessary. But why does that created that problem ?
It seems for some reason, path is not good. Probably the iter itself is not good. So expand act on the wrong
group (I can proove that).
* Moved one import in osx/__init__.py. If that import fails, we still
got the few functions defined we need, even if the rest of that file
doesn't work due to missing deps.
Someone completely broke it by trying to port it to native GTK.
However, that person didn't only break it with X11 GTK, with
native GTK it wasn't working correctly either.
Fixed it by adding lots of try/except blocks. Someone definitely
deserves to be slaughtered for completely breaking it on OS X…
TODO:
* Implement section 5.
* Think of a way to show in GUI
Possible way: Grey out the sent msg until we receive a <received/>,
but only if we know the other end supports XEP-0184.
* Maybe implement section 6?
disconnection or exit. Previous version seemed perfect, but if server don't have the
same exact time than us (always), lots of messages can be logged twice. Here we will
lost log for messages that were sent beetween we lost connection and we see it. But that
seems better for me. For previous version, see [9516].
* rename draw_roster to better express its functionality
* remove unnecessary call of refilter()
* directly remove groups when there is only one child left and we want to remove it
Note: in gtkTreeStore iters persist as long as the row isn't removed. Iters in Modelfilter persist as long as the model is unchanged.
-Stop using idle_call for marking days with log in calendar, because this was... longer !
-Stop emiting month changed signal two times (so it was even longer)
* update documentation and fix indentation
* don't remove offline contacts from roster when we open the last pending, non chat message event
* store account and jid per event
@bct: When moving the OTR stuff, you would've needed to adjust the
XHTML killing part. This patch fixes it. I didn't even notice since
I have XHTML disabled globally.