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

List:       kde-commits
Subject:    KDE/kdepim/libkleo/ui
From:       Volker Krause <vkrause () kde ! org>
Date:       2010-02-12 14:08:55
Message-ID: 1265983735.487144.27160.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1089135 by vkrause:

Q3ListView -> QTreeWidget


 M  +99 -82    dnattributeorderconfigwidget.cpp  
 M  +4 -4      dnattributeorderconfigwidget.h  


--- trunk/KDE/kdepim/libkleo/ui/dnattributeorderconfigwidget.cpp #1089134:1089135
@@ -2,7 +2,7 @@
     dnattributeorderconfigwidget.cpp
 
     This file is part of libkleopatra, the KDE keymanagement library
-    Copyright (c) 2004 Klar�vdalens Datakonsult AB
+    Copyright (c) 2004 Klarävdalens Datakonsult AB
 
     Libkleopatra is free software; you can redistribute it and/or
     modify it under the terms of the GNU General Public License as
@@ -45,8 +45,8 @@
 #include <QLayout>
 #include <QLabel>
 
-#include <q3listview.h>
-#include <q3header.h>
+#include <QTreeWidget>
+#include <QHeaderView>
 
 #include <cassert>
 
@@ -54,21 +54,19 @@
 public:
   enum { UUp=0, Up=1, Left=2, Right=3, Down=4, DDown=5 };
 
-  Q3ListView * availableLV;
-  Q3ListView * currentLV;
+  QTreeWidget * availableLV;
+  QTreeWidget* currentLV;
   QToolButton * navTB[6];
 
-  Q3ListViewItem * placeHolderItem;
+  QTreeWidgetItem * placeHolderItem;
 
   Kleo::DNAttributeMapper * mapper;
 };
 
-static void prepare( Q3ListView * lv ) {
+static void prepare( QTreeWidget * lv ) {
   lv->setAllColumnsShowFocus( true );
-  lv->setResizeMode( Q3ListView::LastColumn );
-  lv->header()->setClickEnabled( false );
-  lv->addColumn( QString() );
-  lv->addColumn( i18n("Description") );
+  lv->header()->setStretchLastSection( true );
+  lv->setHeaderLabels( QStringList() << QString() << i18n("Description") );
 }
 
 Kleo::DNAttributeOrderConfigWidget::DNAttributeOrderConfigWidget( DNAttributeMapper \
* mapper, QWidget * parent, Qt::WindowFlags f ) @@ -93,22 +91,23 @@
   ++row;
   glay->setRowStretch( row, 1 );
 
-  d->availableLV = new Q3ListView( this );
+  d->availableLV = new QTreeWidget( this );
   prepare( d->availableLV );
-  d->availableLV->setSorting( 0 );
+  d->availableLV->sortItems( 0, Qt::AscendingOrder );
   glay->addWidget( d->availableLV, row, 0 );
 
-  d->currentLV = new Q3ListView( this );
+  d->currentLV = new QTreeWidget( this );
   prepare( d->currentLV );
-  d->currentLV->setSorting( -1 );
   glay->addWidget( d->currentLV, row, 2 );
 
-  connect( d->availableLV, SIGNAL(clicked(Q3ListViewItem*)),
-	   SLOT(slotAvailableSelectionChanged(Q3ListViewItem*)) );
-  connect( d->currentLV, SIGNAL(clicked(Q3ListViewItem*)),
-	   SLOT(slotCurrentOrderSelectionChanged(Q3ListViewItem*)) );
+  connect( d->availableLV, SIGNAL(itemClicked(QTreeWidgetItem*,int)),
+           SLOT(slotAvailableSelectionChanged(QTreeWidgetItem*)) );
+  connect( d->currentLV, SIGNAL(itemClicked(QTreeWidgetItem*,int)),
+           SLOT(slotCurrentOrderSelectionChanged(QTreeWidgetItem*)) );
 
-  d->placeHolderItem = new Q3ListViewItem( d->availableLV, "_X_", i18n("All others") \
); +  d->placeHolderItem = new QTreeWidgetItem( d->availableLV );
+  d->placeHolderItem->setText( 0, "_X_" );
+  d->placeHolderItem->setText( 1, i18n("All others") );
 
   // the up/down/left/right arrow cross:
 
@@ -157,38 +156,44 @@
   const QStringList order = d->mapper->attributeOrder();
 
   // fill the RHS listview:
-  Q3ListViewItem * last = 0;
+  QTreeWidgetItem* last = 0;
   for ( QStringList::const_iterator it = order.begin() ; it != order.end() ; ++it ) \
{  const QString attr = (*it).toUpper();
     if ( attr == "_X_" ) {
       takePlaceHolderItem();
-      d->currentLV->insertItem( d->placeHolderItem );
-      d->placeHolderItem->moveItem( last );
+      d->currentLV->insertTopLevelItem( d->currentLV->topLevelItemCount(), \
d->placeHolderItem );  last = d->placeHolderItem;
-    } else
-      last = new Q3ListViewItem( d->currentLV, last, attr, d->mapper->name2label( \
attr ) ); +    } else {
+      last = new QTreeWidgetItem( d->currentLV, last );
+      last->setText( 0, attr );
+      last->setText( 1, d->mapper->name2label( attr ) );
+    }
   }
 
   // fill the LHS listview with what's left:
 
   const QStringList all = Kleo::DNAttributeMapper::instance()->names();
