Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 51928)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 51929)
@@ -23,6 +23,6 @@
 #include "UIExtraDataManager.h"
 #include "UIMainEventListener.h"
+#include "VBoxGlobalSettings.h"
 #include "VBoxGlobal.h"
-#include "VBoxGlobalSettings.h"
 #include "UIActionPool.h"
 #include "UIConverter.h"
@@ -145,4 +145,103 @@
 }
 
+QString UIExtraDataManager::extraDataString(const QString &strKey, const QString &strID /* = GlobalID */)
+{
+    /* Hot-load machine extra-data map if necessary: */
+    if (strID != GlobalID && !m_data.contains(strID))
+        hotloadMachineExtraDataMap(strID);
+
+    /* Read-only access corresponding map: */
+    const ExtraDataMap data = m_data.value(strID);
+
+    /* QString() if value was not set: */
+    if (!data.contains(strKey))
+        return QString();
+
+    /* Returns corresponding value: */
+    return data[strKey];
+}
+
+void UIExtraDataManager::setExtraDataString(const QString &strKey, const QString &strValue, const QString &strID /* = GlobalID */)
+{
+    /* Hot-load machine extra-data map if necessary: */
+    if (strID != GlobalID && !m_data.contains(strID))
+        hotloadMachineExtraDataMap(strID);
+
+    /* Access corresponding map: */
+    ExtraDataMap &data = m_data[strID];
+
+    /* [Re]cache passed value: */
+    data[strKey] = strValue;
+
+    /* Global extra-data: */
+    if (strID == GlobalID)
+    {
+        /* Get global object: */
+        CVirtualBox vbox = vboxGlobal().virtualBox();
+        /* Update global extra-data: */
+        vbox.SetExtraData(strKey, strValue);
+    }
+    /* Machine extra-data: */
+    else
+    {
+        /* Search for corresponding machine: */
+        CVirtualBox vbox = vboxGlobal().virtualBox();
+        CMachine machine = vbox.FindMachine(strID);
+        AssertReturnVoid(vbox.isOk() && !machine.isNull());
+        /* Update machine extra-data: */
+        machine.SetExtraData(strKey, strValue);
+    }
+}
+
+QStringList UIExtraDataManager::extraDataStringList(const QString &strKey, const QString &strID /* = GlobalID */)
+{
+    /* Hot-load machine extra-data map if necessary: */
+    if (strID != GlobalID && !m_data.contains(strID))
+        hotloadMachineExtraDataMap(strID);
+
+    /* Read-only access corresponding map: */
+    const ExtraDataMap data = m_data.value(strID);
+
+    /* QStringList() if machine value was not set: */
+    if (!data.contains(strKey))
+        return QStringList();
+
+    /* Few old extra-data string-lists were separated with 'semicolon' symbol.
+     * All new separated by 'comma'. We have to take that into account. */
+    return data[strKey].split(QRegExp("[;,]"), QString::SkipEmptyParts);
+}
+
+void UIExtraDataManager::setExtraDataStringList(const QString &strKey, const QStringList &strValue, const QString &strID /* = GlobalID */)
+{
+    /* Hot-load machine extra-data map if necessary: */
+    if (strID != GlobalID && !m_data.contains(strID))
+        hotloadMachineExtraDataMap(strID);
+
+    /* Access corresponding map: */
+    ExtraDataMap &data = m_data[strID];
+
+    /* [Re]cache passed value: */
+    data[strKey] = strValue.join(",");
+
+    /* Global extra-data: */
+    if (strID == GlobalID)
+    {
+        /* Get global object: */
+        CVirtualBox vbox = vboxGlobal().virtualBox();
+        /* Update global extra-data: */
+        vbox.SetExtraDataStringList(strKey, strValue);
+    }
+    /* Machine extra-data: */
+    else
+    {
+        /* Search for corresponding machine: */
+        CVirtualBox vbox = vboxGlobal().virtualBox();
+        CMachine machine = vbox.FindMachine(strID);
+        AssertReturnVoid(vbox.isOk() && !machine.isNull());
+        /* Update machine extra-data: */
+        machine.SetExtraDataStringList(strKey, strValue);
+    }
+}
+
 UIExtraDataManager::UIExtraDataManager()
     : m_pHandler(0)
