Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestControlFileManager.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestControlFileManager.cpp	(revision 71530)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestControlFileManager.cpp	(revision 71531)
@@ -688,11 +688,5 @@
         return objectInfo;
 
-    //objectInfo << QString(UIGuestControlInterface::getFsObjTypeString(fsObjectInfo.GetType()).append("\t"));
     objectInfo << fsObjectInfo.GetName();
-    //objectInfo << QString::number(fsObjectInfo.GetObjectSize());
-
-    /* Currently I dont know a way to convert these into a meaningful date/time: */
-    // strObjectInfo.append("BirthTime", QString::number(fsObjectInfo.GetBirthTime()));
-    // strObjectInfo.append("ChangeTime", QString::number(fsObjectInfo.GetChangeTime()));
 
     return objectInfo;
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.cpp	(revision 71530)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.cpp	(revision 71531)
@@ -45,9 +45,9 @@
 signals:
 
-    void sigResultUpdated(UIDirectoryStatistics, QString);
+    void sigResultUpdated(UIDirectoryStatistics);
 
 public:
 
-    UIHostDirectoryDiskUsageComputer(QObject *parent, QString strStartPath);
+    UIHostDirectoryDiskUsageComputer(QObject *parent, QStringList strStartPath);
     void stopRecursion();
 
@@ -58,5 +58,5 @@
     void directoryStatisticsRecursive(const QString &path, UIDirectoryStatistics &statistics);
     void                  run();
-    QString               m_strStartPath;
+    QStringList           m_pathList;
     UIDirectoryStatistics m_resultStatistics;
     bool                  m_bContinueRunning;
@@ -69,7 +69,7 @@
 *********************************************************************************************************************************/
 
-UIHostDirectoryDiskUsageComputer::UIHostDirectoryDiskUsageComputer(QObject *parent, QString strStartPath)
+UIHostDirectoryDiskUsageComputer::UIHostDirectoryDiskUsageComputer(QObject *parent, QStringList pathList)
     :QThread(parent)
-    , m_strStartPath(strStartPath)
+    , m_pathList(pathList)
     , m_bContinueRunning(true)
 {
@@ -78,5 +78,6 @@
 void UIHostDirectoryDiskUsageComputer::run()
 {
-    directoryStatisticsRecursive(m_strStartPath, m_resultStatistics);
+    for (int i = 0; i < m_pathList.size(); ++i)
+        directoryStatisticsRecursive(m_pathList[i], m_resultStatistics);
 }
 
@@ -84,12 +85,30 @@
 void UIHostDirectoryDiskUsageComputer::directoryStatisticsRecursive(const QString &path, UIDirectoryStatistics &statistics)
 {
+
+    if (!m_bContinueRunning)
+        return;
+    QFileInfo fileInfo(path);
+    if (!fileInfo.exists())
+        return;
+    /* if the object is a file or a symlink then read the size and return: */
+    if (fileInfo.isFile())
+    {
+        statistics.m_totalSize += fileInfo.size();
+        ++statistics.m_uFileCount;
+        sigResultUpdated(statistics);
+        return;
+    }
+    else if (fileInfo.isSymLink())
+    {
+        statistics.m_totalSize += fileInfo.size();
+        ++statistics.m_uSymlinkCount;
+        sigResultUpdated(statistics);
+        return;
+    }
+
+    /* if it is a directory then read the content: */
     QDir dir(path);
     if (!dir.exists())
         return;
-
-    if (!m_bContinueRunning)
-        return;
-
-    sigResultUpdated(statistics, path);
 
     QFileInfoList entryList = dir.entryInfoList();
@@ -110,4 +129,5 @@
         }
     }
+    sigResultUpdated(statistics);
 }
 
@@ -313,15 +333,32 @@
         propertyString += "<b>Owner:</b> " + fileInfo.owner();
 
-        // if (fileInfo.isDir())
-        // {
-        //     propertyString += "<br/>";
-        //     UIDirectoryStatistics directoryStatistics;
-        //     directoryStatisticsRecursive(fileInfo.absoluteFilePath(), directoryStatistics);
-        //     propertyString += "<b>Total Size:</b> " + QString::number(directoryStatistics.m_totalSize) + QString(" bytes");
-        //     if (directoryStatistics.m_totalSize >= m_iKiloByte)
-        //         propertyString += " (" + humanReadableSize(directoryStatistics.m_totalSize) + ")";
-        //     propertyString += "<br/>";
-        //     propertyString += "<b>File Count:</b> " + QString::number(directoryStatistics.m_uFileCount);
-        // }
+        return propertyString;
+    }
+    else
+    {
+        int fileCount = 0;
+        int directoryCount = 0;
+        ULONG64 totalSize = 0;
+
+        for(int i = 0; i < selectedObjects.size(); ++i)
+        {
+            QFileInfo fileInfo(selectedObjects.at(i));
+            if (!fileInfo.exists())
+                continue;
+            if (fileInfo.isFile())
+                ++fileCount;
+            if (fileInfo.isDir())
+                ++directoryCount;
+            totalSize += fileInfo.size();
+        }
+        QString propertyString;
+        propertyString += "<b>Selected:</b> " + QString::number(fileCount) + " files ";
+        propertyString += "and " + QString::number(directoryCount) + " directories";
+        propertyString += "<br/>";
+        propertyString += "<b>Size:</b> " + QString::number(totalSize) + QString(" bytes");
+        if (totalSize >= m_iKiloByte)
+            propertyString += " (" + humanReadableSize(totalSize) + ")";
+
+
         return propertyString;
     }
@@ -343,17 +380,13 @@
 
     QStringList selectedObjects = selectedItemPathList();
-    if (selectedObjects.size() == 1)
-    {
-        QFileInfo fileInfo(selectedObjects.at(0));
-        if (fileInfo.exists() && fileInfo.isDir())
-        {
-            directoryThread = new UIHostDirectoryDiskUsageComputer(this, fileInfo.absoluteFilePath());
-            if (directoryThread)
-            {
-                connect(directoryThread, &UIHostDirectoryDiskUsageComputer::sigResultUpdated,
-                        this, &UIHostFileTable::sltReceiveDirectoryStatistics/*, Qt::DirectConnection*/);
-                directoryThread->start();
-            }
-
+    if ((selectedObjects.size() == 1 && QFileInfo(selectedObjects.at(0)).isDir())
+        || selectedObjects.size() > 1)
+    {
+        directoryThread = new UIHostDirectoryDiskUsageComputer(this, selectedObjects);
+        if (directoryThread)
+        {
+            connect(directoryThread, &UIHostDirectoryDiskUsageComputer::sigResultUpdated,
+                    this, &UIHostFileTable::sltReceiveDirectoryStatistics/*, Qt::DirectConnection*/);
+            directoryThread->start();
         }
     }
@@ -376,5 +409,5 @@
 }
 
-void UIHostFileTable::sltReceiveDirectoryStatistics(UIDirectoryStatistics statistics, QString path)
+void UIHostFileTable::sltReceiveDirectoryStatistics(UIDirectoryStatistics statistics)
 {
     if (!m_pPropertiesDialog)
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.h	(revision 71530)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.h	(revision 71531)
@@ -46,5 +46,5 @@
 private slots:
 
-    void sltReceiveDirectoryStatistics(UIDirectoryStatistics statictics, QString path);
+    void sltReceiveDirectoryStatistics(UIDirectoryStatistics statictics);
 
 private:
