Version: (using KDE Devel) Installed from: Compiled sources Renaming a group brings up a nice window prompting for the new name. Works well and I have no complaints. Renaming a contact tries to rename it inline. This is currently broken in CVS in the sense that Enter does not save the change but opens a single-shot chatwindow (opposite of setting) with weird colors. Clicking on some other area of the window does cause the change to be saved. Also, with a focus-follows mouse setting, it's nearly unusable. Because generally one keeps the contact list at a narrow width, they must move the mouse outside of the window (or it is condusive to do so, if not a requirement) to select the Rename option from the RMB menu. But when the option is clicked, the window immediately loses focus, and so the action is cancelled before you can make a change. These two renaming functions need to be consistant. I vote strongly for the former method.
Then i think both two should act like renaming a contact (but correctly of course) Even, i think we shouldn't hack AT ALL this, to allow the user to rename contact like they rename a file in konqueror. If i remember correctly, Duncan didn't like this way, that's why it is not the case anymore (the fact that clicking on a item which already have the focus make the rename action start) But i think KListView has been fixed since that.
Subject: Re: [Kopete-devel] Renaming a contact should work like renaming a group On Saturday 27 December 2003 21:32, Olivier Goffart wrote: > Then i think both two should act like renaming a contact > (but correctly of course) Yes, me too. Casey, when I fixed some bugs in the inline renaming I made the code mostly equivalent to what Konqueror does. Doesn't the same bug occur there too?
Olivier, Konqueror works fine. #1, I can press enter and the rename is saved. #2, I can defocus and refocus the window, and Konqueror is still awaiting my renaming. If Kopete works the same as Konqueror without the bugs, that's a fine solution.
The inline renaming works fine for me with recent KDE CVS and Kopete HEAD. Would anyone object to the group rename being switched to an inline rename?
no, please switch it if you have time. :)
Working on it...
CVS commit by lilachaze: Rename groups inline. Need to undo a string change before I can backport... CCMAIL: 71321@bugs.kde.org M +4 -20 kopetecontactlistview.cpp 1.72 M +5 -3 kopetegroupviewitem.cpp 1.15 --- kdenetwork/kopete/kopete/contactlist/kopetecontactlistview.cpp #1.71:1.72 @@ -1461,5 +1461,5 @@ void KopeteContactListView::updateAction else if(groups.count() == 1 && contacts.isEmpty()) { - actionRename->setText(i18n("Rename Group...")); + actionRename->setText(i18n("Rename Group")); actionRemove->setText(i18n("Remove Group")); actionRename->setEnabled(true); @@ -1669,30 +1669,14 @@ void KopeteContactListView::slotRemove() void KopeteContactListView::slotRename() { - KopeteMetaContactLVI *metaLVI = dynamic_cast<KopeteMetaContactLVI *>( currentItem() ); - if ( metaLVI ) + if ( KopeteMetaContactLVI *metaLVI = dynamic_cast<KopeteMetaContactLVI *>( currentItem() ) ) { metaLVI->slotRename(); } - else if ( KopeteContactList::contactList()->selectedGroups().count() == 1 ) + else if ( KopeteGroupViewItem *groupLVI = dynamic_cast<KopeteGroupViewItem *>( currentItem() ) ) { - // Not a meta contact, so rename the group instead - // FIXME: Shouldn't this be moved to a method KopeteGroupLVI::rename()? - Martijn if ( !KopetePrefs::prefs()->sortByGroup() ) return; - KopeteGroup *group = KopeteContactList::contactList()->selectedGroups().first(); - - bool ok; -#if KDE_IS_VERSION( 3, 1, 90 ) - QString newname = KInputDialog::getText -#else - QString newname = KLineEditDlg::getText -#endif - ( i18n( "Rename Group" ), i18n( "Please enter the new name for group '%1':" ).arg( group->displayName() ), - group->displayName(), &ok ); - - if ( !ok ) - return; - group->setDisplayName( newname ); + groupLVI->startRename( 0 ); } } --- kdenetwork/kopete/kopete/contactlist/kopetegroupviewitem.cpp #1.14:1.15 @@ -99,6 +99,6 @@ void KopeteGroupViewItem::refreshDisplay } - newText += " (" + QString::number( onlineMemberCount ) + "/" + QString::number( totalMemberCount ) + ")"; m_renameText = newText; + newText += " (" + QString::number( onlineMemberCount ) + "/" + QString::number( totalMemberCount ) + ")"; //kdDebug( 14000 ) << k_funcinfo << "newText='" << newText << "', old text= " << text( 0 ) << endl; @@ -128,7 +128,9 @@ void KopeteGroupViewItem::startRename( i { kdDebug(14000) << k_funcinfo << endl; + if ( col != 0 ) return; refreshDisplayName(); setText( 0, m_renameText ); - QListViewItem::startRename(col); + setRenameEnabled( 0, true ); + QListViewItem::startRename( 0 ); }
CVS commit by lilachaze: Rename groups inline. CCMAIL: 71321-done@bugs.kde.org M +3 -19 kopetecontactlistview.cpp 1.63.2.2 M +5 -3 kopetegroupviewitem.cpp 1.13.2.1 --- kdenetwork/kopete/kopete/contactlist/kopetecontactlistview.cpp #1.63.2.1:1.63.2.2 @@ -1623,30 +1623,14 @@ void KopeteContactListView::slotRemove() void KopeteContactListView::slotRename() { - KopeteMetaContactLVI *metaLVI = dynamic_cast<KopeteMetaContactLVI *>( currentItem() ); - if ( metaLVI ) + if ( KopeteMetaContactLVI *metaLVI = dynamic_cast<KopeteMetaContactLVI *>( currentItem() ) ) { metaLVI->slotRename(); } - else if ( KopeteContactList::contactList()->selectedGroups().count() == 1 ) + else if ( KopeteGroupViewItem *groupLVI = dynamic_cast<KopeteGroupViewItem *>( currentItem() ) ) { - // Not a meta contact, so rename the group instead - // FIXME: Shouldn't this be moved to a method KopeteGroupLVI::rename()? - Martijn if ( !KopetePrefs::prefs()->sortByGroup() ) return; - KopeteGroup *group = KopeteContactList::contactList()->selectedGroups().first(); - - bool ok; -#if KDE_IS_VERSION( 3, 1, 90 ) - QString newname = KInputDialog::getText -#else - QString newname = KLineEditDlg::getText -#endif - ( i18n( "Rename Group" ), i18n( "Please enter the new name for group '%1':" ).arg( group->displayName() ), - group->displayName(), &ok ); - - if ( !ok ) - return; - group->setDisplayName( newname ); + groupLVI->startRename( 0 ); } } --- kdenetwork/kopete/kopete/contactlist/kopetegroupviewitem.cpp #1.13:1.13.2.1 @@ -99,6 +99,6 @@ void KopeteGroupViewItem::refreshDisplay } - newText += " (" + QString::number( onlineMemberCount ) + "/" + QString::number( totalMemberCount ) + ")"; m_renameText = newText; + newText += " (" + QString::number( onlineMemberCount ) + "/" + QString::number( totalMemberCount ) + ")"; //kdDebug( 14000 ) << k_funcinfo << "newText='" << newText << "', old text= " << text( 0 ) << endl; @@ -128,7 +128,9 @@ void KopeteGroupViewItem::startRename( i { kdDebug(14000) << k_funcinfo << endl; + if ( col != 0 ) return; refreshDisplayName(); setText( 0, m_renameText ); - QListViewItem::startRename(col); + setRenameEnabled( 0, true ); + QListViewItem::startRename( 0 ); }