@@ -1262,10 +1361,4 @@
 }
 
-void UIExtraDataManager::cleanup()
-{
-    /* Cleanup Main event-listener: */
-    cleanupMainEventListener();
-}
-
 void UIExtraDataManager::cleanupMainEventListener()
 {
@@ -1273,4 +1366,10 @@
     const CVirtualBox &vbox = vboxGlobal().virtualBox();
     vbox.GetEventSource().UnregisterListener(m_listener);
+}
+
+void UIExtraDataManager::cleanup()
+{
+    /* Cleanup Main event-listener: */
+    cleanupMainEventListener();
 }
 
@@ -1352,103 +1451,4 @@
 }
 
-QString UIExtraDataManager::extraDataString(const QString &strKey, const QString &strID /* = GlobalID */)
-{
-    /* Hot-load machine extra-data map if necessary: */
-    if (strID != GlobalID && !m_data.contains(strID))
-        hotloadMachineExtraDataMap(strID);
-
-    /* Access corresponding map: */
-    ExtraDataMap &data = m_data[strID];
-
-    /* QString() if value was not set: */
-    if (!data.contains(strKey))
-        return QString();
-
-    /* Returns corresponding value: */
-    return data[strKey];
-}
-
-void UIExtraDataManager::setExtraDataString(const QString &strKey, const QString &strValue, const QString &strID /* = GlobalID */)
-{
-    /* Hot-load machine extra-data map if necessary: */
-    if (strID != GlobalID && !m_data.contains(strID))
-        hotloadMachineExtraDataMap(strID);
-
-    /* Access corresponding map: */
-    ExtraDataMap &data = m_data[strID];
-
-    /* [Re]cache passed value: */
-    data[strKey] = strValue;
-
-    /* Global extra-data: */
-    if (strID == GlobalID)
-    {
-        /* Get global object: */
-        CVirtualBox vbox = vboxGlobal().virtualBox();
-        /* Update global extra-data: */
-        vbox.SetExtraData(strKey, strValue);
-    }
-    /* Machine extra-data: */
-    else
-    {
-        /* Search for corresponding machine: */
-        CVirtualBox vbox = vboxGlobal().virtualBox();
-        CMachine machine = vbox.FindMachine(strID);
-        AssertReturnVoid(vbox.isOk() && !machine.isNull());
-        /* Update machine extra-data: */
-        machine.SetExtraData(strKey, strValue);
-    }
-}
-
-QStringList UIExtraDataManager::extraDataStringList(const QString &strKey, const QString &strID /* = GlobalID */)
-{
-    /* Hot-load machine extra-data map if necessary: */
-    if (strID != GlobalID && !m_data.contains(strID))
-        hotloadMachineExtraDataMap(strID);
-
-    /* Access corresponding map: */
-    ExtraDataMap &data = m_data[strID];
-
-    /* QStringList() if machine value was not set: */
-    if (!data.contains(strKey))
-        return QStringList();
-
-    /* Few old extra-data string-lists were separated with 'semicolon' symbol.
-     * All new separated by 'comma'. We have to take that into account. */
-    return data[strKey].split(QRegExp("[;,]"), QString::SkipEmptyParts);
-}
-
-void UIExtraDataManager::setExtraDataStringList(const QString &strKey, const QStringList &strValue, const QString &strID /* = GlobalID */)
-{
-    /* Hot-load machine extra-data map if necessary: */
-    if (strID != GlobalID && !m_data.contains(strID))
-        hotloadMachineExtraDataMap(strID);
-
-    /* Access corresponding map: */
-    ExtraDataMap &data = m_data[strID];
-
-    /* [Re]cache passed value: */
-    data[strKey] = strValue.join(",");
-
-    /* Global extra-data: */
-    if (strID == GlobalID)
-    {
-        /* Get global object: */
-        CVirtualBox vbox = vboxGlobal().virtualBox();
-        /* Update global extra-data: */
-        vbox.SetExtraDataStringList(strKey, strValue);
-    }
-    /* Machine extra-data: */
-    else
-    {
-        /* Search for corresponding machine: */
-        CVirtualBox vbox = vboxGlobal().virtualBox();
-        CMachine machine = vbox.FindMachine(strID);
-        AssertReturnVoid(vbox.isOk() && !machine.isNull());
-        /* Update machine extra-data: */
-        machine.SetExtraDataStringList(strKey, strValue);
-    }
-}
-
 /* static */
 QString UIExtraDataManager::extraDataKeyPerScreen(const QString &strBase, ulong uScreenIndex, bool fSameRuleForPrimary /* = false */)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 51928)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 51929)
