Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 51054)
@@ -25,4 +25,5 @@
 #include "VBoxGlobalSettings.h"
 #include "UIActionPool.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -196,4 +197,243 @@
 }
 
+#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
+bool UIExtraDataManager::shouldWeAllowApplicationUpdate() const
+{
+    /* Allow unless 'forbidden' flag is set: */
+    return !isFeatureAllowed(GUI_PreventApplicationUpdate);
+}
+#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
+
+bool UIExtraDataManager::shouldWeShowMachine(const QString &strID) const
+{
+    /* Show unless 'forbidden' flag is set: */
+    return !isFeatureAllowed(GUI_HideFromManager, strID);
+}
+
+bool UIExtraDataManager::shouldWeShowMachineDetails(const QString &strID) const
+{
+    /* Show unless 'forbidden' flag is set: */
+    return !isFeatureAllowed(GUI_HideDetails, strID);
+}
+
+bool UIExtraDataManager::shouldWeAllowMachineReconfiguration(const QString &strID) const
+{
+    /* Show unless 'forbidden' flag is set: */
+    return !isFeatureAllowed(GUI_PreventReconfiguration, strID);
+}
+
+bool UIExtraDataManager::shouldWeAllowMachineSnapshotOperations(const QString &strID) const
+{
+    /* Show unless 'forbidden' flag is set: */
+    return !isFeatureAllowed(GUI_PreventSnapshotOperations, strID);
+}
+
+bool UIExtraDataManager::shouldWeAutoMountGuestScreens(const QString &strID) const
+{
+    /* Show only if 'allowed' flag is set: */
+    return isFeatureAllowed(GUI_AutomountGuestScreens, strID);
+}
+
+RuntimeMenuType UIExtraDataManager::restrictedRuntimeMenuTypes(const QString &strID) const
+{
+    /* Prepare result: */
+    RuntimeMenuType result = RuntimeMenuType_Invalid;
+    /* Load restricted runtime-menu-types: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedRuntimeMenus, strID))
+    {
+        RuntimeMenuType value = gpConverter->fromInternalString<RuntimeMenuType>(strValue);
+        if (value != RuntimeMenuType_Invalid)
+            result = static_cast<RuntimeMenuType>(result | value);
+    }
+    /* Return result: */
+    return result;
+}
+
+#ifdef Q_WS_MAC
+RuntimeMenuApplicationActionType UIExtraDataManager::restrictedRuntimeMenuApplicationActionTypes(const QString &strID) const
+{
+    /* Prepare result: */
+    RuntimeMenuApplicationActionType result = RuntimeMenuApplicationActionType_Invalid;
+    /* Load restricted runtime-application-menu action-types: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedRuntimeApplicationMenuActions, strID))
+    {
+        RuntimeMenuApplicationActionType value = gpConverter->fromInternalString<RuntimeMenuApplicationActionType>(strValue);
+        if (value != RuntimeMenuApplicationActionType_Invalid)
+            result = static_cast<RuntimeMenuApplicationActionType>(result | value);
+    }
+    /* Return result: */
+    return result;
+}
+#endif /* Q_WS_MAC */
+
+RuntimeMenuMachineActionType UIExtraDataManager::restrictedRuntimeMenuMachineActionTypes(const QString &strID) const
+{
+    /* Prepare result: */
+    RuntimeMenuMachineActionType result = RuntimeMenuMachineActionType_Invalid;
+    /* Load restricted runtime-machine-menu action-types: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedRuntimeMachineMenuActions, strID))
+    {
+        RuntimeMenuMachineActionType value = gpConverter->fromInternalString<RuntimeMenuMachineActionType>(strValue);
+        if (value != RuntimeMenuMachineActionType_Invalid)
+            result = static_cast<RuntimeMenuMachineActionType>(result | value);
+    }
+    /* Return result: */
+    return result;
+}
+
+RuntimeMenuViewActionType UIExtraDataManager::restrictedRuntimeMenuViewActionTypes(const QString &strID) const
+{
+    /* Prepare result: */
+    RuntimeMenuViewActionType result = RuntimeMenuViewActionType_Invalid;
+    /* Load restricted runtime-view-menu action-types: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedRuntimeViewMenuActions, strID))
+    {
+        RuntimeMenuViewActionType value = gpConverter->fromInternalString<RuntimeMenuViewActionType>(strValue);
+        if (value != RuntimeMenuViewActionType_Invalid)
+            result = static_cast<RuntimeMenuViewActionType>(result | value);
+    }
+    /* Return result: */
+    return result;
+}
+
+RuntimeMenuDevicesActionType UIExtraDataManager::restrictedRuntimeMenuDevicesActionTypes(const QString &strID) const
+{
+    /* Prepare result: */
+    RuntimeMenuDevicesActionType result = RuntimeMenuDevicesActionType_Invalid;
+    /* Load restricted runtime-devices-menu action-types: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedRuntimeDevicesMenuActions, strID))
+    {
+        RuntimeMenuDevicesActionType value = gpConverter->fromInternalString<RuntimeMenuDevicesActionType>(strValue);
+        if (value != RuntimeMenuDevicesActionType_Invalid)
+            result = static_cast<RuntimeMenuDevicesActionType>(result | value);
+    }
+    /* Return result: */
+    return result;
+}
+
+#ifdef VBOX_WITH_DEBUGGER_GUI
+RuntimeMenuDebuggerActionType UIExtraDataManager::restrictedRuntimeMenuDebuggerActionTypes(const QString &strID) const
+{
+    /* Prepare result: */
+    RuntimeMenuDebuggerActionType result = RuntimeMenuDebuggerActionType_Invalid;
+    /* Load restricted runtime-debugger-menu action-types: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedRuntimeDebuggerMenuActions, strID))
+    {
+        RuntimeMenuDebuggerActionType value = gpConverter->fromInternalString<RuntimeMenuDebuggerActionType>(strValue);
+        if (value != RuntimeMenuDebuggerActionType_Invalid)
+            result = static_cast<RuntimeMenuDebuggerActionType>(result | value);
+    }
+    /* Return result: */
+    return result;
+}
+#endif /* VBOX_WITH_DEBUGGER_GUI */
+
+RuntimeMenuHelpActionType UIExtraDataManager::restrictedRuntimeMenuHelpActionTypes(const QString &strID) const
+{
+    /* Prepare result: */
+    RuntimeMenuHelpActionType result = RuntimeMenuHelpActionType_Invalid;
+    /* Load restricted runtime-help-menu action-types: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedRuntimeHelpMenuActions, strID))
+    {
+        RuntimeMenuHelpActionType value = gpConverter->fromInternalString<RuntimeMenuHelpActionType>(strValue);
+        if (value != RuntimeMenuHelpActionType_Invalid)
+            result = static_cast<RuntimeMenuHelpActionType>(result | value);
+    }
+    /* Return result: */
+    return result;
+}
+
+UIVisualStateType UIExtraDataManager::restrictedVisualStateTypes(const QString &strID) const
+{
+    /* Prepare result: */
+    UIVisualStateType result = UIVisualStateType_Invalid;
+    /* Load restricted visual-state-types: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedVisualStates, strID))
+    {
+        UIVisualStateType value = gpConverter->fromInternalString<UIVisualStateType>(strValue);
+        if (value != UIVisualStateType_Invalid)
+            result = static_cast<UIVisualStateType>(result | value);
+    }
+    /* Return result: */
+    return result;
+}
+
+MachineCloseAction UIExtraDataManager::defaultMachineCloseAction(const QString &strID) const
+{
+    return gpConverter->fromInternalString<MachineCloseAction>(extraDataString(GUI_DefaultCloseAction, strID));
+}
+
+MachineCloseAction UIExtraDataManager::restrictedMachineCloseActions(const QString &strID) const
+{
+    /* Prepare result: */
+    MachineCloseAction result = MachineCloseAction_Invalid;
+    /* Load restricted machine-close-actions: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedCloseActions, strID))
+    {
+        MachineCloseAction value = gpConverter->fromInternalString<MachineCloseAction>(strValue);
+        if (value != MachineCloseAction_Invalid)
+            result = static_cast<MachineCloseAction>(result | value);
+    }
+    /* Return result: */
+    return result;
+}
+
+QList<IndicatorType> UIExtraDataManager::restrictedStatusBarIndicators(const QString &strID) const
+{
+    /* Prepare result: */
+    QList<IndicatorType> result;
+    /* Load restricted status-bar-indicators: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedStatusBarIndicators, strID))
+    {
+        IndicatorType value = gpConverter->fromInternalString<IndicatorType>(strValue);
+        if (value != IndicatorType_Invalid)
+            result << value;
+    }
+    /* Return result: */
+    return result;
+}
+
+QList<GlobalSettingsPageType> UIExtraDataManager::restrictedGlobalSettingsPages() const
+{
+    /* Prepare result: */
+    QList<GlobalSettingsPageType> result;
+    /* Load restricted global-settings-pages: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedGlobalSettingsPages))
+    {
+        GlobalSettingsPageType value = gpConverter->fromInternalString<GlobalSettingsPageType>(strValue);
+        if (value != GlobalSettingsPageType_Invalid)
+            result << value;
+    }
+    /* Return result: */
+    return result;
+}
+
+QList<MachineSettingsPageType> UIExtraDataManager::restrictedMachineSettingsPages(const QString &strID) const
+{
+    /* Prepare result: */
+    QList<MachineSettingsPageType> result;
+    /* Load restricted machine-settings-pages: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedMachineSettingsPages, strID))
+    {
+        MachineSettingsPageType value = gpConverter->fromInternalString<MachineSettingsPageType>(strValue);
+        if (value != MachineSettingsPageType_Invalid)
+            result << value;
+    }
+    /* Return result: */
+    return result;
+}
+
+#ifndef Q_WS_MAC
+QStringList UIExtraDataManager::machineWindowIconNames(const QString &strID) const
+{
+    return extraDataStringList(GUI_MachineWindowIcons, strID);
+}
+#endif /* !Q_WS_MAC */
+
+GuruMeditationHandlerType UIExtraDataManager::guruMeditationHandlerType(const QString &strID) const
+{
+    return gpConverter->fromInternalString<GuruMeditationHandlerType>(extraDataString(GUI_GuruMeditationHandler, strID));
+}
+
 UIExtraDataManager::UIExtraDataManager()
     : m_pHandler(new UIExtraDataEventHandler(this))
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 51054)
@@ -21,4 +21,7 @@
 #include <QObject>
 #include <QMap>
