filemanager/src/filemanager/src/components/fmviewdetailsdialog.cpp
branchRCL_3
changeset 38 491b3ed49290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/filemanager/src/components/fmviewdetailsdialog.cpp	Tue Aug 31 15:06:05 2010 +0300
@@ -0,0 +1,395 @@
+/*
+ * 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 "fmdrivedetailstype.h"
+#include "fmviewmanager.h"
+
+#include <QFileInfo>
+#include <QDateTime>
+#include <QStandardItemModel>
+#include <QStringList>
+
+#include <hblabel.h>
+#include <hblistview.h>
+#include <hbaction.h>
+
+FmViewDetailsDialog::FmViewDetailsDialog( QGraphicsItem *parent ) 
+    : FmDialog( parent ),
+      mNumofSubFolers( 0 ),
+      mNumofFiles( 0 ),
+      mSizeofFolder( 0 ),
+      mSizeofImage( 0 ),
+      mSizeofSounds( 0 ),
+      mSizeofVideo( 0 ),
+      mSizeofJava( 0 ),
+      mSizeofNativeFiles( 0 ),
+      mSizeofDocument( 0 ),
+      mSizeofCalendar( 0 ),
+      mSizeofContacts( 0 )
+{
+    init();
+    
+    setTimeout( NoTimeout );
+}
+
+FmViewDetailsDialog::~FmViewDetailsDialog()
+{
+    if( mDataListModel ){
+        mListView->setModel( 0 );
+        delete mListView;
+    }
+}
+
+void FmViewDetailsDialog::init()
+{
+    setObjectName( "viewDetailsDialog" );
+    mHeaderLabel = new HbLabel( this );
+    setHeadingWidget( mHeaderLabel );
+    mHeaderLabel->setObjectName( "viewDetailsHeaderLabel" );
+
+    mListView = new HbListView( this );
+    mListView->setObjectName( "viewDetailsListView" );
+    setContentWidget( mListView );
+    
+    // init QStardardItemModel as 0 row and 1 column
+    mDataListModel = new QStandardItemModel( 0, 1 );
+    mListView->setModel( mDataListModel ); 
+    mListView->listItemPrototype()->setStretchingStyle(HbListViewItem::StretchLandscape);
+
+    mOkAction = new HbAction( this );
+    mOkAction->setText( hbTrId("txt_common_button_ok") );
+    setPrimaryAction( mOkAction );
+}
+
+void FmViewDetailsDialog::setDriveDetails( const QString &driverName )
+{
+    const QString dataDir = "C:\\data";
+	QStringList dataList;
+    mHeaderLabel->setPlainText( hbTrId( "txt_fmgr_title_memory_details" ) );
+    
+    quint64 sizeOfOthers = 0;
+    
+    FmDriverInfo driverInfo = FmUtils::queryDriverInfo( driverName );
+    QString detailString( "" );
+    
+    mDataListModel->removeRows( 0, mDataListModel->rowCount() );
+    mDataListModel->insertRows( 0, EDriveDetailEntryEnd );
+    
+	dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_memory_name" );
+	dataList << FmUtils::fillDriveVolume( driverInfo.name(), true ) ; 
+    mDataListModel->setData(  mDataListModel->index( EMemoryName, 0 ), dataList, Qt::DisplayRole );  
+    
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_size_memory" ); 
+    dataList << FmUtils::formatStorageSize( driverInfo.size() ) ;
+    mDataListModel->setData(  mDataListModel->index( EMemorySize, 0 ), dataList, Qt::DisplayRole );  
+
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_free_memory" ); 
+    dataList << FmUtils::formatStorageSize( driverInfo.freeSize() );
+    mDataListModel->setData(  mDataListModel->index( EMemoryFree, 0 ), dataList, Qt::DisplayRole );    
+    
+    sizeOfOthers = driverInfo.size() - driverInfo.freeSize();
+    
+//    getContentDetails( dataDir );
+    
+    dataList.clear();
+    dataList << hbTrId ( "Images:" ) ;
+    dataList << FmUtils::formatStorageSize( mSizeofImage );
+    mDataListModel->setData(  mDataListModel->index( EMemoryImages, 0 ), dataList, Qt::DisplayRole );  
+    
+    sizeOfOthers -= mSizeofImage;
+    
+    dataList.clear();
+    dataList << hbTrId ( "Sounds:" );
+	dataList << FmUtils::formatStorageSize( mSizeofSounds );
+    mDataListModel->setData(  mDataListModel->index( EMemorySounds, 0 ), dataList, Qt::DisplayRole );   
+    
+    sizeOfOthers -= mSizeofSounds;
+    
+    dataList.clear();
+    dataList << hbTrId ( "Video:" );
+    dataList << FmUtils::formatStorageSize( mSizeofVideo );
+    mDataListModel->setData(  mDataListModel->index( EMemoryVideos, 0 ), dataList, Qt::DisplayRole );   
+    
+    sizeOfOthers -= mSizeofVideo;
+    
+    dataList.clear();
+    dataList << hbTrId ( "Java Files:" );
+    dataList << FmUtils::formatStorageSize( mSizeofJava );
+    mDataListModel->setData(  mDataListModel->index( EMemoryMidpJava, 0 ), dataList, Qt::DisplayRole );  
+    
+    sizeOfOthers -= mSizeofJava;
+    
+    dataList.clear();
+    dataList << hbTrId ( "Sis files:" );
+    dataList << FmUtils::formatStorageSize( mSizeofNativeFiles );
+    mDataListModel->setData(  mDataListModel->index( EMemoryNativeApps, 0 ), dataList, Qt::DisplayRole );   
+    
+    sizeOfOthers -= mSizeofNativeFiles;
+    
+    dataList.clear();
+    dataList << hbTrId ( "Documents:" );
+    dataList << FmUtils::formatStorageSize( mSizeofDocument );
+    mDataListModel->setData(  mDataListModel->index( EMemoryDocuments, 0 ), dataList, Qt::DisplayRole );   
+    
+    sizeOfOthers -= mSizeofDocument;
+    
+    dataList.clear();
+    dataList << hbTrId ( "Calendars:" );
+    dataList << FmUtils::formatStorageSize( mSizeofCalendar );
+    mDataListModel->setData(  mDataListModel->index( EMemoryCalendar, 0 ), dataList, Qt::DisplayRole );  
+    
+    sizeOfOthers -= mSizeofCalendar;
+    
+    dataList.clear();
+    dataList << hbTrId ( "Contacts:" );
+    dataList << FmUtils::formatStorageSize( mSizeofContacts );
+    mDataListModel->setData(  mDataListModel->index( EMemoryContacts, 0 ), dataList, Qt::DisplayRole );  
+    
+    sizeOfOthers -= mSizeofContacts;
+    
+    dataList.clear();
+    dataList << hbTrId ( "Others:" );
+    dataList << FmUtils::formatStorageSize( sizeOfOthers );
+    mDataListModel->setData(  mDataListModel->index( EMemoryOthers, 0 ), dataList, Qt::DisplayRole );     
+}
+
+void FmViewDetailsDialog::setFolderDetails( const QString &folderPath )
+{
+    mHeaderLabel->setPlainText( hbTrId( "txt_fmgr_title_folder_details" ) );
+    
+    QString detailString( "" );
+	QStringList dataList;
+	QFileInfo fileInfo( folderPath );
+	
+    mDataListModel->removeRows( 0, mDataListModel->rowCount() );
+    mDataListModel->insertRows( 0, EFolderDetailEntryEnd );
+    
+    dataList << hbTrId ( "txt_fmgr_dblist_name_folder" );
+    dataList << fileInfo.fileName();
+    mDataListModel->setData(  mDataListModel->index( EFolderName, 0 ), dataList, Qt::DisplayRole );  
+    
+    QDateTime modifiedDateTime = fileInfo.lastModified ();
+    QDate modifiedDate = modifiedDateTime.date();
+    QTime modifiedTime = modifiedDateTime.time();
+    
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_date_folder" );
+    dataList << modifiedDate.toString();
+    mDataListModel->setData(  mDataListModel->index( EModifiedDate, 0 ), dataList, Qt::DisplayRole );  
+
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_time_folder" );
+    dataList << modifiedTime.toString();
+    mDataListModel->setData(  mDataListModel->index( EModifiedTime, 0 ), dataList, Qt::DisplayRole );  
+    
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_size_folder" );
+    dataList << FmUtils::formatStorageSize( mSizeofFolder );
+    mDataListModel->setData(  mDataListModel->index( EFolderSize, 0 ), dataList, Qt::DisplayRole );  
+
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_subfolders" );
+    dataList << QString::number( mNumofSubFolers );
+    mDataListModel->setData(  mDataListModel->index( ENumofSubFolders, 0 ), dataList, Qt::DisplayRole );  
+
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_files" );
+    dataList << QString::number( mNumofFiles );
+    mDataListModel->setData(  mDataListModel->index( ENumofFiles, 0 ), dataList, Qt::DisplayRole );  
+}
+
+void FmViewDetailsDialog::setFileDetails( const QString &filePath )
+{
+    mHeaderLabel->setPlainText( hbTrId( "txt_fmgr_title_file_details") );
+    
+    QString detailString( "" );
+    QStringList dataList;
+
+    QFileInfo fileInfo( filePath );
+    
+    mDataListModel->removeRows( 0, mDataListModel->rowCount() );
+    mDataListModel->insertRows( 0, EFileDetailEntryEnd );
+    
+    dataList << hbTrId ( "txt_fmgr_dblist_name_file" );
+    dataList << fileInfo.fileName();
+    mDataListModel->setData(  mDataListModel->index( EFileName, 0 ), dataList, Qt::DisplayRole );  
+    
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_type_file" );
+    
+    
+    
+    QString fileType = FmUtils::getFileType( filePath );
+    if( fileType.isEmpty() ){
+        fileType.append( fileInfo.suffix() );
+    }
+    dataList << fileType;
+    mDataListModel->setData(  mDataListModel->index( EFileType, 0 ), dataList, Qt::DisplayRole );  
+
+    QDateTime modifiedDateTime = fileInfo.lastModified ();
+    QDate modifiedDate = modifiedDateTime.date();
+    QTime modifiedTime = modifiedDateTime.time();
+    
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_date_file" );
+    dataList << modifiedDate.toString();
+    mDataListModel->setData(  mDataListModel->index( EFileModifiedDate, 0 ), dataList, Qt::DisplayRole );  
+
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_time_file" );
+    dataList << modifiedTime.toString();
+    mDataListModel->setData(  mDataListModel->index( EFileModifiedTime, 0 ), dataList, Qt::DisplayRole );  
+
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_size_file" );
+    dataList << FmUtils::formatStorageSize( fileInfo.size() );
+    mDataListModel->setData(  mDataListModel->index( EFileSize, 0 ), dataList, Qt::DisplayRole );  
+}
+
+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;
+    mSizeofContacts = 0;
+    
+    for( QList< FmDriveDetailsSize* >::const_iterator it = detailsSizeList.begin(); 
+            it!= detailsSizeList.end(); ++it ){
+    
+        switch( ( *it )->dataType() ){
+            case FmDriveDetailsSize::ETypeImages:
+            {
+                mSizeofImage = ( *it )->size();
+                break;
+            }
+            case FmDriveDetailsSize::ETypeSoundFiles:
+            {
+                mSizeofSounds = ( *it )->size();
+                break;
+            }
+            case FmDriveDetailsSize::ETypeMidpJava:
+            {
+                mSizeofJava = ( *it )->size();
+                break;
+            }
+            case FmDriveDetailsSize::ETypeNativeApps:
+            {
+                mSizeofNativeFiles = ( *it )->size();
+                break;
+            }
+            case FmDriveDetailsSize::ETypeVideos:
+            {
+                mSizeofVideo = ( *it )->size();
+                break;
+            }
+            case FmDriveDetailsSize::ETypeDocuments:
+            {
+                mSizeofDocument = ( *it )->size();
+                break;
+            }
+            case FmDriveDetailsSize::ETypeCalendar:
+            {
+                mSizeofCalendar = ( *it )->size();
+                break;
+            }
+            case FmDriveDetailsSize::ETypeContacts:
+            {
+                mSizeofContacts = ( *it )->size();
+                break;
+            }
+            default:
+                break;
+        }
+    }
+}
+
+HbAction *FmViewDetailsDialog::executeDialog( FmDialog *dialog, const QString &associatedDrives )
+{
+    for( int i = 0; i < associatedDrives.length(); i++ ) {
+        QString drive( associatedDrives[i] + QString( ":/" ) );
+        if( !FmUtils::isDriveAvailable( drive ) ) {
+            FM_LOG( "executeDialog return 0_ " + associatedDrives );
+            return 0;
+        }
+    }
+    
+	FmDlgCloseUnit dlgCloseUnit( dialog );
+	dlgCloseUnit.addAssociatedDrives( associatedDrives );
+
+	FmViewManager::viewManager()->addDlgCloseUnit( &dlgCloseUnit );
+	FM_LOG( " Exec Dialog start " );
+    HbAction* action = dialog->exec();
+	FM_LOG( " Exec Dialog end " );
+	FmViewManager::viewManager()->removeDlgCloseUnit( &dlgCloseUnit );
+	return action;
+}
+
+void FmViewDetailsDialog::showDriveViewDetailsDialog( const QString &driverName, 
+            QList<FmDriveDetailsSize*> detailsSizeList, const QString& associatedDrives )
+{
+	FM_LOG( "showDriveViewDetailsDialog_" + associatedDrives );
+    FmViewDetailsDialog viewDetailsDialog;
+    
+    viewDetailsDialog.setSizeofContent( detailsSizeList );
+    viewDetailsDialog.setDriveDetails( driverName );
+       
+    //viewDetailsDialog.exec();
+	executeDialog( &viewDetailsDialog , associatedDrives );
+}
+
+void FmViewDetailsDialog::showFolderViewDetailsDialog( const QString &folderPath,
+           int numofSubFolders, int numofFiles, quint64 sizeofFolder, const QString& associatedDrives )
+{
+    FmViewDetailsDialog viewDetailsDialog;
+    
+    viewDetailsDialog.setNumofSubfolders( numofSubFolders, numofFiles, sizeofFolder );
+    viewDetailsDialog.setFolderDetails( folderPath );
+    
+    //viewDetailsDialog.exec();
+	executeDialog( &viewDetailsDialog , associatedDrives );
+}
+
+void FmViewDetailsDialog::showFileViewDetailsDialog( const QString &filePath, const QString& associatedDrives )
+{
+    FmViewDetailsDialog viewDetailsDialog;
+    viewDetailsDialog.setFileDetails( filePath );
+    
+    //viewDetailsDialog.exec();
+	executeDialog( &viewDetailsDialog , associatedDrives );
+}