Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp	(revision 83710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp	(revision 83719)
@@ -22,5 +22,4 @@
 /* GUI includes: */
 #include "UIBootOrderEditor.h"
-#include "UICloudMachine.h"
 #include "UIConverter.h"
 #include "UIDetailsGenerator.h"
@@ -31,8 +30,15 @@
 #include "COMEnums.h"
 #include "CAudioAdapter.h"
+#include "CBooleanFormValue.h"
+#include "CChoiceFormValue.h"
+#include "CCloudMachine.h"
+#include "CForm.h"
+#include "CFormValue.h"
 #include "CGraphicsAdapter.h"
 #include "CMachine.h"
 #include "CMediumAttachment.h"
 #include "CNetworkAdapter.h"
+#include "CProgress.h"
+#include "CRangedIntegerFormValue.h"
 #include "CRecordingScreenSettings.h"
 #include "CRecordingSettings.h"
@@ -40,4 +46,5 @@
 #include "CSharedFolder.h"
 #include "CStorageController.h"
+#include "CStringFormValue.h"
 #include "CSystemProperties.h"
 #include "CUSBController.h"
@@ -45,4 +52,8 @@
 #include "CUSBDeviceFilters.h"
 #include "CVRDEServer.h"
+
+/* VirtualBox interface declarations: */
+#include <VBox/com/VirtualBox.h>
+
 
 UITextTable UIDetailsGenerator::generateMachineInformationGeneral(CMachine &comMachine,
@@ -123,36 +134,73 @@
 }
 
-UITextTable UIDetailsGenerator::generateMachineInformationGeneral(UICloudMachine &guiCloudMachine,
-                                                                  const UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral &fOptions)
-{
-    UITextTable table;
-
-    if (guiCloudMachine.isNull())
-        return table;
-
-    if (!guiCloudMachine.accessible())
-    {
-        table << UITextTableLine(QApplication::translate("UIDetails", "Information Inaccessible", "details"), QString());
-        return table;
-    }
-
-    /* Name: */
-    if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_Name)
-        table << UITextTableLine(QApplication::translate("UIDetails", "Name", "details (general)"),
-                                 guiCloudMachine.instanceName());
-
-    /* Operating system: */
-    if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_OS)
-        table << UITextTableLine(QApplication::translate("UIDetails", "Operating System", "details (general)"),
-                                 uiCommon().vmGuestOSTypeDescription(guiCloudMachine.osType()));
-
-    /* Domain: */
-    if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_Location)
-    {
-        const QString strDomain = guiCloudMachine.domain();
-        const QString strResult = !strDomain.isEmpty()
-                                ? strDomain
-                                : QApplication::translate("UIDetails", "Checking ...", "details");
-        table << UITextTableLine(QApplication::translate("UIDetails", "Domain", "details (general)"), strResult);
+UITextTable UIDetailsGenerator::generateMachineInformationGeneral(CCloudMachine &comCloudMachine,
+                                                                  const UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral &)
+{
+    UITextTable table;
+
+    if (comCloudMachine.isNull())
+        return table;
+
+    if (!comCloudMachine.GetAccessible())
+    {
+        table << UITextTableLine(QApplication::translate("UIDetails", "Information Inaccessible", "details"), QString());
+        return table;
+    }
+
+    // WORKAROUND:
+    // While we are waiting for GetDetailsForm implementation we will be using GetSettingsForm.
+    // This requires to wait for progress to complete and handle out all possible value types.
+    CForm comForm;
+    CProgress comProgress = comCloudMachine.GetSettingsForm(comForm);
+    /* Ignore cloud machine errors: */
+    if (comCloudMachine.isOk())
+    {
+        /* Wait for progress to complete: */
+        comProgress.WaitForCompletion(-1);
+        /* Ignore progress errors: */
+        if (comProgress.isOk() && comProgress.GetResultCode() == 0)
+        {
+            /* For each form value: */
+            QVector<CFormValue> values = comForm.GetValues();
+            foreach (const CFormValue &comIteratedValue, values)
+            {
+                /* Handle possible value type: */
+                switch (comIteratedValue.GetType())
+                {
+                    case KFormValueType_Boolean:
+                    {
+                        CBooleanFormValue comValue(comIteratedValue);
+                        const bool fBool = comValue.GetSelected();
+                        table << UITextTableLine(comValue.GetLabel(),
+                                                 fBool ? QApplication::translate("UIDetails", "Enabled", "details (cloud value)")
+                                                       : QApplication::translate("UIDetails", "Disabled", "details (cloud value)"));
+                        break;
+                    }
+                    case KFormValueType_String:
+                    {
+                        CStringFormValue comValue(comIteratedValue);
+                        table << UITextTableLine(comValue.GetLabel(), comValue.GetString());
+                        break;
+                    }
+                    case KFormValueType_Choice:
+                    {
+                        CChoiceFormValue comValue(comIteratedValue);
+                        const QVector<QString> possibleValues = comValue.GetValues();
+                        const int iCurrentIndex = comValue.GetSelectedIndex();
+                        table << UITextTableLine(comValue.GetLabel(), possibleValues.at(iCurrentIndex));
+                        break;
+                    }
+                    case KFormValueType_RangedInteger:
+                    {
+                        CRangedIntegerFormValue comValue(comIteratedValue);
+                        table << UITextTableLine(comValue.GetLabel(),
+                                                 QString("%1 %2").arg(comValue.GetInteger()).arg(comValue.GetSuffix()));
+                        break;
+                    }
+                    default:
+                        break;
+                }
+            }
+        }
     }
 
@@ -279,60 +327,4 @@
             table << UITextTableLine(QApplication::translate("UIDetails", "Acceleration", "details (system)"),
                                      acceleration.join(", "));
-    }
-
-    return table;
-}
-
-UITextTable UIDetailsGenerator::generateMachineInformationSystem(UICloudMachine &guiCloudMachine,
-                                                                 const UIExtraDataMetaDefs::DetailsElementOptionTypeSystem &fOptions)
-{
-    UITextTable table;
-
-    if (guiCloudMachine.isNull())
-        return table;
-
-    if (!guiCloudMachine.accessible())
-    {
-        table << UITextTableLine(QApplication::translate("UIDetails", "Information Inaccessible", "details"), QString());
-        return table;
-    }
-
-    /* Shape: */
-    {
-        const QString strShape = guiCloudMachine.shape();
-        const QString strResult = !strShape.isEmpty()
-                                ? strShape
-                                : QApplication::translate("UIDetails", "Checking ...", "details");
-        table << UITextTableLine(QApplication::translate("UIDetails", "Shape", "details (system)"), strResult);
-    }
-
-    /* Base memory: */
-    if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_RAM)
-    {
-        const int iMemorySize = guiCloudMachine.memorySize();
-        const QString strResult = iMemorySize > 0
-                                ? QApplication::translate("UIDetails", "%1 MB").arg(iMemorySize)
-                                : QApplication::translate("UIDetails", "Checking ...", "details");
-        table << UITextTableLine(QApplication::translate("UIDetails", "Base Memory", "details (system)"), strResult);
-    }
-
-    /* Processors: */
-    if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_CPUCount)
-    {
-        const int cCpuCount = guiCloudMachine.cpuCount();
-        const QString strResult = cCpuCount > 0
-                                ? QString::number(cCpuCount)
-                                : QApplication::translate("UIDetails", "Checking ...", "details");
-        table << UITextTableLine(QApplication::translate("UIDetails", "Processors", "details (system)"), strResult);
-    }
-
-    /* Booting firmware: */
-    if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_Firmware)
-    {
-        const QString strBottingFirmware = guiCloudMachine.bootingFirmware();
-        const QString strResult = !strBottingFirmware.isEmpty()
-                                ? strBottingFirmware
-                                : QApplication::translate("UIDetails", "Checking ...", "details");
-        table << UITextTableLine(QApplication::translate("UIDetails", "Booting Firmware", "details (system)"), strResult);
     }
 