-  for ( QStringList::const_iterator it = all.begin() ; it != all.end() ; ++it )
-    if ( !order.contains( *it )  )
-      (void)new Q3ListViewItem( d->availableLV, *it, d->mapper->name2label( *it ) );
+  for ( QStringList::const_iterator it = all.begin() ; it != all.end() ; ++it ) {
+    if ( !order.contains( *it )  ) {
+      QTreeWidgetItem *item = new QTreeWidgetItem( d->availableLV );
+      item->setText( 0, *it );
+      item->setText( 1, d->mapper->name2label( *it ) );
+    }
+  }
 
-  if ( !d->placeHolderItem->listView() )
-    d->availableLV->insertItem( d->placeHolderItem );
+  if ( !d->placeHolderItem->treeWidget() )
+    d->availableLV->addTopLevelItem( d->placeHolderItem );
 }
 
 void Kleo::DNAttributeOrderConfigWidget::takePlaceHolderItem() {
-  if ( Q3ListView * lv = d->placeHolderItem->listView() )
-    lv->takeItem( d->placeHolderItem );
+  if ( QTreeWidget* lv = d->placeHolderItem->treeWidget() )
+    lv->takeTopLevelItem( lv->indexOfTopLevelItem( d->placeHolderItem ) );
 }
 
 void Kleo::DNAttributeOrderConfigWidget::save() const {
   QStringList order;
-  for ( Q3ListViewItemIterator it( d->currentLV ) ; it.current() ; ++it )
-    order.push_back( it.current()->text( 0 ) );
+  for ( QTreeWidgetItemIterator it( d->currentLV ) ; (*it) ; ++it )
+    order.push_back( (*it)->text( 0 ) );
 
   d->mapper->setAttributeOrder( order );
 }
@@ -199,106 +204,118 @@
 
 
 