+
+/* GUI includes: */
+#include "UIDefs.h"
 
 /* COM includes: */
@@ -64,4 +67,65 @@
     /** Static Extra-data Manager destructor. */
     static void destroy();
+
+#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
+    /** Returns whether we should allow Application Update. */
+    bool shouldWeAllowApplicationUpdate() const;
+#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
+
+    /** Returns whether we should show machine. */
+    bool shouldWeShowMachine(const QString &strID) const;
+    /** Returns whether we should show machine details. */
+    bool shouldWeShowMachineDetails(const QString &strID) const;
+
+    /** Returns whether we should allow machine reconfiguration. */
+    bool shouldWeAllowMachineReconfiguration(const QString &strID) const;
+    /** Returns whether we should allow machine snapshot operations. */
+    bool shouldWeAllowMachineSnapshotOperations(const QString &strID) const;
+
+    /** Returns whether we should automatically mount/unmount guest-screens. */
+    bool shouldWeAutoMountGuestScreens(const QString &strID) const;
+
+    /** Returns restricted Runtime UI menu types. */
+    RuntimeMenuType restrictedRuntimeMenuTypes(const QString &strID) const;
+#ifdef Q_WS_MAC
+    /** Mac OS X: Returns restricted Runtime UI action types for Application menu. */
+    RuntimeMenuApplicationActionType restrictedRuntimeMenuApplicationActionTypes(const QString &strID) const;
+#endif /* Q_WS_MAC */
+    /** Returns restricted Runtime UI action types for Machine menu. */
+    RuntimeMenuMachineActionType restrictedRuntimeMenuMachineActionTypes(const QString &strID) const;
+    /** Returns restricted Runtime UI action types for View menu. */
+    RuntimeMenuViewActionType restrictedRuntimeMenuViewActionTypes(const QString &strID) const;
+    /** Returns restricted Runtime UI action types for Devices menu. */
+    RuntimeMenuDevicesActionType restrictedRuntimeMenuDevicesActionTypes(const QString &strID) const;
+#ifdef VBOX_WITH_DEBUGGER_GUI
+    /** Returns restricted Runtime UI action types for Debugger menu. */
+    RuntimeMenuDebuggerActionType restrictedRuntimeMenuDebuggerActionTypes(const QString &strID) const;
+#endif /* VBOX_WITH_DEBUGGER_GUI */
+    /** Returns restricted Runtime UI action types for Help menu. */
+    RuntimeMenuHelpActionType restrictedRuntimeMenuHelpActionTypes(const QString &strID) const;
+
+    /** Returns restricted Runtime UI visual-state types. */
+    UIVisualStateType restrictedVisualStateTypes(const QString &strID) const;
+
+    /** Returns default machine close action. */
+    MachineCloseAction defaultMachineCloseAction(const QString &strID) const;
+    /** Returns restricted machine close actions. */
+    MachineCloseAction restrictedMachineCloseActions(const QString &strID) const;
+
+    /** Returns restricted Runtime UI status-bar indicators. */
+    QList<IndicatorType> restrictedStatusBarIndicators(const QString &strID) const;
+
+    /** Returns global settings pages. */
+    QList<GlobalSettingsPageType> restrictedGlobalSettingsPages() const;
+    /** Returns machine settings pages. */
+    QList<MachineSettingsPageType> restrictedMachineSettingsPages(const QString &strID) const;
+
+#ifndef Q_WS_MAC
+    /** Except Mac OS X: Returns redefined machine-window icon names. */
+    QStringList machineWindowIconNames(const QString &strID) const;
+#endif /* !Q_WS_MAC */
+
+    /** Returns redefined guru-meditation handler type. */
+    GuruMeditationHandlerType guruMeditationHandlerType(const QString &strID) const;
 
 private:
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 51054)
@@ -3694,410 +3694,4 @@
 }
 