@@ -559,32 +551,4 @@
     if (table.isEmpty())
         table << UITextTableLine(QApplication::translate("UIDetails", "Not Attached", "details (storage)"), QString());
-
-    return table;
-}
-
-UITextTable UIDetailsGenerator::generateMachineInformationStorage(UICloudMachine &guiCloudMachine,
-                                                                  const UIExtraDataMetaDefs::DetailsElementOptionTypeStorage &fOptions)
-{
-    UITextTable table;
-
-    if (guiCloudMachine.isNull())
-        return table;
-
-    if (!guiCloudMachine.accessible())
-    {
-        table << UITextTableLine(QApplication::translate("UIDetails", "Information Inaccessible", "details"), QString());
-        return table;
-    }
-
-    /* Image: */
-    if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeStorage_HardDisks)
-    {
-        const QString strImageName = guiCloudMachine.imageName();
-        const QString strImageSize = guiCloudMachine.imageSize();
-        const QString strResult = !strImageName.isEmpty() && !strImageSize.isEmpty()
-                                ? QString("%1 (%2)").arg(strImageName, strImageSize)
-                                : QApplication::translate("UIDetails", "Checking ...", "details");
-        table << UITextTableLine(QApplication::translate("UIDetails", "Image", "details (storage)"), strResult);
-    }
 
     return table;
Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.h	(revision 83710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.h	(revision 83719)
@@ -27,5 +27,5 @@
 
 /* Forward declarations: */
-class UICloudMachine;
+class CCloudMachine;
 class CMachine;
 
@@ -36,11 +36,8 @@
                                                                        const UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral &fOptions);
 
