Index: /trunk/src/VBox/Frontends/VirtualBox/include/QITreeWidget.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/include/QITreeWidget.h	(revision 24053)
+++ /trunk/src/VBox/Frontends/VirtualBox/include/QITreeWidget.h	(revision 24054)
@@ -6,5 +6,5 @@
 
 /*
- * Copyright (C) 2008 Sun Microsystems, Inc.
+ * Copyright (C) 2008-2009 Sun Microsystems, Inc.
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -24,4 +24,5 @@
 #define __QITreeWidget_h__
 
+/* Global includes */
 #include <QTreeWidget>
 
@@ -35,20 +36,5 @@
 public:
 
-    /*
-     * There are two allowed QTreeWidgetItem types which may be used with
-     * QITreeWidget: basic and complex.
-     * Complex type used in every place where the particular item have to
-     * be separately repainted with it's own content.
-     * Basic are used in all other places.
-     */
-    enum
-    {
-        BasicItemType   = QTreeWidgetItem::UserType + 1,
-        ComplexItemType = QTreeWidgetItem::UserType + 2
-    };
-
     QITreeWidget (QWidget *aParent = 0);
-
-    void setSupportedDropActions (Qt::DropActions aAction);
 
     void addTopBottomMarginToItems (int aMargin);
@@ -56,29 +42,11 @@
 signals:
 
+    void painted (QTreeWidgetItem *aItem, QPainter *aPainter);
     void resized (const QSize &aSize, const QSize &aOldSize);
 
 protected:
 
-    virtual Qt::DropActions supportedDropActions () const;
-
-    void paintEvent (QPaintEvent *);
-    void resizeEvent (QResizeEvent *);
-
-    /* Protected member vars */
-    Qt::DropActions mSupportedDropActions;
-};
-
-/*
- * Interface for more complex items which requires special repainting
- * routine inside QITreeWidget's viewport.
- */
-class ComplexTreeWidgetItem : public QTreeWidgetItem
-{
-public:
-
-    ComplexTreeWidgetItem (QTreeWidget *aParent)
-        : QTreeWidgetItem  (aParent, QITreeWidget::ComplexItemType) {}
-
-    virtual void paintItem (QPainter *aPainter) = 0;
+    void paintEvent (QPaintEvent *aEvent);
+    void resizeEvent (QResizeEvent *aEvent);
 };
 
Index: /trunk/src/VBox/Frontends/VirtualBox/include/VBoxGLSettingsLanguage.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/include/VBoxGLSettingsLanguage.h	(revision 24053)
+++ /trunk/src/VBox/Frontends/VirtualBox/include/VBoxGLSettingsLanguage.h	(revision 24054)
@@ -51,5 +51,6 @@
 private slots:
 
-    void mTwLanguageChanged (QTreeWidgetItem *aCurr, QTreeWidgetItem *aPrev);
+    void mTwItemPainted (QTreeWidgetItem *aItem, QPainter *aPainter);
+    void mTwLanguageChanged (QTreeWidgetItem *aItem);
 
 private:
Index: /trunk/src/VBox/Frontends/VirtualBox/src/QITreeWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/QITreeWidget.cpp	(revision 24053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/QITreeWidget.cpp	(revision 24054)
@@ -6,5 +6,5 @@
 
 /*
- * Copyright (C) 2008 Sun Microsystems, Inc.
+ * Copyright (C) 2008-2009 Sun Microsystems, Inc.
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -21,8 +21,10 @@
  */
 
-#include "QITreeWidget.h"
-
+/* Global includes */
 #include <QPainter>
 #include <QResizeEvent>
+
+/* Local includes */
+#include "QITreeWidget.h"
 
 QITreeWidget::QITreeWidget (QWidget *aParent)
@@ -31,47 +33,22 @@
 }
 
-void QITreeWidget::setSupportedDropActions (Qt::DropActions aAction)
-{
-    mSupportedDropActions = aAction;
-}
-
-Qt::DropActions QITreeWidget::supportedDropActions() const
-{
-    return mSupportedDropActions;
-}
-
 void QITreeWidget::paintEvent (QPaintEvent *aEvent)
 {
-    /* Painter for items */
-    QPainter painter (viewport());
+    /* Opens Items Painter */
+    QPainter painter;
+    painter.begin (viewport());
 
-    /* Here we let the items make some painting inside the viewport. */
+    /* Notify connected objects about painting */
     QTreeWidgetItemIterator it (this);
     while (*it)
     {
-        switch ((*it)->type())
-        {
-            case ComplexItemType:
-            {
-                /* Let the ComplexItem paint itself */
-                ComplexTreeWidgetItem *i = static_cast<ComplexTreeWidgetItem*> (*it);
-                i->paintItem (&painter);
-                break;
-            }
-            case BasicItemType:
-            {
-                /* Do nothing for BasicItem */
-                break;
-            }
-            default:
-            {
-                /* Wrong item is used */
-                break;
-            }
-        }
+        emit painted (*it, &painter);
         ++ it;
     }
+
+    /* Close Items Painter */
     painter.end();
 
+    /* Base-class paint-event */
     QTreeWidget::paintEvent (aEvent);
 }