-/* static */
-bool VBoxGlobal::isApprovedByExtraData(CVirtualBox &vbox, const QString &strExtraDataKey)
-{
-    /* Load corresponding extra-data value: */
-    QString strExtraDataValue(vbox.GetExtraData(strExtraDataKey));
-
-    /* 'false' if value was not set: */
-    if (strExtraDataValue.isEmpty())
-        return false;
-
-    /* Handle particular values: */
-    return    strExtraDataValue.compare("true", Qt::CaseInsensitive) == 0
-           || strExtraDataValue.compare("yes", Qt::CaseInsensitive) == 0
-           || strExtraDataValue.compare("on", Qt::CaseInsensitive) == 0
-           || strExtraDataValue == "1";
-}
-
-/* static */
-bool VBoxGlobal::isApprovedByExtraData(CMachine &machine, const QString &strExtraDataKey)
-{
-    /* Load corresponding extra-data value: */
-    QString strExtraDataValue(machine.GetExtraData(strExtraDataKey));
-
-    /* 'false' if value was not set: */
-    if (strExtraDataValue.isEmpty())
-        return false;
-
-    /* Handle particular values: */
-    return    strExtraDataValue.compare("true", Qt::CaseInsensitive) == 0
-           || strExtraDataValue.compare("yes", Qt::CaseInsensitive) == 0
-           || strExtraDataValue.compare("on", Qt::CaseInsensitive) == 0
-           || strExtraDataValue == "1";
-}
-
-#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
-/* static */
-bool VBoxGlobal::shouldWeAllowApplicationUpdate(CVirtualBox &vbox)
-{
-    /* 'true' if disabling is not approved by the extra-data: */
-    return !isApprovedByExtraData(vbox, GUI_PreventApplicationUpdate);
-}
-#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
-
-/* static */
-bool VBoxGlobal::shouldWeShowMachine(CMachine &machine)
-{
-    /* 'false' for null machines: */
-    if (machine.isNull())
-        return false;
-
-    /* 'true' for inaccessible machines,
-     * because we can't verify anything in that case: */
-    if (!machine.GetAccessible())
-        return true;
-
-    /* 'true' if hiding is not approved by the extra-data: */
-    return !isApprovedByExtraData(machine, GUI_HideFromManager);
-}
-
-/* static */
-bool VBoxGlobal::shouldWeAllowMachineReconfiguration(CMachine &machine,
-                                                     bool fIncludingMachineGeneralCheck /* = false*/,
-                                                     bool fIncludingMachineStateCheck /* = false*/)
-{
-    /* Should we perform machine general check? */
-    if (fIncludingMachineGeneralCheck)
-    {
-        /* 'false' for null machines: */
-        if (machine.isNull())
-            return false;
-
-        /* 'false' for inaccessible machines,
-         * because we can't configure anything in that case: */
-        if (!machine.GetAccessible())
-            return true;
-    }
-
-    /* Should we perform machine state check? */
-    if (fIncludingMachineStateCheck)
-    {
-        /* 'false' for machines in [stuck] state: */
-        if (machine.GetState() == KMachineState_Stuck)
-            return false;
-    }
-
-    /* 'true' if reconfiguration is not restricted by the extra-data: */
-    return !isApprovedByExtraData(machine, GUI_PreventReconfiguration);
-}
-
-/* static */
-bool VBoxGlobal::shouldWeShowDetails(CMachine &machine,
-                                     bool fIncludingMachineGeneralCheck /* = false*/)
-{
-    /* Should we perform machine general check? */
-    if (fIncludingMachineGeneralCheck)
-    {
-        /* 'false' for null machines: */
-        if (machine.isNull())
-            return false;
-
-        /* 'true' for inaccessible machines,
-         * because we can't verify anything in that case: */
-        if (!machine.GetAccessible())
-            return true;
-    }
-
-    /* 'true' if hiding is not approved by the extra-data: */
-    return !isApprovedByExtraData(machine, GUI_HideDetails);
-}
-
-/* static */
-bool VBoxGlobal::shouldWeAutoMountGuestScreens(CMachine &machine,
-                                               bool fIncludingSanityCheck /* = true*/)
-{
-    if (fIncludingSanityCheck)
-    {
-        /* 'false' for null machines,
-         * there is nothing to start anyway: */
-        if (machine.isNull())
-            return false;
-
-        /* 'false' for inaccessible machines,
-         * we can't start them anyway: */
-        if (!machine.GetAccessible())
-            return false;
-    }
-
-    /* 'true' if guest-screen auto-mounting approved by the extra-data: */
-    return isApprovedByExtraData(machine, GUI_AutomountGuestScreens);
-}
-
-/* static */
-bool VBoxGlobal::shouldWeAllowSnapshotOperations(CMachine &machine,
-                                                 bool fIncludingSanityCheck /* = true*/)
-{
-    if (fIncludingSanityCheck)
-    {
-        /* 'false' for null machines,
-         * we can't operate snapshot in that case: */
-        if (machine.isNull())
-            return false;
-
-        /* 'false' for inaccessible machines,
-         * we can't operate snapshot in that case: */
-        if (!machine.GetAccessible())
-            return false;
-    }
-
-    /* 'true' if snapshot operations are not restricted by the extra-data: */
-    return !isApprovedByExtraData(machine, GUI_PreventSnapshotOperations);
-}
-
-/** Returns default machine close action for passed @a machine. */
-MachineCloseAction VBoxGlobal::defaultMachineCloseAction(CMachine &machine)
-{
-    return gpConverter->fromInternalString<MachineCloseAction>(machine.GetExtraData(GUI_DefaultCloseAction));
-}
-
-/* static */
-RuntimeMenuType VBoxGlobal::restrictedRuntimeMenuTypes(CMachine &machine)
-{
-    /* Prepare result: */
-    RuntimeMenuType result = RuntimeMenuType_Invalid;
-    /* Load restricted runtime-menu-types: */
-    QString strList(machine.GetExtraData(GUI_RestrictedRuntimeMenus));
-    QStringList list = strList.split(',');
-    /* Convert list into appropriate values: */
-    foreach (const QString &strValue, list)
-    {
-        RuntimeMenuType value = gpConverter->fromInternalString<RuntimeMenuType>(strValue);
-        if (value != RuntimeMenuType_Invalid)
-            result = static_cast<RuntimeMenuType>(result | value);
-    }
-    /* Return result: */
-    return result;
-}
-
-#ifdef Q_WS_MAC
-/* static */
-RuntimeMenuApplicationActionType VBoxGlobal::restrictedRuntimeMenuApplicationActionTypes(CMachine &machine)
-{
-    /* Prepare result: */
-    RuntimeMenuApplicationActionType result = RuntimeMenuApplicationActionType_Invalid;
-    /* Load restricted runtime-application-menu action-types: */
-    QString strList(machine.GetExtraData(GUI_RestrictedRuntimeApplicationMenuActions));
-    QStringList list = strList.split(',');
-    /* Convert list into appropriate values: */
-    foreach (const QString &strValue, list)
-    {
-        RuntimeMenuApplicationActionType value = gpConverter->fromInternalString<RuntimeMenuApplicationActionType>(strValue);
-        if (value != RuntimeMenuApplicationActionType_Invalid)
-            result = static_cast<RuntimeMenuApplicationActionType>(result | value);
-    }
-    /* Return result: */
-    return result;
-}
-#endif /* Q_WS_MAC */
-
-/* static */
-RuntimeMenuMachineActionType VBoxGlobal::restrictedRuntimeMenuMachineActionTypes(CMachine &machine)
-{
-    /* Prepare result: */
-    RuntimeMenuMachineActionType result = RuntimeMenuMachineActionType_Invalid;
-    /* Load restricted runtime-machine-menu action-types: */
-    QString strList(machine.GetExtraData(GUI_RestrictedRuntimeMachineMenuActions));
-    QStringList list = strList.split(',');
-    /* Convert list into appropriate values: */
-    foreach (const QString &strValue, list)
-    {
-        RuntimeMenuMachineActionType value = gpConverter->fromInternalString<RuntimeMenuMachineActionType>(strValue);
-        if (value != RuntimeMenuMachineActionType_Invalid)
-            result = static_cast<RuntimeMenuMachineActionType>(result | value);
-    }
-    /* Return result: */
-    return result;
-}
-
-/* static */
-RuntimeMenuViewActionType VBoxGlobal::restrictedRuntimeMenuViewActionTypes(CMachine &machine)
-{
-    /* Prepare result: */
-    RuntimeMenuViewActionType result = RuntimeMenuViewActionType_Invalid;
-    /* Load restricted runtime-view-menu action-types: */
-    QString strList(machine.GetExtraData(GUI_RestrictedRuntimeViewMenuActions));
-    QStringList list = strList.split(',');
-    /* Convert list into appropriate values: */
-    foreach (const QString &strValue, list)
-    {
-        RuntimeMenuViewActionType value = gpConverter->fromInternalString<RuntimeMenuViewActionType>(strValue);
-        if (value != RuntimeMenuViewActionType_Invalid)
-            result = static_cast<RuntimeMenuViewActionType>(result | value);
-    }
-    /* Return result: */
-    return result;
-}
-
-/* static */
-RuntimeMenuDevicesActionType VBoxGlobal::restrictedRuntimeMenuDevicesActionTypes(CMachine &machine)
-{
-    /* Prepare result: */
-    RuntimeMenuDevicesActionType result = RuntimeMenuDevicesActionType_Invalid;
-    /* Load restricted runtime-devices-menu action-types: */
-    QString strList(machine.GetExtraData(GUI_RestrictedRuntimeDevicesMenuActions));
-    QStringList list = strList.split(',');
-    /* Convert list into appropriate values: */
-    foreach (const QString &strValue, list)
-    {
-        RuntimeMenuDevicesActionType value = gpConverter->fromInternalString<RuntimeMenuDevicesActionType>(strValue);
-        if (value != RuntimeMenuDevicesActionType_Invalid)
-            result = static_cast<RuntimeMenuDevicesActionType>(result | value);
-    }
-    /* Return result: */
-    return result;
-}
-
-#ifdef VBOX_WITH_DEBUGGER_GUI
-/* static */
-RuntimeMenuDebuggerActionType VBoxGlobal::restrictedRuntimeMenuDebuggerActionTypes(CMachine &machine)
-{
-    /* Prepare result: */
-    RuntimeMenuDebuggerActionType result = RuntimeMenuDebuggerActionType_Invalid;
-    /* Load restricted runtime-debugger-menu action-types: */
-    QString strList(machine.GetExtraData(GUI_RestrictedRuntimeDebuggerMenuActions));
-    QStringList list = strList.split(',');
-    /* Convert list into appropriate values: */
-    foreach (const QString &strValue, list)
-    {
-        RuntimeMenuDebuggerActionType value = gpConverter->fromInternalString<RuntimeMenuDebuggerActionType>(strValue);
-        if (value != RuntimeMenuDebuggerActionType_Invalid)
-            result = static_cast<RuntimeMenuDebuggerActionType>(result | value);
-    }
-    /* Return result: */
-    return result;
-}
-#endif /* VBOX_WITH_DEBUGGER_GUI */
-
-/* static */
-RuntimeMenuHelpActionType VBoxGlobal::restrictedRuntimeMenuHelpActionTypes(CMachine &machine)
-{
-    /* Prepare result: */
-    RuntimeMenuHelpActionType result = RuntimeMenuHelpActionType_Invalid;
-    /* Load restricted runtime-help-menu action-types: */
-    QString strList(machine.GetExtraData(GUI_RestrictedRuntimeHelpMenuActions));
-    QStringList list = strList.split(',');
-    /* Convert list into appropriate values: */
-    foreach (const QString &strValue, list)
-    {
-        RuntimeMenuHelpActionType value = gpConverter->fromInternalString<RuntimeMenuHelpActionType>(strValue);
-        if (value != RuntimeMenuHelpActionType_Invalid)
-            result = static_cast<RuntimeMenuHelpActionType>(result | value);
-    }
-    /* Return result: */
-    return result;
-}
-
-/* static */
-UIVisualStateType VBoxGlobal::restrictedVisualStateTypes(CMachine &machine)
-{
-    /* Prepare result: */
-    UIVisualStateType result = UIVisualStateType_Invalid;
-    /* Load restricted visual-state-types: */
-    QString strList(machine.GetExtraData(GUI_RestrictedVisualStates));
-    QStringList list = strList.split(',');
-    /* Convert list into appropriate values: */
-    foreach (const QString &strValue, list)
-    {
-        UIVisualStateType value = gpConverter->fromInternalString<UIVisualStateType>(strValue);
-        if (value != UIVisualStateType_Invalid)
-            result = static_cast<UIVisualStateType>(result | value);
-    }
-    /* Return result: */
-    return result;
-}
-
-/* static */
-QList<IndicatorType> VBoxGlobal::restrictedStatusBarIndicators(CMachine &machine)
-{
-    /* Prepare result: */
-    QList<IndicatorType> result;
-    /* Load restricted status-bar-indicators: */
-    QString strList(machine.GetExtraData(GUI_RestrictedStatusBarIndicators));
-    QStringList list = strList.split(',');
-    /* Convert list into appropriate values: */
-    foreach (const QString &strValue, list)
-    {
-        IndicatorType value = gpConverter->fromInternalString<IndicatorType>(strValue);
-        if (value != IndicatorType_Invalid)
-            result << value;
-    }
-    /* Return result: */
-    return result;
-}
-
-/** Returns merged restricted machine close actions for passed @a machine. */
-MachineCloseAction VBoxGlobal::restrictedMachineCloseActions(CMachine &machine)
-{
-    /* Prepare result: */
-    MachineCloseAction result = MachineCloseAction_Invalid;
-    /* Load restricted machine-close-actions: */
-    QString strList(machine.GetExtraData(GUI_RestrictedCloseActions));
-    QStringList list = strList.split(',');
-    /* Convert list into appropriate values: */
-    foreach (const QString &strValue, list)
-    {
-        MachineCloseAction value = gpConverter->fromInternalString<MachineCloseAction>(strValue);
-        if (value != MachineCloseAction_Invalid)
-            result = static_cast<MachineCloseAction>(result | value);
-    }
-    /* Return result: */
-    return result;
-}
-
-/* static */
-QList<GlobalSettingsPageType> VBoxGlobal::restrictedGlobalSettingsPages(CVirtualBox &vbox)
-{
-    /* Prepare result: */
-    QList<GlobalSettingsPageType> result;
-    /* Load restricted global-settings-pages: */
-    QString strList(vbox.GetExtraData(GUI_RestrictedGlobalSettingsPages));
-    QStringList list = strList.split(',');
-    /* Convert list into appropriate values: */
-    foreach (const QString &strValue, list)
-    {
-        GlobalSettingsPageType value = gpConverter->fromInternalString<GlobalSettingsPageType>(strValue);
-        if (value != GlobalSettingsPageType_Invalid)
-            result << value;
-    }
-    /* Return result: */
-    return result;
-}
-
-/* static */
-QList<MachineSettingsPageType> VBoxGlobal::restrictedMachineSettingsPages(CMachine &machine)
-{
-    /* Prepare result: */
-    QList<MachineSettingsPageType> result;
-    /* Load restricted machine-settings-pages: */
-    QString strList(machine.GetExtraData(GUI_RestrictedMachineSettingsPages));
-    QStringList list = strList.split(',');
-    /* Convert list into appropriate values: */
-    foreach (const QString &strValue, list)
-    {
-        MachineSettingsPageType value = gpConverter->fromInternalString<MachineSettingsPageType>(strValue);
-        if (value != MachineSettingsPageType_Invalid)
-            result << value;
-    }
-    /* Return result: */
-    return result;
-}
-
-#ifndef Q_WS_MAC
-/* static */
-QStringList VBoxGlobal::machineWindowIconNames(CMachine &machine)
-{
-    /* Return result: */
-    return machine.GetExtraDataStringList(GUI_MachineWindowIcons);
-}
-#endif /* !Q_WS_MAC */
-
-/* static */
-GuruMeditationHandlerType VBoxGlobal::guruMeditationHandlerType(CMachine &machine)
-{
-    /* Return result: */
-    return gpConverter->fromInternalString<GuruMeditationHandlerType>(machine.GetExtraData(GUI_GuruMeditationHandler));
-}
-
 #ifdef RT_OS_LINUX
 /* static */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 51054)
