Index: /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h	(revision 46683)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h	(revision 46684)
@@ -57,4 +57,5 @@
 template<> bool canConvert<StorageSlot>();
 template<> bool canConvert<DetailsElementType>();
+template<> bool canConvert<IndicatorType>();
 
 /* Declare COM canConvert specializations: */
@@ -87,4 +88,6 @@
 template<> QString toInternalString(const DetailsElementType &detailsElementType);
 template<> DetailsElementType fromInternalString<DetailsElementType>(const QString &strDetailsElementType);
+template<> QString toInternalString(const IndicatorType &indicatorType);
+template<> IndicatorType fromInternalString<IndicatorType>(const QString &strIndicatorType);
 
 /* Declare COM conversion specializations: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 46683)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 46684)
@@ -33,4 +33,5 @@
 template<> bool canConvert<StorageSlot>() { return true; }
 template<> bool canConvert<DetailsElementType>() { return true; }
+template<> bool canConvert<IndicatorType>() { return true; }
 
 /* QString <= StorageSlot: */
@@ -370,2 +371,48 @@
 }
 
+/* QString <= IndicatorType: */
+template<> QString toInternalString(const IndicatorType &indicatorType)
+{
+    QString strResult;
+    switch (indicatorType)
+    {
+        case IndicatorType_HardDisks:     strResult = "HardDisks"; break;
+        case IndicatorType_OpticalDisks:  strResult = "OpticalDisks"; break;
+        case IndicatorType_FloppyDisks:   strResult = "FloppyDisks"; break;
+        case IndicatorType_Network:       strResult = "Network"; break;
+        case IndicatorType_USB:           strResult = "USB"; break;
+        case IndicatorType_SharedFolders: strResult = "SharedFolders"; break;
+        case IndicatorType_VideoCapture:  strResult = "VideoCapture"; break;
+        case IndicatorType_Features:      strResult = "Features"; break;
+        case IndicatorType_Mouse:         strResult = "Mouse"; break;
+        case IndicatorType_Keyboard:      strResult = "Keyboard"; break;
+        default:
+        {
+            AssertMsgFailed(("No text for indicator type=%d", indicatorType));
+            break;
+        }
+    }
+    return strResult;
+}
+
+/* IndicatorType <= QString: */
+template<> IndicatorType fromInternalString<IndicatorType>(const QString &strIndicatorType)
+{
+    QHash<QString, IndicatorType> list;
+    list.insert("HardDisks",     IndicatorType_HardDisks);
+    list.insert("OpticalDisks",  IndicatorType_OpticalDisks);
+    list.insert("FloppyDisks",   IndicatorType_FloppyDisks);
+    list.insert("Network",       IndicatorType_Network);
+    list.insert("USB",           IndicatorType_USB);
+    list.insert("SharedFolders", IndicatorType_SharedFolders);
+    list.insert("VideoCapture",  IndicatorType_VideoCapture);
+    list.insert("Features",      IndicatorType_Features);
+    list.insert("Mouse",         IndicatorType_Mouse);
+    list.insert("Keyboard",      IndicatorType_Keyboard);
+    if (!list.contains(strIndicatorType))
+    {
+        AssertMsgFailed(("No value for '%s'", strIndicatorType.toAscii().constData()));
+    }
+    return list.value(strIndicatorType);
+}
+
