diff -r ada7962b4308 -r b7bfdea70ca2 filemanager/src/inc/fmfileiconprovider.cpp --- 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 #include -#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; }