@@ -366,41 +366,4 @@
     static QString fullMediumFormatName(const QString &strBaseMediumFormatName);
 
-    /* Extra-data settings stuff: */
-    static bool isApprovedByExtraData(CVirtualBox &vbox, const QString &strExtraDataKey);
-    static bool isApprovedByExtraData(CMachine &machine, const QString &strExtraDataKey);
-#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
-    static bool shouldWeAllowApplicationUpdate(CVirtualBox &vbox);
-#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
-    static bool shouldWeShowMachine(CMachine &machine);
-    static bool shouldWeAllowMachineReconfiguration(CMachine &machine,
-                                                    bool fIncludingMachineGeneralCheck = false,
-                                                    bool fIncludingMachineStateCheck = false);
-    static bool shouldWeShowDetails(CMachine &machine,
-                                    bool fIncludingMachineGeneralCheck = false);
-    static bool shouldWeAutoMountGuestScreens(CMachine &machine, bool fIncludingSanityCheck = true);
-    static bool shouldWeAllowSnapshotOperations(CMachine &machine, bool fIncludingSanityCheck = true);
-    static MachineCloseAction defaultMachineCloseAction(CMachine &machine);
-    static RuntimeMenuType restrictedRuntimeMenuTypes(CMachine &machine);
-#ifdef Q_WS_MAC
-    static RuntimeMenuApplicationActionType restrictedRuntimeMenuApplicationActionTypes(CMachine &machine);
-#endif /* Q_WS_MAC */
-    static RuntimeMenuMachineActionType restrictedRuntimeMenuMachineActionTypes(CMachine &machine);
-    static RuntimeMenuViewActionType restrictedRuntimeMenuViewActionTypes(CMachine &machine);
-    static RuntimeMenuDevicesActionType restrictedRuntimeMenuDevicesActionTypes(CMachine &machine);
-#ifdef VBOX_WITH_DEBUGGER_GUI
-    static RuntimeMenuDebuggerActionType restrictedRuntimeMenuDebuggerActionTypes(CMachine &machine);
-#endif /* VBOX_WITH_DEBUGGER_GUI */
-    static RuntimeMenuHelpActionType restrictedRuntimeMenuHelpActionTypes(CMachine &machine);
-    static UIVisualStateType restrictedVisualStateTypes(CMachine &machine);
-    static QList<IndicatorType> restrictedStatusBarIndicators(CMachine &machine);
-    static MachineCloseAction restrictedMachineCloseActions(CMachine &machine);
-    static QList<GlobalSettingsPageType> restrictedGlobalSettingsPages(CVirtualBox &vbox);
-    static QList<MachineSettingsPageType> restrictedMachineSettingsPages(CMachine &machine);
-#ifndef Q_WS_MAC
-    /** Loads redefined machine-window icon names. */
-    static QStringList machineWindowIconNames(CMachine &machine);
-#endif /* !Q_WS_MAC */
-    /** Loads redefined guru-meditation handler type. */
-    static GuruMeditationHandlerType guruMeditationHandlerType(CMachine &machine);
 
 #ifdef RT_OS_LINUX
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMedium.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMedium.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMedium.cpp	(revision 51054)
@@ -30,4 +30,5 @@
 #include "UIConverter.h"
 #include "UIMessageCenter.h"