@@ -75,4 +75,26 @@
     /** Static Extra-data Manager destructor. */
     static void destroy();
+
+    /** @name General
+      * @{ */
+        /** Returns whether Extra-data Manager cached the map with passed @a strID. */
+        bool contains(const QString &strID) const { return m_data.contains(strID); }
+        /** Returns read-only extra-data map for passed @a strID. */
+        const ExtraDataMap map(const QString &strID) const { return m_data.value(strID); }
+
+        /** Returns extra-data value corresponding to passed @a strKey as QString.
+          * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
+        QString extraDataString(const QString &strKey, const QString &strID = GlobalID);
+        /** Defines extra-data value corresponding to passed @a strKey as strValue.
+          * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
+        void setExtraDataString(const QString &strKey, const QString &strValue, const QString &strID = GlobalID);
+
+        /** Returns extra-data value corresponding to passed @a strKey as QStringList.
+          * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
+        QStringList extraDataStringList(const QString &strKey, const QString &strID = GlobalID);
+        /** Defines extra-data value corresponding to passed @a strKey as strValue.
+          * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
+        void setExtraDataStringList(const QString &strKey, const QStringList &strValue, const QString &strID = GlobalID);
+    /** @} */
 
     /** @name Messaging
@@ -397,6 +419,4 @@
     void prepareMainEventListener();
 
-    /** Cleanup Extra-data Manager. */
-    void cleanup();
     /** Cleanup Main event-listener. */
     void cleanupMainEventListener();
@@ -405,4 +425,6 @@
     // /** Cleanup extra-data map. */
     // void cleanupExtraDataMap();
+    /** Cleanup Extra-data Manager. */
+    void cleanup();
 
     /** Hot-load machine extra-data map. */
@@ -421,18 +443,4 @@
     QString toFeatureRestricted(bool fRestricted);
 
-    /** Returns extra-data value corresponding to passed @a strKey as QString.
-      * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
-    QString extraDataString(const QString &strKey, const QString &strID = GlobalID);
-    /** Defines extra-data value corresponding to passed @a strKey as strValue.
-      * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
-    void setExtraDataString(const QString &strKey, const QString &strValue, const QString &strID = GlobalID);
-
-    /** Returns extra-data value corresponding to passed @a strKey as QStringList.
-      * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
-    QStringList extraDataStringList(const QString &strKey, const QString &strID = GlobalID);
-    /** Defines extra-data value corresponding to passed @a strKey as strValue.
-      * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
-    void setExtraDataStringList(const QString &strKey, const QStringList &strValue, const QString &strID = GlobalID);
-
     /** Returns string consisting of @a strBase appended with @a uScreenIndex for the *non-primary* screen-index.
       * If @a fSameRuleForPrimary is 'true' same rule will be used for *primary* screen-index. Used for storing per-screen extra-data. */
