filemanager/src/filemanager/src/components/fmviewdetailsdialog.cpp
changeset 14 1957042d8c7e
child 16 ada7962b4308
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/filemanager/src/components/fmviewdetailsdialog.cpp	Fri Apr 16 14:53:38 2010 +0300
@@ -0,0 +1,469 @@
+/*
+ * 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:
+ *     The source file of view details dialog of file manager
+ */
+
+#include "fmviewdetailsdialog.h"
+#include "fmutils.h"
+#include "fmviewdetailsitem.h"
+#include "fmdatalistmodel.h"
+#include "fmdrivedetailstype.h"
+
+#include <QDirModel>
+#include <QFileInfo>
+#include <QDateTime>
+
+#include <hblabel.h>
+#include <hblistview.h>
+#include <hbaction.h>
+
+FmViewDetailsDialog::FmViewDetailsDialog( QGraphicsItem *parent ) 
+    : HbDialog( parent ),
+      mNumofSubFolers( 0 ),
+      mNumofFiles( 0 ),
+      mSizeofFolder( 0 ),
+      mSizeofImage( 0 ),
+      mSizeofSounds( 0 ),
+      mSizeofVideo( 0 ),
+      mSizeofJava( 0 ),
+      mSizeofNativeFiles( 0 ),
+      mSizeofDocument( 0 ),
+      mSizeofCalendar( 0 )      
+{
+    init();
+    
+    setTimeout( NoTimeout );
+}
+
+FmViewDetailsDialog::~FmViewDetailsDialog()
+{
+    if( mDataListModel ){
+        mListView->setModel( 0 );
+        delete mListView;
+    }
+    
+    if( mDirModel ){
+        delete mDirModel;
+    }
+
+}
+
+void FmViewDetailsDialog::init()
+{
+    mHeaderLabel = new HbLabel( this );
+    setHeadingWidget( mHeaderLabel );
+
+    mListView = new HbListView( this );
+    setContentWidget( mListView );
+    
+    mDataListModel = new FmDataListModel();
+    mListView->setModel( mDataListModel ); 
+    mListView->setItemPrototype( new FmViewDetailsItem( this ) );
+
+    mOkAction = new HbAction( this );
+    mOkAction->setText( tr("ok") );
+    setPrimaryAction( mOkAction );
+    
+    mDirModel = new QDirModel();
+}
+
+void FmViewDetailsDialog::setDriveDetails( const QString &driverName )
+{
+    const QString dataDir = "C:\\data";
+    mHeaderLabel->setPlainText( tr( "Memory details: ") );
+    
+    quint64 sizeOfOthers = 0;
+    
+    FmDriverInfo driverInfo = FmUtils::queryDriverInfo( driverName );
+    QString detailString( "" );
+    
+    mDataListModel->removeRows( 0, mDataListModel->rowCount() );
+    mDataListModel->insertRows( 0, EDriveDetailEntryEnd );
+    
+    detailString.append( tr ( "Memory name:" ) );
+    QVariant variant( detailString ); 
+    mDataListModel->setData(  mDataListModel->index( EMemoryName ), variant, Qt::DisplayRole );
+
+    detailString.clear();
+    detailString.append( driverInfo.name() ); 
+    detailString.append( " " ); 
+    detailString.append( driverInfo.volumeName() ); 
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EMemoryName ), variant, Qt::UserRole );
+    
+    detailString.clear();
+    detailString.append( tr ( "Size:" ) ); 
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EMemorySize ), variant, Qt::DisplayRole );
+
+    detailString.clear();
+    detailString.append( FmUtils::formatStorageSize( driverInfo.size() ) );
+    variant = QVariant( detailString );; 
+    mDataListModel->setData(  mDataListModel->index( EMemorySize ), variant, Qt::UserRole );
+
+    detailString.clear();
+    detailString.append( tr ( "Free:" ) ); 
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EMemoryFree ), variant, Qt::DisplayRole );
+
+    detailString.clear();
+    detailString.append( FmUtils::formatStorageSize( driverInfo.freeSize() ) );
+    variant = QVariant( detailString );; 
+    mDataListModel->setData(  mDataListModel->index( EMemoryFree ), variant, Qt::UserRole );  
+    
+    sizeOfOthers = driverInfo.size() - driverInfo.freeSize();
+    
+//    getContentDetails( dataDir );
+    
+    detailString.clear();
+    detailString.append( tr ( "Images:" ) ); 
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EMemoryImages ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString.append( FmUtils::formatStorageSize( mSizeofImage ) );
+    variant = QVariant( detailString );; 
+    mDataListModel->setData(  mDataListModel->index( EMemoryImages ), variant, Qt::UserRole );  
+    
+    sizeOfOthers -= mSizeofImage;
+    
+    detailString.clear();
+    detailString.append( tr ( "Sounds:" ) ); 
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EMemorySounds ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString.append( FmUtils::formatStorageSize( mSizeofSounds ) );
+    variant = QVariant( detailString );; 
+    mDataListModel->setData(  mDataListModel->index( EMemorySounds ), variant, Qt::UserRole ); 
+    
+    sizeOfOthers -= mSizeofSounds;
+    
+    detailString.clear();
+    detailString.append( tr ( "Video:" ) ); 
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EMemoryVideos ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString.append( FmUtils::formatStorageSize( mSizeofVideo ) );
+    variant = QVariant( detailString );; 
+    mDataListModel->setData(  mDataListModel->index( EMemoryVideos ), variant, Qt::UserRole ); 
+    
+    sizeOfOthers -= mSizeofVideo;
+    
+    detailString.clear();
+    detailString.append( tr ( "Java Files:" ) ); 
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EMemoryMidpJava ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString.append( FmUtils::formatStorageSize( mSizeofJava ) );
+    variant = QVariant( detailString );; 
+    mDataListModel->setData(  mDataListModel->index( EMemoryMidpJava ), variant, Qt::UserRole );
+    
+    sizeOfOthers -= mSizeofJava;
+    
+    detailString.clear();
+    detailString.append( tr ( "Sis files:" ) ); 
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EMemoryNativeApps ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString.append( FmUtils::formatStorageSize( mSizeofNativeFiles ) );
+    variant = QVariant( detailString );; 
+    mDataListModel->setData(  mDataListModel->index( EMemoryNativeApps ), variant, Qt::UserRole ); 
+    
+    sizeOfOthers -= mSizeofNativeFiles;
+    
+    detailString.clear();
+    detailString.append( tr ( "Documents:" ) ); 
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EMemoryDocuments ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString.append( FmUtils::formatStorageSize( mSizeofDocument ) );
+    variant = QVariant( detailString );; 
+    mDataListModel->setData(  mDataListModel->index( EMemoryDocuments ), variant, Qt::UserRole ); 
+    
+    sizeOfOthers -= mSizeofDocument;
+    
+    detailString.clear();
+    detailString.append( tr ( "Calendars:" ) ); 
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EMemoryCalendar ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString.append( FmUtils::formatStorageSize( mSizeofCalendar ) );
+    variant = QVariant( detailString );; 
+    mDataListModel->setData(  mDataListModel->index( EMemoryCalendar ), variant, Qt::UserRole );
+    
+    sizeOfOthers -= mSizeofCalendar;
+    
+    detailString.clear();
+    detailString.append( tr ( "Others:" ) ); 
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EMemoryOthers ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString.append( FmUtils::formatStorageSize( sizeOfOthers ) );
+    variant = QVariant( detailString );; 
+    mDataListModel->setData(  mDataListModel->index( EMemoryOthers ), variant, Qt::UserRole );   
+}
+
+void FmViewDetailsDialog::setFolderDetails( const QString &folderPath )
+{
+    mHeaderLabel->setPlainText( tr( "Folder details: ") );
+    
+    QString detailString( "" );
+    
+    QModelIndex modelIndex = mDirModel->index( folderPath );
+    
+    mDataListModel->removeRows( 0, mDataListModel->rowCount() );
+    mDataListModel->insertRows( 0, EFolderDetailEntryEnd );
+    
+    detailString.append( tr ( "Name:" ) );
+    QVariant variant( detailString ); 
+    mDataListModel->setData(  mDataListModel->index( EFolderName ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString.append( mDirModel->fileName( modelIndex ) );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EFolderName ), variant, Qt::UserRole );
+    
+    QFileInfo fileInfo = mDirModel->fileInfo( mDirModel->index( folderPath ) );
+    QDateTime modifiedDateTime = fileInfo.lastModified ();
+    QDate modifiedDate = modifiedDateTime.date();
+    QTime modifiedTime = modifiedDateTime.time();
+    
+    detailString.clear();
+    detailString.append( tr ( "Date:" ) );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EModifiedDate ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString.append( modifiedDate.toString() );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EModifiedDate ), variant, Qt::UserRole );
+
+    detailString.clear();
+    detailString.append( tr ( "Time:" ) );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EModifiedTime ), variant, Qt::DisplayRole );
+   
+    detailString.clear();
+    detailString.append( modifiedTime.toString() );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EModifiedTime ), variant, Qt::UserRole );
+    
+    detailString.clear();
+    detailString.append( tr ( "Size:" ) );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EFolderSize ), variant, Qt::DisplayRole );
+   
+    detailString.clear();
+    detailString.append( FmUtils::formatStorageSize( mSizeofFolder ) );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EFolderSize ), variant, Qt::UserRole );
+
+    detailString.clear();
+    detailString.append( tr ( "Subfolders: " ) );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( ENumofSubFolders ), variant, Qt::DisplayRole );
+
+    detailString.clear();
+    detailString = QString::number( mNumofSubFolers );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( ENumofSubFolders ), variant, Qt::UserRole );
+
+    detailString.clear();
+    detailString.append( tr ( "Files: " ) );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( ENumofFiles ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString = QString::number( mNumofFiles );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( ENumofFiles ), variant, Qt::UserRole );
+}
+
+void FmViewDetailsDialog::setFileDetails( const QString &filePath )
+{
+    mHeaderLabel->setPlainText( tr( "File details: ") );
+    
+    QString detailString( "" );
+    
+    QModelIndex modelIndex = mDirModel->index( filePath );
+    
+    mDataListModel->removeRows( 0, mDataListModel->rowCount() );
+    mDataListModel->insertRows( 0, EFileDetailEntryEnd );
+    
+    detailString.append( tr ( "Name:" ) );
+    QVariant variant( detailString ); 
+    mDataListModel->setData(  mDataListModel->index( EFileName ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString.append( mDirModel->fileName( modelIndex ) );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EFileName ), variant, Qt::UserRole );
+    
+    detailString.clear();
+    detailString.append( tr ( "Type:" ) );
+    variant = QVariant( detailString ); 
+    mDataListModel->setData(  mDataListModel->index( EFileType ), variant, Qt::DisplayRole );
+    
+    QFileInfo fileInfo = mDirModel->fileInfo( mDirModel->index( filePath ) );
+    
+    QString fileType = FmUtils::getFileType( filePath );
+    if( fileType.isEmpty() ){
+        fileType.append( fileInfo.suffix() );
+    }
+    detailString.clear();
+    detailString.append( fileType );
+    variant = QVariant( detailString ); 
+    mDataListModel->setData(  mDataListModel->index( EFileType ), variant, Qt::UserRole );
+
+    QDateTime modifiedDateTime = fileInfo.lastModified ();
+    QDate modifiedDate = modifiedDateTime.date();
+    QTime modifiedTime = modifiedDateTime.time();
+    
+    detailString.clear();
+    detailString.append( tr ( "Date:" ) );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EFileModifiedDate ), variant, Qt::DisplayRole );
+    
+    detailString.clear();
+    detailString.append( modifiedDate.toString() );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EFileModifiedDate ), variant, Qt::UserRole );
+
+    detailString.clear();
+    detailString.append( tr ( "Time:" ) );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EFileModifiedTime ), variant, Qt::DisplayRole );
+   
+    detailString.clear();
+    detailString.append( modifiedTime.toString() );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EFileModifiedTime ), variant, Qt::UserRole );
+
+    detailString.clear();
+    detailString.append( tr ( "Size:" ) );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EFileSize ), variant, Qt::DisplayRole );
+   
+    detailString.clear();
+    detailString.append( FmUtils::formatStorageSize( fileInfo.size() ) );
+    variant = QVariant( detailString );
+    mDataListModel->setData(  mDataListModel->index( EFileSize ), variant, Qt::UserRole );
+}
+
+void FmViewDetailsDialog::setNumofSubfolders(  int numofSubFolders, int numofFiles, quint64 sizeofFolder )
+{
+    mNumofSubFolers = 0;
+    mNumofFiles = 0;
+    mSizeofFolder = 0;
+    
+    mNumofSubFolers = numofSubFolders;
+    mNumofFiles = numofFiles;
+    mSizeofFolder = sizeofFolder;    
+}
+
+void FmViewDetailsDialog::setSizeofContent( QList<FmDriveDetailsSize*> detailsSizeList )
+{
+    mSizeofImage = 0;
+    mSizeofSounds = 0;
+    mSizeofVideo = 0;
+    mSizeofJava = 0;
+    mSizeofNativeFiles = 0;
+    mSizeofDocument = 0;
+    mSizeofCalendar = 0; 
+    
+    for( QList< FmDriveDetailsSize* >::iterator it = detailsSizeList.begin(); 
+            it!= detailsSizeList.end(); ++it ){
+    
+        switch( ( *it )->dataGroups() ){
+            case FmDriveDetailsDataGroup::EGroupImages:
+            {
+                mSizeofImage = ( *it )->size();             
+            }
+                break;
+            case FmDriveDetailsDataGroup::EGroupSoundFiles:
+            {
+                mSizeofSounds = ( *it )->size();             
+            }
+                break;
+            case FmDriveDetailsDataGroup::EGroupMidpJava:
+            {
+                mSizeofJava = ( *it )->size();             
+            }
+                break;
+            case FmDriveDetailsDataGroup::EGroupNativeApps:
+            {
+                mSizeofNativeFiles = ( *it )->size();             
+            }
+                break;
+            case FmDriveDetailsDataGroup::EGroupVideos:
+            {
+                mSizeofVideo = ( *it )->size();             
+            }
+                break;
+            case FmDriveDetailsDataGroup::EGroupDocuments:
+            {
+                mSizeofDocument = ( *it )->size();             
+            }
+                break;
+            case FmDriveDetailsDataGroup::EGroupCalendar:
+            {
+                mSizeofCalendar = ( *it )->size();             
+            }
+                break;
+            default:
+                break;
+            
+        }
+
+    }
+}
+
+void FmViewDetailsDialog::showDriveViewDetailsDialog( const QString &driverName, 
+            QList<FmDriveDetailsSize*> detailsSizeList )
+{
+    FmViewDetailsDialog viewDetailsDialog;
+    
+    viewDetailsDialog.setSizeofContent( detailsSizeList );
+    viewDetailsDialog.setDriveDetails( driverName );
+       
+    viewDetailsDialog.exec();
+}
+
+void FmViewDetailsDialog::showFolderViewDetailsDialog( const QString &folderPath,
+           int numofSubFolders, int numofFiles, quint64 sizeofFolder )
+{
+    FmViewDetailsDialog viewDetailsDialog;
+    
+    viewDetailsDialog.setNumofSubfolders( numofSubFolders, numofFiles, sizeofFolder );
+    viewDetailsDialog.setFolderDetails( folderPath );
+    
+    viewDetailsDialog.exec();
+}
+
+void FmViewDetailsDialog::showFileViewDetailsDialog( const QString &filePath )
+{
+    FmViewDetailsDialog viewDetailsDialog;
+    viewDetailsDialog.setFileDetails( filePath );
+    
+    viewDetailsDialog.exec();
+}