+#include "UIExtraDataManager.h"
 
 /* COM includes: */
@@ -276,5 +277,5 @@
 
                 /* Finally, we are checking if current machine overrides this flag: */
-                if (m_fAttachedToHiddenMachinesOnly && vboxGlobal().shouldWeShowMachine(machine))
+                if (m_fAttachedToHiddenMachinesOnly && gEDataManager->shouldWeShowMachine(strMachineID))
                     m_fAttachedToHiddenMachinesOnly = false;
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp	(revision 51054)
@@ -32,4 +32,5 @@
 #include "VBoxGlobal.h"
 #include "UIMessageCenter.h"
+#include "UIExtraDataManager.h"
 #include "UIModalWindowManager.h"
 #include "VBoxUtils.h"
@@ -459,6 +460,5 @@
 #ifdef VBOX_WITH_UPDATE_REQUEST
     /* Ask updater to check for the first time: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
-    if (VBoxGlobal::shouldWeAllowApplicationUpdate(vbox) &&
+    if (gEDataManager->shouldWeAllowApplicationUpdate() &&
         !vboxGlobal().isVMConsoleProcess())
         QTimer::singleShot(0, this, SLOT(sltCheckIfUpdateIsNecessary()));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp	(revision 51054)
@@ -25,4 +25,5 @@
 #include "UIIndicatorsPool.h"
 #include "VBoxGlobal.h"
+#include "UIExtraDataManager.h"
 #include "UIMachineDefs.h"
 #include "UIConverter.h"
@@ -809,6 +810,5 @@
 {
     /* Get the list of restricted indicators: */