@@ -79,5 +56,8 @@
 void QITreeWidget::resizeEvent (QResizeEvent *aEvent)
 {
+    /* Base-class resize-event */
     QTreeWidget::resizeEvent (aEvent);
+
+    /* Notify connected objects about resize */
     emit resized (aEvent->size(), aEvent->oldSize());
 }
@@ -85,5 +65,5 @@
 void QITreeWidget::addTopBottomMarginToItems (int aMargin)
 {
-    for (int i=0; i < topLevelItemCount(); ++i)
+    for (int i = 0; i < topLevelItemCount(); ++ i)
     {
         QTreeWidgetItem *item = topLevelItem (i);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGLSettingsLanguage.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGLSettingsLanguage.cpp	(revision 24053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGLSettingsLanguage.cpp	(revision 24054)
@@ -40,11 +40,13 @@
 extern const char *gVBoxBuiltInLangName;
 
-class LanguageItem : public ComplexTreeWidgetItem
+class LanguageItem : public QTreeWidgetItem
 {
 public:
+
+    enum { LanguageItemType = QTreeWidgetItem::UserType + 1 };
 
     LanguageItem (QTreeWidget *aParent, const QTranslator &aTranslator,
                   const QString &aId, bool aBuiltIn = false)
-        : ComplexTreeWidgetItem (aParent), mBuiltIn (aBuiltIn)
+        : QTreeWidgetItem (aParent, LanguageItemType), mBuiltIn (aBuiltIn)
     {
         Assert (!aId.isEmpty());
@@ -107,5 +109,5 @@
      * file is missing or corrupt). */
     LanguageItem (QTreeWidget *aParent, const QString &aId)
-        : ComplexTreeWidgetItem (aParent), mBuiltIn (false)
+        : QTreeWidgetItem (aParent, LanguageItemType), mBuiltIn (false)
     {
         Assert (!aId.isEmpty());
@@ -125,5 +127,5 @@
      * to QString::null) */
     LanguageItem (QTreeWidget *aParent)
-        : ComplexTreeWidgetItem (aParent), mBuiltIn (false)
+        : QTreeWidgetItem (aParent, LanguageItemType), mBuiltIn (false)
     {
         setText (0, VBoxGLSettingsLanguage::tr ("Default", "Language"));
@@ -134,4 +136,6 @@
         setText (3, "                ");
     }
+
+    bool isBuiltIn() const { return mBuiltIn; }
 
     bool operator< (const QTreeWidgetItem &aOther) const
@@ -145,8 +149,7 @@
         if (mBuiltIn)
             return true;
-        if (aOther.type() == QITreeWidget::ComplexItemType &&
-            ((LanguageItem*) &aOther)->mBuiltIn)
+        if (aOther.type() == LanguageItemType && ((LanguageItem*) &aOther)->mBuiltIn)
             return false;
-        return ComplexTreeWidgetItem::operator< (aOther);
+        return QTreeWidgetItem::operator< (aOther);
     }
 
@@ -163,15 +166,4 @@
     }
 
-    void paintItem (QPainter *aPainter)
-    {
-        if (mBuiltIn)
-        {
-            QRect rect = treeWidget()->visualItemRect (this);
-            aPainter->setPen (treeWidget()->palette().color (QPalette::Mid));
-            aPainter->drawLine (rect.x(), rect.y() + rect.height() - 1,
-                 rect.x() + rect.width(), rect.y() + rect.height() - 1);
-        }
-    }
-
     bool mBuiltIn : 1;
 };
@@ -190,6 +182,8 @@
 
     /* Setup Connections */
+    connect (mTwLanguage, SIGNAL (painted (QTreeWidgetItem *, QPainter *)),
+             this, SLOT (mTwItemPainted (QTreeWidgetItem *, QPainter *)));
     connect (mTwLanguage, SIGNAL (currentItemChanged (QTreeWidgetItem *, QTreeWidgetItem *)),
-             this, SLOT (mTwLanguageChanged (QTreeWidgetItem *, QTreeWidgetItem *)));
+             this, SLOT (mTwLanguageChanged (QTreeWidgetItem *)));
 
     /* Applying language settings */
@@ -197,6 +191,5 @@
 }
 
-void VBoxGLSettingsLanguage::getFrom (const CSystemProperties &,
-                                      const VBoxGlobalSettings &aGs)
+void VBoxGLSettingsLanguage::getFrom (const CSystemProperties & /* aProps */, const VBoxGlobalSettings &aGs)
 {
     reload (aGs.languageId());
@@ -204,6 +197,5 @@
 }
 
