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

List:       kde-commits
Subject:    kdebase/konqueror/listview
From:       David Faure <faure () kde ! org>
Date:       2004-12-20 0:31:34
Message-ID: 20041220003134.988CB1B915 () office ! kde ! org
[Download RAW message or body]

CVS commit by faure: 

Fixed sorting by deletion date


  M +44 -23    konq_listviewitems.cc   1.71


--- kdebase/konqueror/listview/konq_listviewitems.cc  #1.70:1.71
@@ -28,4 +28,25 @@
 #include <kiconloader.h>
 
+static QString retrieveExtraEntry( KFileItem* fileitem, int numExtra )
+{
+    /// ######## SLOOOOW
+    KIO::UDSEntry::ConstIterator it = fileitem->entry().begin();
+    const KIO::UDSEntry::ConstIterator end = fileitem->entry().end();
+    int n = 0;
+    for( ; it != end; ++it )
+    {
+        if ((*it).m_uds == KIO::UDS_EXTRA)
+        {
+            ++n;
+            if ( n == numExtra )
+            {
+                return (*it).m_str;
+            }
+        }
+    }
+    return QString::null;
+}
+
+
 /**************************************************************
  *
@@ -114,17 +135,8 @@ void KonqListViewItem::updateContents()
          case KIO::UDS_EXTRA:
          {
-             // extraData[numExtra]
-             /// ######## SLOOOOW
-             KIO::UDSEntry::ConstIterator it = m_fileitem->entry().begin();
-             int n = 0;
-             for( ; it != m_fileitem->entry().end(); it++ ) {
-                 if ((*it).m_uds == KIO::UDS_EXTRA)
-                 {
-                     ++n;
-                     if ( n == numExtra )
-                     {
+             const QString entryStr = retrieveExtraEntry( m_fileitem, numExtra );
                          if ( tmpColumn->type == QVariant::DateTime )
                          {
-                             QDateTime dt = QDateTime::fromString( (*it).m_str, Qt::ISODate );
+                 QDateTime dt = QDateTime::fromString( entryStr, Qt::ISODate );
                              setText(tmpColumn->displayInColumn,
                                      KGlobal::locale()->formatDate(dt.date(),TRUE)+" "+
@@ -132,11 +144,7 @@ void KonqListViewItem::updateContents()
                          }
                          else // if ( tmpColumn->type == QVariant::String )
-                             setText(tmpColumn->displayInColumn, (*it).m_str);
-                         break;
-                     }
-                 }
-             }
-
+                 setText(tmpColumn->displayInColumn, entryStr);
              ++numExtra;
+             break;
          }
          default:
@@ -234,7 +242,10 @@ int KonqBaseListViewItem::compare( QList
       return !ascending ? k->sortChar - sortChar : sortChar - k->sortChar;
 
+   int numExtra = 0;
    for ( unsigned int i=0; i<m_pListViewWidget->NumberOfAtoms; i++ )
    {
       ColumnInfo *cInfo = &m_pListViewWidget->columnConfigInfo()[i];
+      if ( cInfo->udsId == KIO::UDS_EXTRA )
+          ++numExtra;
       if ( col == cInfo->displayInColumn )
       {
@@ -255,4 +266,14 @@ int KonqBaseListViewItem::compare( QList
                 return ( s1 > s2 ) ? 1 : ( s1 < s2 ) ? -1 : 0;
             }
+            case KIO::UDS_EXTRA:
+            {
+                if ( cInfo->type & QVariant::DateTime ) {
+                    const QString entryStr1 = retrieveExtraEntry( m_fileitem, numExtra );
+                    QDateTime dt1 = QDateTime::fromString( entryStr1, Qt::ISODate );
+                    const QString entryStr2 = retrieveExtraEntry( k->m_fileitem, numExtra );
+                    QDateTime dt2 = QDateTime::fromString( entryStr2, Qt::ISODate );
+                    return ( dt1 > dt2 ) ? 1 : ( dt1 < dt2 ) ? -1 : 0;
+                }
+            }
             default:
                 break;


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

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