-    CMachine machine = m_session.GetMachine();
-    QList<IndicatorType> restrictedIndicators = vboxGlobal().restrictedStatusBarIndicators(machine);
+    QList<IndicatorType> restrictedIndicators = gEDataManager->restrictedStatusBarIndicators(vboxGlobal().managedVMUuid());
 
     /* Populate indicator-pool: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachine.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachine.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachine.cpp	(revision 51054)
@@ -18,4 +18,5 @@
 /* Local includes: */
 #include "VBoxGlobal.h"
+#include "UIExtraDataManager.h"
 #include "UIMachine.h"
 #include "UISession.h"
@@ -197,5 +198,5 @@
     /* Load machine settings: */
     CMachine machine = uisession()->session().GetMachine();
-    UIVisualStateType restrictedVisualStateTypes = VBoxGlobal::restrictedVisualStateTypes(machine);
+    UIVisualStateType restrictedVisualStateTypes = gEDataManager->restrictedVisualStateTypes(vboxGlobal().managedVMUuid());
     m_allowedVisualStateTypes = static_cast<UIVisualStateType>(UIVisualStateType_All ^ restrictedVisualStateTypes);
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp	(revision 51054)
@@ -31,4 +31,5 @@
 #include "UISession.h"
 #include "UIMessageCenter.h"
+#include "UIExtraDataManager.h"
 #include "VBoxGlobal.h"
 
@@ -80,5 +81,5 @@
     CMachine machine = m_pMachineLogic->session().GetMachine();
     CDisplay display = m_pMachineLogic->session().GetConsole().GetDisplay();
-    bool fShouldWeAutoMountGuestScreens = VBoxGlobal::shouldWeAutoMountGuestScreens(machine, false);
+    bool fShouldWeAutoMountGuestScreens = gEDataManager->shouldWeAutoMountGuestScreens(vboxGlobal().managedVMUuid());
     LogRelFlow(("UIMultiScreenLayout::update: GUI/AutomountGuestScreens is %s.\n", fShouldWeAutoMountGuestScreens ? "enabled" : "disabled"));
     QDesktopWidget *pDW = QApplication::desktop();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 51054)
@@ -26,4 +26,5 @@
 /* GUI includes: */
 #include "VBoxGlobal.h"
+#include "UIExtraDataManager.h"
 #include "UISession.h"
 #include "UIMachine.h"
@@ -1094,23 +1095,23 @@
 #ifdef Q_WS_MAC
         m_allowedActionsMenuApplication = (RuntimeMenuApplicationActionType)
