[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kopete-devel
Subject:    [kopete-devel] "patch"-proposal for kopetechatsession.cpp:
From:       Volker =?iso-8859-1?q?H=E4rtel?= <folkyvolk () gmx ! de>
Date:       2009-10-09 19:38:28
Message-ID: 200910092138.28255.folkyvolk () gmx ! de
[Download RAW message or body]

Hi,

I am writing a new IRC Plugin for Kopete. Until now, the chat-members list is 
not sorted. That is no fun for group chats.

I propose the following (tested by me) solution for kopetechatsession.cpp:

Add a new method to the private class KMMPrivate, which inserts contacts at 
the right position (feel free to optimize this):

	void addContact(Kopete::Contact *contact)
	{
		QMutableListIterator<Kopete::Contact *> it(mContactList);
		Kopete::Contact *c;
		bool inserted = false;
		while (it.hasNext())
		{
			c = it.next();
			//order by weight and then lexically
			if ((contact->onlineStatus().weight()>c->onlineStatus().weight())
				|| (contact->onlineStatus().weight()==c->onlineStatus().weight()
				&& contact->nickName().compare(c->nickName(),Qt::CaseInsensitive)<=0))
			{
				it.previous();
				it.insert(contact);
				inserted = true;
				break;
			}
		}
		if (!inserted)
			mContactList.append(contact);
	}

and replace the 2 occurences of d->mContactList.append(...) in 
Chatsession-Class by using this method.

I know that this is not the most efficient method for inserting, but in the 
other case I would have to use a better Collection-Structure like QMap for 
the members. Also no headers have to be modified.


Another problem: the "myself" contact is always on top in a chatsession-view. 
I don't like that behaviour. In an 2-person chat, it does not matter, but is 
there a reason why put it on top in a group chat? I added "myself" to the 
membersList in the Chatsession-Constructor (by using my new method), and 
modified the ChatMembersListModel-Implementation, so that it does no 
workaround anymore, that also beautifies it's code.


And a third problem: adding contacts to a chatsession with displayed view and 
many people is VERY slow, I think because of the "reset()"-Call in the 
ChatMembersListModel Implementation on every "addmember"-call.

I am not subscribed to this mailing list, but I really like to hear, if 
someone would care to submit my proposed changes. I already have an svn 
account. If I should submit by myself, please tell me, but I currently 
compile against 4.3.1.

best regards,
Volker
_______________________________________________
kopete-devel mailing list
kopete-devel@kde.org
https://mail.kde.org/mailman/listinfo/kopete-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic