filemanager/src/inc/fmfileiconprovider.cpp
changeset 25 b7bfdea70ca2
parent 16 ada7962b4308
child 33 328cf6fbe40c
--- a/filemanager/src/inc/fmfileiconprovider.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/inc/fmfileiconprovider.cpp	Fri Jun 25 17:08:34 2010 +0800
@@ -16,56 +16,171 @@
 */
 
 #include "fmfileiconprovider.h"
+#include "fmfiletyperecognizer.h"
 #include "fmutils.h"
 
 #include <QDir>
 #include <QFileInfo>
 
-#define mmcIcon         ":image/qgn_prop_mmc_memc.svg"
-#define mmcNoneIcon     ":image/qgn_prop_fmgr_mmc_no_sub.svg"
+#include "hbicon.h"
+
+//#define mmcIcon         ":image/qgn_prop_mmc_memc.svg"
+//#define mmcNoneIcon     ":image/qgn_prop_fmgr_mmc_no_sub.svg"
+//#define mmcLockedIcon   ":image/qgn_prop_mmc_locked.svg"
+//#define phoneMemoryIcon ":image/qgn_prop_phone_memc.svg"
+//#define usbMemoryIcon   ":image/qgn_prop_usb_memc.svg"
+//#define massMemoryIcon  ":image/qgn_prop_fmgr_ms.svg"
+
+#define phoneMemoryIcon "qtg_large_mobile"
+#define massMemoryIcon  "qtg_large_mass_storage"
+#define mmcIcon         "qtg_large_mmc"
+#define mmcNoneIcon     "qtg_large_mmc_removed"
+#define usbMemoryIcon   "qtg_large_usb_memory"
+
+//TODO: UI_Update: mmcl locked icon have not provided in icon spec
+// Just use orignal custom-defined icon
 #define mmcLockedIcon   ":image/qgn_prop_mmc_locked.svg"
-#define phoneMemoryIcon ":image/qgn_prop_phone_memc.svg"
-#define usbMemoryIcon   ":image/qgn_prop_usb_memc.svg"
-#define massMemoryIcon  ":image/qgn_prop_fmgr_ms.svg"
+
+
+#define folderIcon      "qtg_large_folder"
+
+#define imageIcon       "qtg_large_photos" 
+#define videoIcon       "qtg_large_video" 
+#define toneIcon        "qtg_large_tone"
+#define playlistIcon    "qtg_large_playlist" 
+#define textIcon        "qtg_large_text" 
+#define sisxIcon        "qtg_large_sisx" 
+#define javaIcon        "qtg_large_java" 
+#define flashIcon       "qtg_large_flash" 
+#define widgetIcon      "qtg_large_widget" 
+#define weblinkIcon     "qtg_large_web_link" 
+#define queryIcon       "qtg_large_query"
 
 FmFileIconProvider::FmFileIconProvider()
 {
-
+    mFileTypeRecognizer = new FmFileTypeRecognizer();
 }
 
 FmFileIconProvider::~FmFileIconProvider()
 {
+    delete mFileTypeRecognizer;
 }
-
+        
 QIcon FmFileIconProvider::icon(const QFileInfo &info) const
 {
-    QString filePath( info.path() );
-    if( FmUtils::isDrive( filePath ) ) {
-        FmDriverInfo::DriveState driveState = FmUtils::queryDriverInfo( filePath ).driveState();
-        if( driveState & FmDriverInfo::EDriveAvailable ){
-            if( driveState & FmDriverInfo::EDriveRemovable ) {
-                if( driveState & FmDriverInfo::EDriveMassStorage ) {
-                    // Mass Storage
-                    return QIcon( massMemoryIcon );
-                }
-                else{
-                    //Memory Card
-                    return QIcon( mmcIcon );
+    QIcon retIcon;
+    
+    QString filePath( info.absoluteFilePath() );
+    FmFileTypeRecognizer::FileType fileType = mFileTypeRecognizer->getType( filePath );
+    switch( fileType )
+        {
+        case FmFileTypeRecognizer::FileTypeDrive:
+            {
+            FmDriverInfo::DriveState driveState = FmUtils::queryDriverInfo( filePath ).driveState();
+            if( driveState & FmDriverInfo::EDriveAvailable ){
+                if( driveState & FmDriverInfo::EDriveRemovable ) {
+                    if( driveState & FmDriverInfo::EDriveMassStorage ) {
+                        // Mass Storage
+                        retIcon = HbIcon( massMemoryIcon ).qicon();
+                        break;
+                    } else if( driveState & FmDriverInfo::EDriveUsbMemory ) {
+                        // Usb Memory
+                        retIcon = HbIcon( usbMemoryIcon ).qicon();
+                        break;
+                    } else{
+                        //Memory Card
+                        retIcon = HbIcon( mmcIcon ).qicon();
+                        break;
+                    }
+                } else{
+                    //Phone Memory
+                    retIcon = HbIcon( phoneMemoryIcon ).qicon();
+                    break;
                 }
-            } else{
-                //Phone Memory
-                return QIcon( phoneMemoryIcon );
+            } else if( driveState & FmDriverInfo::EDriveLocked ) {
+                retIcon = HbIcon( mmcLockedIcon ).qicon();
+                break;
+            } else if( driveState & FmDriverInfo::EDriveCorrupted ) {
+                retIcon = HbIcon( mmcNoneIcon ).qicon();
+                break;
+            } else if( driveState & FmDriverInfo::EDriveNotPresent ){
+                retIcon = HbIcon( mmcNoneIcon ).qicon();
+                break;
+            } else {
+                retIcon = HbIcon( mmcNoneIcon ).qicon();
+                break;
+            }
+            }
+        case FmFileTypeRecognizer::FileTypeFolder:
+            {
+            retIcon = HbIcon( folderIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeImage:
+            {
+            retIcon = HbIcon( imageIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeVideo:
+            {
+            retIcon = HbIcon( videoIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeTone:
+            {
+            retIcon = HbIcon( toneIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypePlaylist:
+            {
+            retIcon = HbIcon( playlistIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeText:
+            {
+            retIcon = HbIcon( textIcon ).qicon();
+            break;
             }
-        } else if( driveState & FmDriverInfo::EDriveLocked ) {
-            return QIcon( mmcLockedIcon );
-        } else if( driveState & FmDriverInfo::EDriveCorrupted ) {
-            return QIcon( mmcNoneIcon );
-        } else if( driveState & FmDriverInfo::EDriveNotPresent ){
-            return QIcon( mmcNoneIcon );
-        } else {
-            return QIcon( mmcNoneIcon );
+        case FmFileTypeRecognizer::FileTypeSisx:
+            {
+            retIcon = HbIcon( sisxIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeJava:
+            {
+            retIcon = HbIcon( javaIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeFlash:
+            {
+            retIcon = HbIcon( flashIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeWidget:
+            {
+            retIcon = HbIcon( widgetIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeWebLink:
+            {
+            retIcon = HbIcon( weblinkIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeUnKnown:
+            {
+            // currently filemanger icon doc is not unified with icon name.
+            // for example, qtg_small_unknown  qtg_large_query both means for unknown type
+			// but the two icon name is not the same.
+            retIcon = HbIcon( queryIcon ).qicon();
+            break;
+            }
         }
-    } else {
-        return QFileIconProvider::icon( info );
+    
+    // if cannot get icon, return icon from QFileIconProvider
+    // this will be mostly used in win32 platform,
+    // because path for HbIcon only existed in hb theme of symbian 
+    if( retIcon.isNull() ) {
+        retIcon = QFileIconProvider::icon( info );
     }
+    return retIcon;
 }