-    SHARED_LIBRARY_STUFF UITextTable generateMachineInformationGeneral(UICloudMachine &guiCloudMachine,
+    SHARED_LIBRARY_STUFF UITextTable generateMachineInformationGeneral(CCloudMachine &comCloudMachine,
                                                                        const UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral &fOptions);
 
     SHARED_LIBRARY_STUFF UITextTable generateMachineInformationSystem(CMachine &comMachine,
-                                                                      const UIExtraDataMetaDefs::DetailsElementOptionTypeSystem &fOptions);
-
-    SHARED_LIBRARY_STUFF UITextTable generateMachineInformationSystem(UICloudMachine &guiCloudMachine,
                                                                       const UIExtraDataMetaDefs::DetailsElementOptionTypeSystem &fOptions);
 
@@ -51,7 +48,4 @@
                                                                        const UIExtraDataMetaDefs::DetailsElementOptionTypeStorage &fOptions,
                                                                        bool fLink = true);
-
-    SHARED_LIBRARY_STUFF UITextTable generateMachineInformationStorage(UICloudMachine &guiCloudMachine,
-                                                                       const UIExtraDataMetaDefs::DetailsElementOptionTypeStorage &fOptions);
 
     SHARED_LIBRARY_STUFF UITextTable generateMachineInformationAudio(CMachine &comMachine,
Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp	(revision 83710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp	(revision 83719)
@@ -305,5 +305,5 @@
 }
 
-const UICloudMachine &UIDetailsElement::cloudMachine()
+const CCloudMachine &UIDetailsElement::cloudMachine()
 {
     return m_pSet->cloudMachine();
Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.h	(revision 83710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.h	(revision 83719)
@@ -34,8 +34,8 @@
 class QStateMachine;
 class QTextLayout;
-class UICloudMachine;
 class UIDetailsSet;
 class UIGraphicsRotatorButton;
 class UIGraphicsTextPane;
+class CCloudMachine;
 class CMachine;
 
@@ -161,5 +161,5 @@
         const CMachine &machine();
         /** Returns cached cloud machine reference. */
-        const UICloudMachine &cloudMachine();
+        const CCloudMachine &cloudMachine();
 
         /** Returns whether element is of local type. */
Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp	(revision 83710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp	(revision 83719)
@@ -22,5 +22,4 @@
 
 /* GUI includes: */
-#include "UICloudMachine.h"
 #include "UICommon.h"
 #include "UIConverter.h"
@@ -38,4 +37,5 @@
 #include "COMEnums.h"
 #include "CAudioAdapter.h"
+#include "CCloudMachine.h"
 #include "CMachine.h"
 #include "CMedium.h"
@@ -60,9 +60,9 @@
 }
 
-UIDetailsUpdateTask::UIDetailsUpdateTask(const UICloudMachine &guiCloudMachine)
+UIDetailsUpdateTask::UIDetailsUpdateTask(const CCloudMachine &comCloudMachine)
     : UITask(UITask::Type_DetailsPopulation)
 {
     /* Store cloud machine as property: */
-    setProperty("cloudMachine", QVariant::fromValue(guiCloudMachine));
+    setProperty("cloudMachine", QVariant::fromValue(comCloudMachine));
 }
 
@@ -246,10 +246,10 @@
 {
     /* Acquire corresponding machine: */
-    UICloudMachine guiCloudMachine = property("cloudMachine").value<UICloudMachine>();
-    if (guiCloudMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationGeneral(guiCloudMachine, m_fOptions);
+    CCloudMachine comCloudMachine = property("cloudMachine").value<CCloudMachine>();
+    if (comCloudMachine.isNull())
+        return;
+
+    /* Generate details table: */
+    UITextTable table = UIDetailsGenerator::generateMachineInformationGeneral(comCloudMachine, m_fOptions);
     setProperty("table", QVariant::fromValue(table));
 }
@@ -275,21 +275,7 @@
 }
 
-void UIDetailsUpdateTaskSystemCloud::run()
-{
-    /* Acquire corresponding machine: */
-    UICloudMachine guiCloudMachine = property("cloudMachine").value<UICloudMachine>();
-    if (guiCloudMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationSystem(guiCloudMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
-}
-
 UITask *UIDetailsElementSystem::createUpdateTask()
 {
-    return   isLocal()
-           ? static_cast<UITask*>(new UIDetailsUpdateTaskSystem(machine(), model()->optionsSystem()))
-           : static_cast<UITask*>(new UIDetailsUpdateTaskSystemCloud(cloudMachine(), model()->optionsSystem()));
+    return new UIDetailsUpdateTaskSystem(machine(), model()->optionsSystem());
 }
 
@@ -325,21 +311,7 @@
 }
 
-void UIDetailsUpdateTaskStorageCloud::run()
-{
-    /* Acquire corresponding machine: */
-    UICloudMachine guiCloudMachine = property("cloudMachine").value<UICloudMachine>();
-    if (guiCloudMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationStorage(guiCloudMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
-}
-
 UITask *UIDetailsElementStorage::createUpdateTask()
 {
-    return   isLocal()
-           ? static_cast<UITask*>(new UIDetailsUpdateTaskStorage(machine(), model()->optionsStorage()))
-           : static_cast<UITask*>(new UIDetailsUpdateTaskStorageCloud(cloudMachine(), model()->optionsStorage()));
+    return new UIDetailsUpdateTaskStorage(machine(), model()->optionsStorage());
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.h	(revision 83710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.h	(revision 83719)
@@ -40,6 +40,6 @@
     /** Constructs update task taking @a comMachine as data. */
     UIDetailsUpdateTask(const CMachine &comMachine);
-    /** Constructs update task taking @a guiCloudMachine as data. */
-    UIDetailsUpdateTask(const UICloudMachine &guiCloudMachine);
+    /** Constructs update task taking @a comCloudMachine as data. */
+    UIDetailsUpdateTask(const CCloudMachine &comCloudMachine);
 };
 
@@ -145,7 +145,7 @@
 public:
 
-    /** Constructs update task passing @a guiCloudMachine to the base-class. */
-    UIDetailsUpdateTaskGeneralCloud(const UICloudMachine &guiCloudMachine, UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral fOptions)
-        : UIDetailsUpdateTask(guiCloudMachine), m_fOptions(fOptions) {}
+    /** Constructs update task passing @a comCloudMachine to the base-class. */
+    UIDetailsUpdateTaskGeneralCloud(const CCloudMachine &comCloudMachine, UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral fOptions)
+        : UIDetailsUpdateTask(comCloudMachine), m_fOptions(fOptions) {}
 
 private:
@@ -197,24 +197,4 @@
 };
 
-/** UITask extension used as update task for the details-element type 'System' of cloud VM. */
-class UIDetailsUpdateTaskSystemCloud : public UIDetailsUpdateTask
-{
-    Q_OBJECT;
-
-public:
-
-    /** Constructs update task passing @a guiCloudMachine to the base-class. */
-    UIDetailsUpdateTaskSystemCloud(const UICloudMachine &guiCloudMachine, UIExtraDataMetaDefs::DetailsElementOptionTypeSystem fOptions)
-        : UIDetailsUpdateTask(guiCloudMachine), m_fOptions(fOptions) {}
-
-private:
-
-    /** Contains update task body. */
-    void run();
-
-    /** Holds the options. */
-    UIExtraDataMetaDefs::DetailsElementOptionTypeSystem m_fOptions;
-};
-
 /** UIDetailsElementInterface extension for the details-element type 'System'. */
 class UIDetailsElementSystem : public UIDetailsElementInterface
@@ -295,24 +275,4 @@
 };
 
-/** UITask extension used as update task for the details-element type 'Storage' of cloud VM. */
-class UIDetailsUpdateTaskStorageCloud : public UIDetailsUpdateTask
-{
-    Q_OBJECT;
-
-public:
-
-    /** Constructs update task passing @a guiCloudMachine to the base-class. */
-    UIDetailsUpdateTaskStorageCloud(const UICloudMachine &guiCloudMachine, UIExtraDataMetaDefs::DetailsElementOptionTypeStorage fOptions)
-        : UIDetailsUpdateTask(guiCloudMachine), m_fOptions(fOptions) {}
-
-private:
-
-    /** Contains update task body. */
-    void run();
-
-    /** Holds the options. */
-    UIExtraDataMetaDefs::DetailsElementOptionTypeStorage m_fOptions;
-};
-
 /** UIDetailsElementInterface extension for the details-element type 'Storage'. */
 class UIDetailsElementStorage : public UIDetailsElementInterface
Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.cpp	(revision 83710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.cpp	(revision 83719)
@@ -85,5 +85,5 @@
             {
                 /* Get local machine: */
-                m_machine = m_pMachineItem->toLocal()->machine();
+                m_comMachine = m_pMachineItem->toLocal()->machine();
 
                 /* Compose a list of types to build: */
@@ -97,6 +97,6 @@
 
                 /* Take into account USB controller restrictions: */
-                const CUSBDeviceFilters &filters = m_machine.GetUSBDeviceFilters();
-                if (filters.isNull() || !m_machine.GetUSBProxyAvailable())
+                const CUSBDeviceFilters &filters = m_comMachine.GetUSBDeviceFilters();
+                if (filters.isNull() || !m_comMachine.GetUSBProxyAvailable())
                     m_settings.remove(DetailsElementType_USB);
 
@@ -106,8 +106,8 @@
             {
                 /* Get cloud machine: */
-//                m_cloudMachine = m_pMachineItem->toCloud()->machine();
+                m_comCloudMachine = m_pMachineItem->toCloud()->machine();
 
                 /* Compose a list of types to build: */
-                types << DetailsElementType_General << DetailsElementType_System << DetailsElementType_Storage;
+                types << DetailsElementType_General;
 
                 break;
@@ -565,5 +565,5 @@
 {
     /* Is this our VM changed? */
-    if (m_machine.GetId() != uId)
+    if (m_comMachine.GetId() != uId)
         return;
 
@@ -575,5 +575,5 @@
 {
     /* Is this our VM changed? */
-    if (m_machine.GetId() != uId)
+    if (m_comMachine.GetId() != uId)
         return;
 
@@ -587,5 +587,5 @@
     const UIMedium guiMedium = uiCommon().medium(uId);
     if (   guiMedium.isNull()
-        || !guiMedium.machineIds().contains(m_machine.GetId()))
+        || !guiMedium.machineIds().contains(m_comMachine.GetId()))
         return;
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.h	(revision 83710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.h	(revision 83719)
@@ -23,5 +23,4 @@
 
 /* GUI includes: */
-#include "UICloudMachine.h"
 #include "UIDetailsItem.h"
 #include "UIExtraDataDefs.h"
@@ -30,4 +29,5 @@
 /* COM includes: */
 #include "COMEnums.h"
+#include "CCloudMachine.h"
 #include "CMachine.h"
 
@@ -61,7 +61,7 @@
 
         /** Returns cached machine. */
-        const CMachine &machine() const { return m_machine; }
+        const CMachine &machine() const { return m_comMachine; }
         /** Returns cached cloud machine. */
-        const UICloudMachine &cloudMachine() const { return m_cloudMachine; }
+        const CCloudMachine &cloudMachine() const { return m_comCloudMachine; }
 
         /** Returns whether set is of local type. */
@@ -204,7 +204,7 @@
 
         /** Holds the machine reference. */
-        CMachine        m_machine;
+        CMachine       m_comMachine;
         /** Holds the cloud machine reference. */
-        UICloudMachine  m_cloudMachine;
+        CCloudMachine  m_comCloudMachine;
 
         /** Holds whether set is of local type. */