-void VBoxGLSettingsLanguage::putBackTo (CSystemProperties &,
-                                        VBoxGlobalSettings &aGs)
+void VBoxGLSettingsLanguage::putBackTo (CSystemProperties & /* aProps */, VBoxGlobalSettings &aGs)
 {
     QTreeWidgetItem *curItem = mTwLanguage->currentItem();
@@ -296,11 +288,25 @@
 }
 
-void VBoxGLSettingsLanguage::mTwLanguageChanged (QTreeWidgetItem *aCurItem,
-                                                 QTreeWidgetItem *)
-{
-    if (!aCurItem) return;
+void VBoxGLSettingsLanguage::mTwItemPainted (QTreeWidgetItem *aItem, QPainter *aPainter)
+{
+    if (aItem && aItem->type() == LanguageItem::LanguageItemType)
+    {
+        LanguageItem *item = static_cast <LanguageItem*> (aItem);
+        if (item->isBuiltIn())
+        {
+            QRect rect = mTwLanguage->visualItemRect (item);
+            aPainter->setPen (mTwLanguage->palette().color (QPalette::Mid));
+            aPainter->drawLine (rect.x(), rect.y() + rect.height() - 1,
+                                rect.x() + rect.width(), rect.y() + rect.height() - 1);
+        }
+    }
+}
+
+void VBoxGLSettingsLanguage::mTwLanguageChanged (QTreeWidgetItem *aItem)
+{
+    if (!aItem) return;
 
     /* Disable labels for the Default language item */
-    bool enabled = !aCurItem->text (1).isNull();
+    bool enabled = !aItem->text (1).isNull();
 
     mTxName->setEnabled (enabled);
@@ -310,7 +316,7 @@
                                "</table>")
                       .arg (tr ("Language:"))
-                      .arg (aCurItem->text (2))
+                      .arg (aItem->text (2))
                       .arg (tr ("Author(s):"))
-                      .arg (aCurItem->text (3)));
+                      .arg (aItem->text (3)));
 
     mLanguageChanged = true;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxMediaManagerDlg.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxMediaManagerDlg.cpp	(revision 24053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxMediaManagerDlg.cpp	(revision 24054)
@@ -63,6 +63,8 @@
 public:
 
+    enum { MediaItemType = QTreeWidgetItem::UserType + 1 };
+
     MediaItem (MediaItem *aParent, const VBoxMedium &aMedium, const VBoxMediaManagerDlg *aManager)
-        : QTreeWidgetItem (aParent, QITreeWidget::BasicItemType)
+        : QTreeWidgetItem (aParent, MediaItemType)
         , mMedium (aMedium)
         , mManager (aManager)
@@ -70,5 +72,5 @@
 
     MediaItem (QTreeWidget *aParent, const VBoxMedium &aMedium, const VBoxMediaManagerDlg *aManager)
-        : QTreeWidgetItem (aParent, QITreeWidget::BasicItemType)
+        : QTreeWidgetItem (aParent, MediaItemType)
         , mMedium (aMedium)
         , mManager (aManager)
@@ -145,5 +147,5 @@
     {
         QTreeWidgetItem *item = QTreeWidgetItemIterator::operator*();
-        return item && item->type() == QITreeWidget::BasicItemType ?
+        return item && item->type() == MediaItem::MediaItemType ?
             static_cast <MediaItem*> (item) : 0;
     }
@@ -227,5 +229,4 @@
     mTwHD->header()->setStretchLastSection (false);
     mTwHD->setSortingEnabled (true);
-    mTwHD->setSupportedDropActions (Qt::LinkAction);
     mTwHD->installEventFilter (this);
     connect (mTwHD, SIGNAL (currentItemChanged (QTreeWidgetItem *, QTreeWidgetItem *)),
@@ -245,5 +246,4 @@
     mTwCD->header()->setStretchLastSection (false);
     mTwCD->setSortingEnabled (true);
-    mTwCD->setSupportedDropActions (Qt::LinkAction);
     mTwCD->installEventFilter (this);
     connect (mTwCD, SIGNAL (currentItemChanged (QTreeWidgetItem *, QTreeWidgetItem *)),
@@ -263,5 +263,4 @@
     mTwFD->header()->setStretchLastSection (false);
     mTwFD->setSortingEnabled (true);
-    mTwFD->setSupportedDropActions (Qt::LinkAction);
     mTwFD->installEventFilter (this);
     connect (mTwFD, SIGNAL (currentItemChanged (QTreeWidgetItem *, QTreeWidgetItem *)),
@@ -1312,5 +1311,5 @@
     /* Convert the QTreeWidgetItem to a MediaItem if it is valid. */
     MediaItem *item = 0;
-    if (aItem && aItem->type() == QITreeWidget::BasicItemType)
+    if (aItem && aItem->type() == MediaItem::MediaItemType)
         item = static_cast <MediaItem*> (aItem);
     return item;