-                                          (vboxGlobal().restrictedRuntimeMenuApplicationActionTypes(machine) ^
+                                          (gEDataManager->restrictedRuntimeMenuApplicationActionTypes(vboxGlobal().managedVMUuid()) ^
                                            RuntimeMenuApplicationActionType_All);
 #endif /* Q_WS_MAC */
         m_allowedActionsMenuMachine     = (RuntimeMenuMachineActionType)
-                                          (vboxGlobal().restrictedRuntimeMenuMachineActionTypes(machine) ^
+                                          (gEDataManager->restrictedRuntimeMenuMachineActionTypes(vboxGlobal().managedVMUuid()) ^
                                            RuntimeMenuMachineActionType_All);
         m_allowedActionsMenuView        = (RuntimeMenuViewActionType)
-                                          (vboxGlobal().restrictedRuntimeMenuViewActionTypes(machine) ^
+                                          (gEDataManager->restrictedRuntimeMenuViewActionTypes(vboxGlobal().managedVMUuid()) ^
                                            RuntimeMenuViewActionType_All);
         m_allowedActionsMenuDevices     = (RuntimeMenuDevicesActionType)
-                                          (vboxGlobal().restrictedRuntimeMenuDevicesActionTypes(machine) ^
+                                          (gEDataManager->restrictedRuntimeMenuDevicesActionTypes(vboxGlobal().managedVMUuid()) ^
                                            RuntimeMenuDevicesActionType_All);
 #ifdef VBOX_WITH_DEBUGGER_GUI
         m_allowedActionsMenuDebugger    = (RuntimeMenuDebuggerActionType)
-                                          (vboxGlobal().restrictedRuntimeMenuDebuggerActionTypes(machine) ^
+                                          (gEDataManager->restrictedRuntimeMenuDebuggerActionTypes(vboxGlobal().managedVMUuid()) ^
                                            RuntimeMenuDebuggerActionType_All);
 #endif /* VBOX_WITH_DEBUGGER_GUI */
         m_allowedActionsMenuHelp        = (RuntimeMenuHelpActionType)
-                                          (vboxGlobal().restrictedRuntimeMenuHelpActionTypes(machine) ^
+                                          (gEDataManager->restrictedRuntimeMenuHelpActionTypes(vboxGlobal().managedVMUuid()) ^
                                            RuntimeMenuHelpActionType_All);
 
@@ -1121,5 +1122,5 @@
         /* Load/prepare user's machine-window icon: */
         QIcon icon;
-        foreach (const QString &strIconName, VBoxGlobal::machineWindowIconNames(machine))
+        foreach (const QString &strIconName, gEDataManager->machineWindowIconNames(vboxGlobal().managedVMUuid()))
             if (!strIconName.isEmpty())
                 icon.addFile(strIconName);
@@ -1129,5 +1130,5 @@
 
         /* Determine Guru Meditation handler type: */
-        m_guruMeditationHandlerType = VBoxGlobal::guruMeditationHandlerType(machine);
+        m_guruMeditationHandlerType = gEDataManager->guruMeditationHandlerType(vboxGlobal().managedVMUuid());
 
         /* Is there should be First RUN Wizard? */
@@ -1147,11 +1148,11 @@
 
         /* Should we allow reconfiguration? */
-        m_fReconfigurable =  VBoxGlobal::shouldWeAllowMachineReconfiguration(machine);
+        m_fReconfigurable = gEDataManager->shouldWeAllowMachineReconfiguration(vboxGlobal().managedVMUuid());
         /* Should we allow snapshot operations? */
-        m_fSnapshotOperationsAllowed = vboxGlobal().shouldWeAllowSnapshotOperations(machine);
+        m_fSnapshotOperationsAllowed = gEDataManager->shouldWeAllowMachineSnapshotOperations(vboxGlobal().managedVMUuid());
 
         /* What is the default close action and the restricted are? */
-        m_defaultCloseAction = vboxGlobal().defaultMachineCloseAction(machine);
-        m_restrictedCloseActions = vboxGlobal().restrictedMachineCloseActions(machine);
+        m_defaultCloseAction = gEDataManager->defaultMachineCloseAction(vboxGlobal().managedVMUuid());
+        m_restrictedCloseActions = gEDataManager->restrictedMachineCloseActions(vboxGlobal().managedVMUuid());
         m_fAllCloseActionsRestricted =  (m_restrictedCloseActions & MachineCloseAction_SaveState)
                                      && (m_restrictedCloseActions & MachineCloseAction_Shutdown)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp	(revision 51054)
@@ -25,4 +25,5 @@
 /* GUI includes: */
 #include "VBoxGlobal.h"
+#include "UIExtraDataManager.h"
 #include "UISession.h"
 #include "UIActionPoolRuntime.h"
@@ -177,6 +178,5 @@
 
     /* Prepare menu: */
-    CMachine machine = session().GetMachine();
-    RuntimeMenuType restrictedMenus = VBoxGlobal::restrictedRuntimeMenuTypes(machine);
+    RuntimeMenuType restrictedMenus = gEDataManager->restrictedRuntimeMenuTypes(vboxGlobal().managedVMUuid());
     RuntimeMenuType allowedMenus = static_cast<RuntimeMenuType>(RuntimeMenuType_All ^ restrictedMenus);
     m_pMainMenu = uisession()->newMenu(allowedMenus);
@@ -241,5 +241,5 @@
                                               fIsAutoHide);
     QList<QMenu*> menus;
-    RuntimeMenuType restrictedMenus = VBoxGlobal::restrictedRuntimeMenuTypes(m);
+    RuntimeMenuType restrictedMenus = gEDataManager->restrictedRuntimeMenuTypes(vboxGlobal().managedVMUuid());
     RuntimeMenuType allowedMenus = static_cast<RuntimeMenuType>(RuntimeMenuType_All ^ restrictedMenus);
     QList<QAction*> actions = uisession()->newMenu(allowedMenus)->actions();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 51054)
@@ -27,4 +27,5 @@
 /* GUI includes: */
 #include "VBoxGlobal.h"
+#include "UIExtraDataManager.h"
 #include "UISession.h"
 #include "UIActionPoolRuntime.h"
@@ -231,6 +232,5 @@
 #ifndef Q_WS_MAC
     /* Prepare application menu-bar: */
-    CMachine machine = session().GetMachine();
-    RuntimeMenuType restrictedMenus = VBoxGlobal::restrictedRuntimeMenuTypes(machine);
+    RuntimeMenuType restrictedMenus = gEDataManager->restrictedRuntimeMenuTypes(vboxGlobal().managedVMUuid());
     RuntimeMenuType allowedMenus = static_cast<RuntimeMenuType>(RuntimeMenuType_All ^ restrictedMenus);
     setMenuBar(uisession()->newMenuBar(allowedMenus));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineWindowScale.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineWindowScale.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineWindowScale.cpp	(revision 51054)
@@ -27,4 +27,5 @@
 /* GUI includes: */
 #include "VBoxGlobal.h"
+#include "UIExtraDataManager.h"
 #include "UISession.h"
 #include "UIMachineLogic.h"
@@ -72,6 +73,5 @@
 
     /* Prepare menu: */
-    CMachine machine = session().GetMachine();
-    RuntimeMenuType restrictedMenus = VBoxGlobal::restrictedRuntimeMenuTypes(machine);
+    RuntimeMenuType restrictedMenus = gEDataManager->restrictedRuntimeMenuTypes(vboxGlobal().managedVMUuid());
     RuntimeMenuType allowedMenus = static_cast<RuntimeMenuType>(RuntimeMenuType_All ^ restrictedMenus);
     m_pMainMenu = uisession()->newMenu(allowedMenus);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.cpp	(revision 51054)
@@ -25,4 +25,5 @@
 /* GUI includes: */
 #include "VBoxGlobal.h"
+#include "UIExtraDataManager.h"
 #include "UISession.h"
 #include "UIActionPoolRuntime.h"
@@ -83,6 +84,5 @@
 
     /* Prepare menu: */
-    CMachine machine = session().GetMachine();
-    RuntimeMenuType restrictedMenus = VBoxGlobal::restrictedRuntimeMenuTypes(machine);
+    RuntimeMenuType restrictedMenus = gEDataManager->restrictedRuntimeMenuTypes(vboxGlobal().managedVMUuid());
     RuntimeMenuType allowedMenus = static_cast<RuntimeMenuType>(RuntimeMenuType_All ^ restrictedMenus);
     m_pMainMenu = uisession()->newMenu(allowedMenus);
@@ -147,5 +147,5 @@
     m_pMiniToolBar->show();
     QList<QMenu*> menus;
-    RuntimeMenuType restrictedMenus = VBoxGlobal::restrictedRuntimeMenuTypes(m);
+    RuntimeMenuType restrictedMenus = gEDataManager->restrictedRuntimeMenuTypes(vboxGlobal().managedVMUuid());
     RuntimeMenuType allowedMenus = static_cast<RuntimeMenuType>(RuntimeMenuType_All ^ restrictedMenus);
     QList<QAction*> actions = uisession()->newMenu(allowedMenus)->actions();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 51054)
@@ -61,4 +61,5 @@
 #include "UIGDetails.h"
 #include "UIVMItem.h"
+#include "UIExtraDataManager.h"
 #include "VBoxGlobal.h"
 
@@ -1334,6 +1335,5 @@
     pMenu->addAction(m_pNetworkAccessManager);
     m_pUpdateAction = gActionPool->action(UIActionIndex_Simple_CheckForUpdates);
-    CVirtualBox vbox = vboxGlobal().virtualBox();
-    if (VBoxGlobal::shouldWeAllowApplicationUpdate(vbox))
+    if (gEDataManager->shouldWeAllowApplicationUpdate())
         pMenu->addAction(m_pUpdateAction);
     else
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.cpp	(revision 51054)
@@ -30,4 +30,5 @@
 #include "VBoxGlobal.h"
 #include "UIConverter.h"
+#include "UIExtraDataManager.h"
 #ifdef Q_WS_MAC
 # include <ApplicationServices/ApplicationServices.h>
@@ -261,9 +262,9 @@
         /* Also take restrictions into account: */
         if (   m_configurationAccessLevel != ConfigurationAccessLevel_Null
-            && !VBoxGlobal::shouldWeAllowMachineReconfiguration(m_machine))
+            && !gEDataManager->shouldWeAllowMachineReconfiguration(m_strId))
             m_configurationAccessLevel = ConfigurationAccessLevel_Null;
 
         /* Should we show details for this item? */
-        m_fHasDetails = VBoxGlobal::shouldWeShowDetails(m_machine);
+        m_fHasDetails = gEDataManager->shouldWeShowMachineDetails(m_strId);
     }
     else
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.cpp	(revision 51054)
@@ -42,4 +42,5 @@
 #include "UIConverter.h"
 #include "UIModalWindowManager.h"
+#include "UIExtraDataManager.h"
 
 /* COM includes: */
@@ -449,5 +450,5 @@
         mMachineId = aMachine.GetId();
         mSessionState = aMachine.GetSessionState();
-        m_fShapshotOperationsAllowed = vboxGlobal().shouldWeAllowSnapshotOperations(mMachine);
+        m_fShapshotOperationsAllowed = gEDataManager->shouldWeAllowMachineSnapshotOperations(mMachineId);
     }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 51054)
