Index: devicenotifier.cpp
===================================================================
--- devicenotifier.cpp	(revision 960780)
+++ devicenotifier.cpp	(working copy)
@@ -117,6 +117,7 @@
             Solid::Device device = Solid::Device(source);
             Solid::Device parentDevice = device.parent();
             Solid::StorageDrive *drive = parentDevice.as<Solid::StorageDrive>();
+
             if (drive && (drive->isHotpluggable() || drive->isRemovable())) {
                 onSourceAdded(source);
             }
@@ -149,6 +150,7 @@
         if (!data["predicateFiles"].isNull()) {
             int nb_actions = 0;
             QString lastActionLabel;
+
             foreach (const QString &desktop, data["predicateFiles"].toStringList()) {
                 QString filePath = KStandardDirs::locate("data", "solid/actions/" + desktop);
                 QList<KServiceAction> services = KDesktopFileActions::userDefinedServices(filePath, true);
@@ -157,6 +159,7 @@
                     lastActionLabel = QString(services[0].text());
                 }
             }
+
             m_dialog->setDeviceData(source,data["predicateFiles"],NotifierDialog::PredicateFilesRole);
             m_dialog->setDeviceData(source,data["text"], Qt::DisplayRole);
 
@@ -165,6 +168,7 @@
             //icon data
             m_dialog->setDeviceData(source,KIcon(data["icon"].toString()), Qt::DecorationRole);
 
+
             if (nb_actions > 1) {
                 QString s = i18np("1 action for this device",
                                   "%1 actions for this device",
@@ -185,6 +189,11 @@
                     QStringList overlays;
                     overlays << "emblem-mounted";
                     m_dialog->setDeviceData(source, KIcon(m_dialog->getDeviceData(source,NotifierDialog::IconNameRole).toString(), NULL, overlays), Qt::DecorationRole);
+                    if ( data["FreeSpace"].isValid()) {
+                        QList<QVariant> freeSpaceData;
+                        freeSpaceData << data["Size"] << data["FreeSpace"];
+                        m_dialog->setDeviceData(source, QVariant(freeSpaceData), NotifierDialog::DeviceFreeSpaceRole);
+                    }
                 } else if (data["Device Types"].toStringList().contains("OpticalDisc")) {
                     //Unmounted optical drive
                     m_dialog->setDeviceData(source, KIcon("media-eject"), Qt::DecorationRole);
@@ -196,6 +205,9 @@
 
                     //set icon to unmounted device
                     m_dialog->setDeviceData(source, KIcon(m_dialog->getDeviceData(source,NotifierDialog::IconNameRole).toString()), Qt::DecorationRole);
+                    QList<QVariant> freeSpaceData;
+                    freeSpaceData << QVariant(0) << QVariant(0);
+                    m_dialog->setDeviceData(source, QVariant(freeSpaceData), NotifierDialog::DeviceFreeSpaceRole);
                 }
             }
             // actions specific for other types of devices will go here
Index: notifierdialog.cpp
===================================================================
--- notifierdialog.cpp	(revision 960780)
+++ notifierdialog.cpp	(working copy)
@@ -18,6 +18,7 @@
 */
 
 #include "notifierdialog.h"
+#include "devicespaceinfodelegate.h"
 
 //Qt
 #include <QStandardItemModel>
@@ -140,6 +141,7 @@
     QString udi = item->data(SolidUdiRole).toString();
     if(!udi.isNull()) {
         Solid::Device device(udi);
+
         QString categoryOfInsertedDevice = getCategoryNameOfDevice(device);
         QStandardItem *currentCategory = searchOrCreateDeviceCategory(categoryOfInsertedDevice);
         if(currentCategory)
@@ -162,7 +164,7 @@
     m_notifierView->calculateRects();
 }
 
