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

List:       kde-commits
Subject:    kdenonbeta/karchiver
From:       Eric Coquelle <eric.coquelle () gmail ! com>
Date:       2006-09-22 8:33:52
Message-ID: 1158914032.320083.9564.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 587308 by coquelle:

Improved the AddFilesToArchive dialog: now mime-icons are displayed for files


 M  +56 -36    dirview.cpp  
 M  +4 -1      dirview.h  


--- trunk/kdenonbeta/karchiver/dirview.cpp #587307:587308
@@ -15,6 +15,8 @@
 #include <qfile.h>
 #include <qfileinfo.h>
 #include <kiconloader.h>
+#include <kmimetype.h>
+#include <kfileitem.h>
 
 Directory::Directory( Directory * parent, QString filename, QString image, bool voirfich )
     : QListViewItem( parent ), f(filename ), im(image)
@@ -23,10 +25,10 @@
   m_selected=false;
   p = parent;
   fichiers=voirfich;
-	if(strcmp(image,"folder")==0)
-		setPixmap(0,icon.loadIcon("folder",KIcon::Small, 16));
-	else
-		setPixmap(0,icon.loadIcon("folder_open",KIcon::Small, 16));
+  if(strcmp(image,"folder")==0)
+          setPixmap(0,icon.loadIcon("folder",KIcon::Small, 16));
+  else
+          setPixmap(0,icon.loadIcon("folder_open",KIcon::Small, 16));
 }
 
 
@@ -43,43 +45,61 @@
 	fichiers=fich;
 }
 
+void Directory::setIcon(QString name, QListViewItem* element)
+{
+  mode_t permissions=0;
+  KMimeType::Ptr mimeType = KMimeType::findByPath( name, permissions, true );
+  if(mimeType != KMimeType::findByPath( "/", 0, true ) )
+    element->setPixmap( 0, mimeType->pixmap( KIcon::Small ) );
+  else
+  {
+    KFileItem item(KFileItem::Unknown, KFileItem::Unknown, KURL("file:/"+name));
+    element->setPixmap(0,item.pixmap(KIcon::DefaultState));
+  }
+}
+
 void Directory::setOpen( bool o )
 {
-  if ( o && !childCount() ) {
-		QString s( fullName() );
-		QDir thisDir( s );
-		if ( !thisDir.isReadable() ) {
-	    readable = FALSE;
-	    return;
-		}
+  if ( o && !childCount() )
+  {
+    QString s( fullName() );
+    QDir thisDir( s );
+    if ( !thisDir.isReadable() )
+    {
+      readable = FALSE;
+      return;
+    }
 
-	const QFileInfoList * files = thisDir.entryInfoList();
-	if ( files ) {
-	    QFileInfoListIterator it( *files );
-	    QFileInfo * f;
-	    KIconLoader icon;
+    const QFileInfoList * files = thisDir.entryInfoList();
+    if ( files )
+    {
+        QFileInfoListIterator it( *files );
+        QFileInfo * f;
+        KIconLoader icon;
 
-			QString dossier="folder";
-			QString dossierOuvert="folder_open";
- 	    while( (f=it.current()) != 0 ) {
-    		++it;
-    		if ( f->fileName() == "." || f->fileName() == ".." )
-    		    ; // nothing
-    		/*else if ( f->isSymLink() )
-    		    new QListViewItem( this, (const char *)f->fileName(),
-    				       "Symbolic Link", 0 );*/
-    		else if (( f->isDir() )&& f->isReadable())
-    			{
-			  new Directory( this, f->fileName(), dossier, fichiers);
-			  setPixmap(0,icon.loadIcon("folder_open",KIcon::Small, 16));
-    			}
-    		else if(fichiers)
-		  new QListViewItem( this, f->fileName(),
-				     f->isFile() ? "File" : "Special", 0 );
-   	    }
-	}
+        while( (f=it.current()) != 0 )
+        {
+            ++it;
+            if ( f->fileName() == "." || f->fileName() == ".." )
+                ; // nothing
+            /*else if ( f->isSymLink() )
+                new QListViewItem( this, (const char *)f->fileName(),
+                                    "Symbolic Link", 0 );*/
+            else if (( f->isDir() )&& f->isReadable())
+            {
+              new Directory( this, f->fileName(), "folder", fichiers);
+              setPixmap(0,icon.loadIcon("folder_open",KIcon::Small, 16));
+            }
+            else if(fichiers)
+            {
+              QListViewItem* element=new QListViewItem( this, f->fileName(),
+                                  f->isFile() ? "File" : "Special", 0 );
+              setIcon(f->fileName(), element);
+            }
+        }
     }
-    QListViewItem::setOpen( o );
+  }
+  QListViewItem::setOpen( o );
 }
 
 
--- trunk/kdenonbeta/karchiver/dirview.h #587307:587308
@@ -32,8 +32,11 @@
     void setOpen( bool );
     void setup();
     void setDisplayFiles(bool);
-    
+
 private:
+  void setIcon(QString name, QListViewItem* elementListe);
+  
+private:
    QFile f;
 	QPixmap im;
 	QListViewItem *lv;
[prev in list] [next in list] [prev in thread] [next in thread] 

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