Persistent chat rooms

Sadrul Habib Chowdhury imadil at
Sat Aug 25 08:42:31 EDT 2007

* Sean Egan had this to say on [23 Jul 2007, 11:39:50 -0700]:
> ... Pidgin will join the chat when it connects
> and stay in the chat as long as the setting is on. When you close the
> chat window, you will not leave the chat. Double-clicking the icon in
> the buddy list will merely re-show the window, with the full backlog
> and everything. You'll get alerted when someone says your name in the
> chat. We'll probably want at least one more blist icon to represent
> the different chat states. We'll also show the chat topic in the buddy
> list.

(I have snipped the bits not related to hiding a conversation)

I have committed some code in im.pidgin.sadrul.conv.persistent that can
help with hiding a conversation. The changes made are:

* Each conversation maintains its own message history in a hashtable.
 (this bit is in libpurple)

* The 'Conversation -> Hide' menu sets the uiops for the conversation to
  NULL, i.e., all UI-information about the conversation is destroyed.

* Whenever the user tries to show a hidden conversation (by
  double-clicking on the buddy list, for example), the gtk uiops for the
  conversation is set again. The complete UI-information is recreated
  from the message history.

* The message history is accessible via DBus. The dbus-gnt script (under
  libgnt/pygnt) utilizes this. So, for example, if you run pidgin, then
  start dbus-gnt at a later time, it will start with conversation
  windows with complete message history for the existing conversations.

A few more things I would like to add:

* Some kind of indication in the buddylist (color, format, emblem etc.)
  for buddies/chats with hidden conversation.

* Some way to bring up all the hidden conversations with no more than
  two clicks.

If the changes don't sound too bad (and don't feel too weird when you
use the branch -- yes, it compiles and everything!), I plan on merging
back with im.pidgin.pidgin.


More information about the Devel mailing list