@@ -36,4 +36,5 @@
 #include "VBoxGlobal.h"
 #include "UIMessageCenter.h"
+#include "UIExtraDataManager.h"
 #include "UIActionPoolSelector.h"
 #include "UIGChooserHandlerMouse.h"
@@ -597,5 +598,5 @@
         CMachine machine = vboxGlobal().virtualBox().FindMachine(strId);
         /* Should we show this machine? */
-        if (VBoxGlobal::shouldWeShowMachine(machine))
+        if (gEDataManager->shouldWeShowMachine(strId))
         {
             /* Add new machine-item: */
@@ -883,5 +884,5 @@
     /* Show machine if we should: */
     CMachine machine = vboxGlobal().virtualBox().FindMachine(strId);
-    if (VBoxGlobal::shouldWeShowMachine(machine))
+    if (gEDataManager->shouldWeShowMachine(strId))
         addMachineIntoTheTree(machine);
 
@@ -1611,5 +1612,5 @@
     LogRelFlow(("UIGChooserModel: Loading VMs...\n"));
     foreach (CMachine machine, vboxGlobal().virtualBox().GetMachines())
-        if (VBoxGlobal::shouldWeShowMachine(machine))
+        if (gEDataManager->shouldWeShowMachine(machine.GetId()))
             addMachineIntoTheTree(machine);
     LogRelFlow(("UIGChooserModel: VMs loaded.\n"));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 51053)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 51054)
@@ -30,4 +30,5 @@
 #include "VBoxGlobal.h"
 #include "UIMessageCenter.h"
+#include "UIExtraDataManager.h"
 #include "QIWidgetValidator.h"
 #include "VBoxSettingsSelector.h"
@@ -324,6 +325,5 @@
 
     /* Creating settings pages: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
-    QList<GlobalSettingsPageType> restrictedGlobalSettingsPages = vboxGlobal().restrictedGlobalSettingsPages(vbox);
+    QList<GlobalSettingsPageType> restrictedGlobalSettingsPages = gEDataManager->restrictedGlobalSettingsPages();
     for (int iPageIndex = GlobalSettingsPageType_General; iPageIndex < GlobalSettingsPageType_Max; ++iPageIndex)
     {
@@ -564,5 +564,5 @@
 
     /* Creating settings pages: */
-    QList<MachineSettingsPageType> restrictedMachineSettingsPages = vboxGlobal().restrictedMachineSettingsPages(m_machine);
+    QList<MachineSettingsPageType> restrictedMachineSettingsPages = gEDataManager->restrictedMachineSettingsPages(m_strMachineId);
     for (int iPageIndex = MachineSettingsPageType_General; iPageIndex < MachineSettingsPageType_Max; ++iPageIndex)
     {