-void Kleo::DNAttributeOrderConfigWidget::slotAvailableSelectionChanged( \
Q3ListViewItem * item ) { +void \
Kleo::DNAttributeOrderConfigWidget::slotAvailableSelectionChanged( QTreeWidgetItem * \
item ) {  d->navTB[Private::Right]->setEnabled( item );
 }
 
-void Kleo::DNAttributeOrderConfigWidget::slotCurrentOrderSelectionChanged( \
Q3ListViewItem * item ) { +void \
Kleo::DNAttributeOrderConfigWidget::slotCurrentOrderSelectionChanged( QTreeWidgetItem \
* item ) {  enableDisableButtons( item );
 }
 
-void Kleo::DNAttributeOrderConfigWidget::enableDisableButtons( Q3ListViewItem * item \
                ) {
-  d->navTB[Private::UUp  ]->setEnabled( item && item->itemAbove() );
-  d->navTB[Private::Up   ]->setEnabled( item && item->itemAbove() );
+void Kleo::DNAttributeOrderConfigWidget::enableDisableButtons( QTreeWidgetItem * \
item ) { +  d->navTB[Private::UUp  ]->setEnabled( item && d->currentLV->itemAbove( \
item ) ); +  d->navTB[Private::Up   ]->setEnabled( item && d->currentLV->itemAbove( \
item ) );  d->navTB[Private::Left ]->setEnabled( item );
-  d->navTB[Private::Down ]->setEnabled( item && item->itemBelow() );
-  d->navTB[Private::DDown]->setEnabled( item && item->itemBelow() );
+  d->navTB[Private::Down ]->setEnabled( item && d->currentLV->itemBelow( item ) );
+  d->navTB[Private::DDown]->setEnabled( item && d->currentLV->itemBelow( item ) );
 }
 
 void Kleo::DNAttributeOrderConfigWidget::slotUpButtonClicked() {
-  Q3ListViewItem * item = d->currentLV->selectedItem();
-  if ( !item )
+  if ( d->currentLV->selectedItems().size() <= 0 )
     return;
-  Q3ListViewItem * above = item->itemAbove();
-  if ( !above )
+  QTreeWidgetItem * item = d->currentLV->selectedItems().first();
+  int itemIndex = d->currentLV->indexOfTopLevelItem( item );
+  if ( itemIndex <= 0 )
     return;
-  above->moveItem( item ); // moves "above" to after "item", ie. "item" one up
+  d->currentLV->takeTopLevelItem( itemIndex );
+  d->currentLV->insertTopLevelItem( itemIndex - 1, item );
+  d->currentLV->clearSelection();
+  item->setSelected( true );
   enableDisableButtons( item );
   emit changed();
 }
 
 void Kleo::DNAttributeOrderConfigWidget::slotDoubleUpButtonClicked() {
-  Q3ListViewItem * item = d->currentLV->selectedItem();
-  if ( !item )
+  if ( d->currentLV->selectedItems().size() <= 0 )
     return;
-  if ( item == d->currentLV->firstChild() )
+  QTreeWidgetItem * item = d->currentLV->selectedItems().first();
+  int itemIndex = d->currentLV->indexOfTopLevelItem( item );
+  if ( itemIndex == 0 )
     return;
-  d->currentLV->takeItem( item );
-  d->currentLV->insertItem( item );
-  d->currentLV->setSelected( item, true );
+  d->currentLV->takeTopLevelItem( itemIndex );
+  d->currentLV->insertTopLevelItem( 0, item );
+  d->currentLV->clearSelection();
+  item->setSelected( true );
   enableDisableButtons( item );
   emit changed();
 }
 
 void Kleo::DNAttributeOrderConfigWidget::slotDownButtonClicked() {
-  Q3ListViewItem * item = d->currentLV->selectedItem();
-  if ( !item )
+  if ( d->currentLV->selectedItems().size() <= 0 )
     return;
-  Q3ListViewItem * below = item->itemBelow();
-  if ( !below )
+  QTreeWidgetItem * item = d->currentLV->selectedItems().first();
+  int itemIndex = d->currentLV->indexOfTopLevelItem( item );
+  if ( itemIndex + 1 >= d->currentLV->topLevelItemCount() )
     return;
-  item->moveItem( below ); // moves "item" to after "below", ie. "item" one down
+  d->currentLV->takeTopLevelItem( itemIndex );
+  d->currentLV->insertTopLevelItem( itemIndex + 1, item );
+  d->currentLV->clearSelection();
+  item->setSelected( true );
   enableDisableButtons( item );
   emit changed();
 }
 
 void Kleo::DNAttributeOrderConfigWidget::slotDoubleDownButtonClicked() {
-  Q3ListViewItem * item = d->currentLV->selectedItem();
-  if ( !item )
+  if ( d->currentLV->selectedItems().size() <= 0 )
     return;
-  Q3ListViewItem * last = d->currentLV->lastItem();
-  assert( last );
-  if ( item == last )
+  QTreeWidgetItem * item = d->currentLV->selectedItems().first();
+  const int itemIndex = d->currentLV->indexOfTopLevelItem( item );
+  if ( itemIndex + 1 >= d->currentLV->topLevelItemCount() )
     return;
-  item->moveItem( last ); // moves "item" to after "last", ie. to the bottom
+  d->currentLV->takeTopLevelItem( itemIndex );
+  d->currentLV->addTopLevelItem( item );
+  d->currentLV->clearSelection();
+  item->setSelected( true );
   enableDisableButtons( item );
   emit changed();
 }
 
 void Kleo::DNAttributeOrderConfigWidget::slotLeftButtonClicked() {
-  Q3ListViewItem * right = d->currentLV->selectedItem();
-  if ( !right )
+  if ( d->currentLV->selectedItems().size() <= 0 )
     return;
-  Q3ListViewItem * next = right->itemBelow();
+  QTreeWidgetItem * right = d->currentLV->selectedItems().first();
+  QTreeWidgetItem * next = d->currentLV->itemBelow( right );
   if ( !next )
-    next = right->itemAbove();
-  d->currentLV->takeItem( right );
-  d->availableLV->insertItem( right );
+    next = d->currentLV->itemAbove( right );
+  d->currentLV->takeTopLevelItem( d->currentLV->indexOfTopLevelItem( right ) );
+  d->availableLV->addTopLevelItem( right );
+  d->availableLV->sortItems( 0, Qt::AscendingOrder );
   if ( next )
-    d->currentLV->setSelected( next, true );
+    next->setSelected( true );
   enableDisableButtons( next );
   emit changed();
 }
 
 void Kleo::DNAttributeOrderConfigWidget::slotRightButtonClicked() {
-  Q3ListViewItem * left = d->availableLV->selectedItem();
-  if ( !left )
+  if ( d->availableLV->selectedItems().size() <= 0 )
     return;
-  Q3ListViewItem * next = left->itemBelow();
+  QTreeWidgetItem * left = d->availableLV->selectedItems().first();
+  QTreeWidgetItem* next = d->availableLV->itemBelow( left );
   if ( !next )
-    next = left->itemAbove();
-  d->availableLV->takeItem( left );
-  d->currentLV->insertItem( left );
-  if ( Q3ListViewItem * right = d->currentLV->selectedItem() ) {
-    if ( Q3ListViewItem * above = right->itemAbove() )
-      left->moveItem( above ); // move new item immediately before old selected
-    d->currentLV->setSelected( right, false );
+    next = d->availableLV->itemAbove( left );
+  d->availableLV->takeTopLevelItem( d->availableLV->indexOfTopLevelItem( left ) );
+  int newRightIndex = d->currentLV->topLevelItemCount();
+  if ( d->currentLV->selectedItems().size() > 0 ) {
+    QTreeWidgetItem * right = d->currentLV->selectedItems().first();
+    newRightIndex = d->currentLV->indexOfTopLevelItem( right );
+    right->setSelected( false );
   }
-  d->currentLV->setSelected( left, true );
+  d->currentLV->insertTopLevelItem( newRightIndex, left );
+  left->setSelected( true );
   enableDisableButtons( left );
   d->navTB[Private::Right]->setEnabled( next );
   if ( next )
-    d->availableLV->setSelected( next, true );
+    next->setSelected( true );
   emit changed();
 }
 
--- trunk/KDE/kdepim/libkleo/ui/dnattributeorderconfigwidget.h #1089134:1089135
@@ -41,7 +41,7 @@
   class DNAttributeMapper;
 }
 
-class Q3ListViewItem;
+class QTreeWidgetItem;
 
 namespace Kleo {
 
@@ -64,8 +64,8 @@
     //
 
   private Q_SLOTS:
-    void slotAvailableSelectionChanged( Q3ListViewItem * );
-    void slotCurrentOrderSelectionChanged( Q3ListViewItem * );
+    void slotAvailableSelectionChanged( QTreeWidgetItem * );
+    void slotCurrentOrderSelectionChanged( QTreeWidgetItem * );
     void slotDoubleUpButtonClicked();
     void slotUpButtonClicked();
     void slotDownButtonClicked();
@@ -75,7 +75,7 @@
 
   private:
     void takePlaceHolderItem();
-    void enableDisableButtons( Q3ListViewItem * );
+    void enableDisableButtons( QTreeWidgetItem * );
 
   private:
     class Private;


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

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