filemanager/src/inc/fmfileiconprovider.cpp
branchRCL_3
changeset 20 491b3ed49290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/inc/fmfileiconprovider.cpp	Tue Aug 31 15:06:05 2010 +0300
@@ -0,0 +1,174 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: filemanager file icon provider source file 
+*
+*/
+
+#include "fmfileiconprovider.h"
+#include "fmfiletyperecognizer.h"
+#include "fmutils.h"
+
+#include <QDir>
+#include <QFileInfo>
+
+#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 original custom-defined icon
+#define mmcLockedIcon   ":image/qgn_prop_mmc_locked.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
+{
+    QIcon retIcon;
+    
+    QString filePath( info.absoluteFilePath() );
+    FmFileTypeRecognizer::FileType fileType = mFileTypeRecognizer->getType( filePath );
+    switch( fileType )
+        {
+        case FmFileTypeRecognizer::FileTypeDrive:
+            {
+            FmDriverInfo driveInfo = FmUtils::queryDriverInfo( filePath );
+            switch ( driveInfo.driveType() )
+                {
+                case FmDriverInfo::EDriveTypeMassStorage:
+                    retIcon = HbIcon( massMemoryIcon ).qicon();
+                    break;
+                case FmDriverInfo::EDriveTypeUsbMemory:
+                    retIcon = HbIcon( usbMemoryIcon ).qicon();
+                    break;
+                case FmDriverInfo::EDriveTypeMemoryCard:
+                    if( !( driveInfo.driveState() & FmDriverInfo::EDriveNotPresent ) ) {
+                        retIcon = HbIcon( mmcIcon ).qicon();
+                    } else {
+                        retIcon = HbIcon( mmcNoneIcon ).qicon();    
+                    }
+                    break;
+                case FmDriverInfo::EDriveTypePhoneMemory:
+                    retIcon = HbIcon( phoneMemoryIcon ).qicon();
+                    break;
+                case FmDriverInfo::EDriveTypeNotExist: // drive not exist, let QFileIconProvider to judge icon
+                default:  // filemanger do not provide icon for other drive types, let QFileIconProvider to judge icon
+                    break;
+               }
+            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;
+            }
+        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;
+            }
+        }
+    
+    // if cannot get icon, return icon from QFileIconProvider
+    if( retIcon.isNull() ) {
+        retIcon = QFileIconProvider::icon( info );
+    }
+    return retIcon;
+}