-void NotifierDialog::setUnMount(bool unmount, const QString &name) 
+void NotifierDialog::setUnMount(bool unmount, const QString &name)
 {
     QModelIndex index = indexForUdi(name);
     if (!index.isValid()) {
@@ -253,10 +255,10 @@
     QVBoxLayout *l_layout = new QVBoxLayout(m_widget);
     l_layout->setSpacing(0);
     l_layout->setMargin(0);
-    
+
     m_label = new QLabel(m_widget);
     updateColors();
-    
+
     QLabel *icon = new QLabel(m_widget);
     icon->setPixmap(KIcon("emblem-mounted").pixmap(KIconLoader::SizeMedium, KIconLoader::SizeMedium));
 
@@ -272,14 +274,16 @@
 
     m_notifierView = new NotifierView(m_widget);
     m_notifierView->setModel(m_hotplugModel);
-    m_notifierView->setMinimumSize(150,300);
+    m_notifierView->setMinimumSize(150,320);
     m_notifierView->setFocusPolicy(Qt::NoFocus);
-    
-    Plasma::Delegate *delegate = new Delegate(this);
+
+    DeviceSpaceInfoDelegate *delegate = new DeviceSpaceInfoDelegate(this);
+    //Plasma::Delegate *delegate = new Delegate(this);
     //map the roles of m_hotplugModel into the standard Plasma::Delegate roles
     delegate->setRoleMapping(Plasma::Delegate::SubTitleRole, ActionRole);
     delegate->setRoleMapping(Plasma::Delegate::ColumnTypeRole, ScopeRole);
     delegate->setRoleMapping(Plasma::Delegate::SubTitleMandatoryRole, SubTitleMandatoryRole);
+
     m_notifierView->setItemDelegate(delegate);
 
     l_layout->addLayout(l_layout2);
Index: devicenotifier.h
===================================================================
--- devicenotifier.h	(revision 960780)
+++ devicenotifier.h	(working copy)
@@ -60,12 +60,12 @@
         * @param parent the parent of this object
         **/
         DeviceNotifier(QObject *parent, const QVariantList &args);
-        
+
         /**
         * Default destructor
         **/
         ~DeviceNotifier();
-        
+
         /**
         * initialize the applet (called by plasma automatically)
         **/
@@ -136,28 +136,28 @@
 
         ///The engine used to manage devices in the applet (unmount,...)
         Plasma::DataEngine *m_solidDeviceEngine;
-  
+
         ///the icon used when the applet is in the taskbar
         Plasma::IconWidget *m_icon;
-    
+
         ///default icon of the notifier
         QString m_iconName;
 
         ///The dialog where devices are displayed
         Notifier::NotifierDialog * m_dialog;
-        
+
         ///the time durin when the dialog will be show
         int m_displayTime;
-      
+
         ///the number of items displayed in the dialog
         int m_numberItems;
-      
+
         ///the time during when the item will be displayed
         int m_itemsValidity;
 
         ///the timer for different use cases
         QTimer *m_timer;
-       
+
         ///bool to know if notifications are enabled
         bool isNotificationEnabled;
 
Index: notifierdialog.h
===================================================================
--- notifierdialog.h	(revision 960780)
+++ notifierdialog.h	(working copy)
@@ -27,7 +27,6 @@
 //solid
 #include <solid/solidnamespace.h>
 
-
 //to remove
 #include <QTreeView>
 
@@ -60,10 +59,10 @@
   class NotifierDialog : public QObject
   {
   Q_OBJECT
-  
+
       public:
 
-          
+
           ///Specific role for the data-model
           enum SpecificRoles {
               SolidUdiRole = Qt::UserRole + 1,
@@ -71,9 +70,10 @@
               ActionRole = Qt::UserRole + 3,
               IconNameRole = Qt::UserRole + 4,
               ScopeRole = Qt::UserRole + 5,
-              SubTitleMandatoryRole = Qt::UserRole + 6
+              SubTitleMandatoryRole = Qt::UserRole + 6,
+              DeviceFreeSpaceRole =  Qt::UserRole + 7
           };
-  
+
           /**
           * Constructor of the dialog
           * @param notifier the notifier attached to this dialog
@@ -81,7 +81,7 @@
           * @param parent the parent of this object
           **/
           NotifierDialog(DeviceNotifier * notifier,QObject *parent = 0);
- 
+
           /**
           * Default destructor
           **/
@@ -91,7 +91,7 @@
           * Returns the related QWidget.
           **/
           QWidget * dialog();
-         
+
           /**
           * Hide the dialog
           **/
@@ -109,43 +109,43 @@
           void insertDevice(const QString &name);
 
           void setUnMount(bool unmount,const QString &name);
-  
+
           /**
           * Allow to set data which will be displayed by the view
-          * @param name the name of the device 
+          * @param name the name of the device
           * @param data the data
           * @param role the role in the data-model
           **/
           void setDeviceData(const QString &name, QVariant data, int role);
-          
+
           /**
           * Allow to get a data display by the view
-          * @param name the name of the device 
+          * @param name the name of the device
           * @param role the role where is the data
           **/
           QVariant getDeviceData(const QString &name, int role);
 
           /**
           * Remove a device in the dialog
-          * @param name the name of the device 
+          * @param name the name of the device
           **/
           void removeDevice(const QString &name);
-  
+
           /**
           * Remove a device in the view (provided by convenience)
-          * @param index the index where the data will be delete 
+          * @param index the index where the data will be delete
           **/
           void removeDevice(int index);
 
           /**
           * Return the number of items displayed
-          * 
+          *
           **/
           int countDevices();
 
           /**
           * get the udi of a device displayed in the dialog
-          * @param index the index of the device 
+          * @param index the index of the device
           **/
           QString getDeviceUdi(int index);
 
@@ -178,14 +178,14 @@
           * @param error type of error given by solid
           **/
           void storageTeardownDone(Solid::ErrorType error, QVariant errorData);
- 
+
           /**
           * @internal slot called to restore to the notifier his icon
           **/
           void resetNotifierIcon();
 
           /**
-          * @internal update the color of the label to follow plasma theme 
+          * @internal update the color of the label to follow plasma theme
           *
           **/
           void updateColors();
@@ -193,12 +193,12 @@
 
       private :
           /**
-          * @internal build the dialog depending where it is 
+          * @internal build the dialog depending where it is
           **/
           void buildDialog();
 
           /**
-          * @internal get the model index in the data-model by using the udi in parameter 
+          * @internal get the model index in the data-model by using the udi in parameter
           * @param udi the udi used to find the model index
           **/
           QModelIndex indexForUdi(const QString &udi) const;
Index: notifierview.cpp
===================================================================
--- notifierview.cpp	(revision 960780)
+++ notifierview.cpp	(working copy)
@@ -18,7 +18,8 @@
 */
 
 #include "notifierview.h"
-
+#include "devicespaceinfodelegate.h"
+#include "notifierdialog.h"
 // Qt
 
 #include <QtGui/QMouseEvent>
@@ -27,6 +28,7 @@
 #include <QtGui/QScrollBar>
 #include <QtGui/QHeaderView>
 #include <QtGui/QStandardItemModel>
+#include <QDebug>
 
 //KDE
 #include <KDebug>
@@ -46,6 +48,7 @@
     setRootIsDecorated(true);
     setHeaderHidden(true);
     setMouseTracking(true);
+
 }
 
 NotifierView::~NotifierView()
@@ -151,12 +154,14 @@
 
                 QStandardItemModel * currentModel = dynamic_cast<QStandardItemModel *>(model());
                 QStandardItem *currentItem = currentModel->itemFromIndex(index);
+
                 // we display the children of this item
                 for (int k = 0; k < currentItem->rowCount(); ++k) {
                     for (int l = 0; l < currentItem->columnCount(); ++l) {
                         QStandardItem *childItem = currentItem->child(k, l);
                         QModelIndex childIndex = childItem->index();
                         QRect itemChildRect;
+
                         if (l % 2 == 0) {
                             QSize size(width() - COLUMN_EJECT_SIZE,sizeHintForIndex(index).height());
                             itemChildRect = QRect(QPoint(HEADER_LEFT_MARGIN, verticalOffset), size);
@@ -247,6 +252,8 @@
         option.state |= QStyle::State_HasFocus;
     }
 
+    QList<QVariant> freeSpaceData = index.data(NotifierDialog::DeviceFreeSpaceRole).toList();
+    ((DeviceSpaceInfoDelegate*)itemDelegate(index))->setData(freeSpaceData[0], freeSpaceData[1]);
     itemDelegate(index)->paint(&painter,option,index);
 }
 
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt	(revision 960780)
+++ CMakeLists.txt	(working copy)
@@ -3,7 +3,8 @@
 set(devicenotifier_SRCS
     devicenotifier.cpp
     notifierdialog.cpp
-    notifierview.cpp)
+    notifierview.cpp
+    devicespaceinfodelegate.cpp)
 
 kde4_add_plugin(plasma_applet_devicenotifier ${devicenotifier_SRCS})
 target_link_libraries(plasma_applet_devicenotifier ${KDE4_PLASMA_LIBS} ${KDE4_KIO_LIBS} ${KDE4_SOLID_LIBS})
