Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 33711)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 33712)
@@ -30,4 +30,5 @@
 #include "UIIconPool.h"
 #include "UIExtraDataEventHandler.h"
+#include "QIFileDialog.h"
 
 #include "UIMachine.h"
@@ -2560,4 +2561,96 @@
 }
 
+/* Open some external medium using file open dialog
+ * and temporary cache (enumerate) it in GUI inner mediums cache: */
+QString VBoxGlobal::openMediumWithFileOpenDialog(VBoxDefs::MediumType mediumType, QWidget *pParent) const
+{
+    /* Initialize variables: */
+    CVirtualBox vbox = vboxGlobal().virtualBox();
+    QString strHomeFolder = vbox.GetHomeFolder();
+    QList < QPair <QString, QString> > filters;
+    QStringList backends;
+    QStringList prefixes;
+    QString strFilter;
+    QString strTitle;
+    QString allType;
+    KDeviceType type;
+    switch (mediumType)
+    {
+        case VBoxDefs::MediumType_HardDisk:
+        {
+            filters = vboxGlobal().HDDBackends();
+            strTitle = tr ("Select a hard disk image file");
+            allType = tr ("hard disk");
+            type = KDeviceType_HardDisk;
+            break;
+        }
+        case VBoxDefs::MediumType_DVD:
+        {
+            filters = vboxGlobal().DVDBackends();
+            strTitle = tr ("Select a CD/DVD-ROM disk image file");
+            allType = tr ("CD/DVD-ROM disk");
+            type = KDeviceType_DVD;
+            break;
+        }
+        case VBoxDefs::MediumType_Floppy:
+        {
+            filters = vboxGlobal().FloppyBackends();
+            strTitle = tr ("Select a floppy disk image file");
+            allType = tr ("floppy disk");
+            type = KDeviceType_Floppy;
+            break;
+        }
+        default:
+            break;
+    }
+
+    /* Prepare filters and backends: */
+    for (int i = 0; i < filters.count(); ++i)
+    {
+        /* Get iterated filter: */
+        QPair <QString, QString> item = filters.at(i);
+        /* Create one backend filter string: */
+        backends << QString("%1 (%2)").arg(item.first).arg(item.second);
+        /* Save the suffix's for the "All" entry: */
+        prefixes << item.second;
+    }
+    if (!prefixes.isEmpty())
+        backends.insert(0, tr("All %1 images (%2)").arg(allType).arg(prefixes.join(" ").trimmed()));
+    backends << tr("All files (*)");
+    strFilter = backends.join(";;").trimmed();
+
+    /* Create open file dialog: */
+    QStringList files = QIFileDialog::getOpenFileNames(strHomeFolder, strFilter, pParent, strTitle, 0, true, true);
+    if (!files.empty() && !files[0].isEmpty())
+    {
+        /* Get location: */
+        QString strLocation = files[0];
+
+        /* Open corresponding medium: */
+        CMedium comMedium = vbox.OpenMedium(strLocation, type, KAccessMode_ReadWrite);
+
+        if (vbox.isOk())
+        {
+            /* Prepare vbox medium wrapper: */
+            VBoxMedium vboxMedium;
+
+            /* First of all we should test if that medium already opened: */
+            if (!vboxGlobal().findMedium(comMedium, vboxMedium))
+            {
+                /* And create new otherwise: */
+                vboxMedium = VBoxMedium(CMedium(comMedium), mediumType, KMediumState_Created);
+                vboxGlobal().addMedium(vboxMedium);
+            }
+
+            /* Return vboxMedium id: */
+            return vboxMedium.id();
+        }
+        else
+            vboxProblem().cannotOpenMedium(pParent, vbox, mediumType, strLocation);
+    }
+
+    return QString();
+}
+
 #ifdef VBOX_GUI_WITH_SYSTRAY
 /**
@@ -3416,5 +3509,5 @@
         }
         strList += " " + tr("and") + " " + list.at(list.size() - 1);
-    }else
+    }
     return strList;
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 33711)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 33712)
@@ -579,4 +579,6 @@
     }
 
+    QString openMediumWithFileOpenDialog(VBoxDefs::MediumType mediumType, QWidget *pParent = 0) const;
+
     /* Returns the number of current running Fe/Qt4 main windows. */
     int mainWindowCount();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 33711)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 33712)
@@ -34,5 +34,5 @@
 #include "UIMachineWindow.h"
 #include "UISession.h"
-#include "VBoxMediaManagerDlg.h"
+#include "VBoxGlobal.h"
 #include "VBoxProblemReporter.h"
 #include "VBoxTakeSnapshotDlg.h"
@@ -1293,8 +1293,7 @@
         }
         /* Open VMM Dialog: */
-        VBoxMediaManagerDlg dlg(defaultMachineWindow()->machineWindow());
-        dlg.setup(target.type, true /* select? */, true /* refresh? */, machine, currentId, true, usedImages);
-        if (dlg.exec() == QDialog::Accepted)
-            newId = dlg.selectedId();
+        QString strMediumId = vboxGlobal().openMediumWithFileOpenDialog(target.type, defaultMachineWindow()->machineWindow());
+        if (!strMediumId.isNull())
+            newId = strMediumId;
         else return;
     }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.cpp	(revision 33711)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.cpp	(revision 33712)
@@ -2410,7 +2410,7 @@
 void VBoxVMSettingsHD::sltOpenMedium()
 {
-    QString id = getWithOpenFileDialog(mCbVdi->type());
+    QString id = vboxGlobal().openMediumWithFileOpenDialog(mCbVdi->type(), this);
     if (!id.isNull())
-        mCbVdi->setCurrentItem (id);
+        mCbVdi->setCurrentItem(id);
 }
 
@@ -2477,5 +2477,5 @@
                 int askResult = vboxProblem().confirmRunNewHDWzdOrOFD (deviceType);
                 QString mediumId = askResult == QIMessageBox::Yes ? getWithNewHDWizard() :
-                                   askResult == QIMessageBox::No ? getWithOpenFileDialog(typeToLocal (deviceType)) : QString();
+                                   askResult == QIMessageBox::No ? vboxGlobal().openMediumWithFileOpenDialog(typeToLocal (deviceType), this) : QString();
                 if (mediumId.isNull())
                     mediumId = firstAvailableId;
@@ -2759,95 +2759,4 @@
 }
 
-QString VBoxVMSettingsHD::getWithOpenFileDialog (VBoxDefs::MediumType aMediumType)
-{
-    /* Initialize variables: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
-    QString strHomeFolder = vbox.GetHomeFolder();
-    QList < QPair <QString, QString> > filters;
-    QStringList backends;
-    QStringList prefixes;
-    QString strFilter;
-    QString strTitle;
-    QString allType;
-    KDeviceType type;
-    switch (aMediumType)
-    {
-        case VBoxDefs::MediumType_HardDisk:
-        {
-            filters = vboxGlobal().HDDBackends();
-            strTitle = tr ("Select a hard disk image file");
-            allType = tr ("hard disk");
-            type = KDeviceType_HardDisk;
-            break;
-        }
-        case VBoxDefs::MediumType_DVD:
-        {
-            filters = vboxGlobal().DVDBackends();
-            strTitle = tr ("Select a CD/DVD-ROM disk image file");
-            allType = tr ("CD/DVD-ROM disk");
-            type = KDeviceType_DVD;
-            break;
-        }
-        case VBoxDefs::MediumType_Floppy:
-        {
-            filters = vboxGlobal().FloppyBackends();
-            strTitle = tr ("Select a floppy disk image file");
-            allType = tr ("floppy disk");
-            type = KDeviceType_Floppy;
-            break;
-        }
-        default:
-            break;
-    }
-
-    /* Prepare filters and backends: */
-    for (int i = 0; i < filters.count(); ++i)
-    {
-        /* Get iterated filter: */
-        QPair <QString, QString> item = filters.at(i);
-        /* Create one backend filter string: */
-        backends << QString("%1 (%2)").arg(item.first).arg(item.second);
-        /* Save the suffix's for the "All" entry: */
-        prefixes << item.second;
-    }
-    if (!prefixes.isEmpty())
-        backends.insert(0, tr("All %1 images (%2)").arg(allType).arg(prefixes.join(" ").trimmed()));
-    backends << tr("All files (*)");
-    strFilter = backends.join(";;").trimmed();
-
-    /* Create open file dialog: */
-    QStringList files = QIFileDialog::getOpenFileNames(strHomeFolder, strFilter, this, strTitle, 0, true, true);
-    if (!files.empty() && !files[0].isEmpty())
-    {
-        /* Get location: */
-        QString strLocation = files[0];
-
-        /* Open corresponding medium: */
-        CMedium comMedium = vbox.OpenMedium(strLocation, type, KAccessMode_ReadWrite);
-
-        if (vbox.isOk())
-        {
-            /* Prepare vbox medium wrapper: */
-            VBoxMedium vboxMedium;
-
-            /* First of all we should test if that medium already opened: */
-            if (!vboxGlobal().findMedium(comMedium, vboxMedium))
-            {
-                /* And create new otherwise: */
-                vboxMedium = VBoxMedium(CMedium(comMedium), aMediumType, KMediumState_Created);
-                vboxGlobal().addMedium(vboxMedium);
-            }
-
-            /* Return vboxMedium id: */
-            return vboxMedium.id();
-        }
-        else
-            vboxProblem().cannotOpenMedium(this, vbox, aMediumType, strLocation);
-    }
-
-    /* Return null string: */
-    return QString();
-}
-
 QString VBoxVMSettingsHD::getWithNewHDWizard()
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.h	(revision 33711)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.h	(revision 33712)
@@ -638,5 +638,4 @@
     void addAttachmentWrapper (KDeviceType aDevice);
 
-    QString getWithOpenFileDialog (VBoxDefs::MediumType aMediumType);
     QString getWithNewHDWizard();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIFirstRunWzd.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIFirstRunWzd.cpp	(revision 33711)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIFirstRunWzd.cpp	(revision 33712)
@@ -21,5 +21,5 @@
 #include "UIFirstRunWzd.h"
 #include "UIIconPool.h"
-#include "VBoxMediaManagerDlg.h"
+#include "VBoxGlobal.h"
 #include "VBoxProblemReporter.h"
 #include "VBoxVMSettingsHD.h"
@@ -224,9 +224,9 @@
 void UIFirstRunWzdPage2::sltOpenVirtualMediaManager()
 {
-    /* Create & open VMM */
-    VBoxMediaManagerDlg dlg(this);
-    dlg.setup(m_pMediaSelector->type(), true /* propose to choose? */);
-    if (dlg.exec() == QDialog::Accepted)
-        m_pMediaSelector->setCurrentItem(dlg.selectedId());
+    /* Get opened vboxMedium id: */
+    QString strMediumId = vboxGlobal().openMediumWithFileOpenDialog(m_pMediaSelector->type(), this);
+    /* Update medium-combo if necessary: */
+    if (!strMediumId.isNull())
+        m_pMediaSelector->setCurrentItem(strMediumId);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp	(revision 33711)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp	(revision 33712)
@@ -534,62 +534,14 @@
 void UINewVMWzdPage4::getWithFileOpenDialog()
 {
-    /* Initialize variables: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
-    QString strHomeFolder = vbox.GetHomeFolder();
-    QString title = m_pVMMButton->toolTip();
-    QList < QPair <QString, QString> > filters = vboxGlobal().HDDBackends();
-    QString allType = tr("hard disk");
-    QString strFilter;
-    QStringList backends;
-    QStringList prefixes;
-
-    /* Prepare filters and backends: */
-    for (int i = 0; i < filters.count(); ++i)
-    {
-        /* Get iterated filter: */
-        QPair <QString, QString> item = filters.at(i);
-        /* Create one backend filter string: */
-        backends << QString("%1 (%2)").arg(item.first).arg(item.second);
-        /* Save the suffix's for the "All" entry: */
-        prefixes << item.second;
-    }
-    if (!prefixes.isEmpty())
-        backends.insert(0, tr("All %1 images (%2)").arg(allType).arg(prefixes.join(" ").trimmed()));
-    backends << tr("All files (*)");
-    strFilter = backends.join(";;").trimmed();
-
-    /* Create open file dialog: */
-    QStringList files = QIFileDialog::getOpenFileNames(strHomeFolder, strFilter, this, title, 0, true, true);
-    if (!files.empty() && !files[0].isEmpty())
-    {
-        /* Get location: */
-        QString strLocation = files[0];
-
-        /* Open corresponding medium: */
-        CMedium comMedium = vbox.OpenMedium(strLocation, KDeviceType_HardDisk, KAccessMode_ReadWrite);
-
-        if (vbox.isOk())
-        {
-            /* Prepare vbox medium wrapper: */
-            VBoxMedium vboxMedium;
-
-            /* First of all we should test if that medium already opened: */
-            if (!vboxGlobal().findMedium(comMedium, vboxMedium))
-            {
-                /* And create new otherwise: */
-                vboxMedium = VBoxMedium(CMedium(comMedium), VBoxDefs::MediumType_HardDisk, KMediumState_Created);
-                vboxGlobal().addMedium(vboxMedium);
-            }
-
-            /* Ask medium combobox to select newly added medium: */
-            m_pDiskSelector->setCurrentItem(vboxMedium.id());
-
-            /* Update hard disk source: */
-            hardDiskSourceChanged();
-
-            m_pDiskSelector->setFocus();
-        }
-        else
-            vboxProblem().cannotOpenMedium(this, vbox, VBoxDefs::MediumType_HardDisk, strLocation);
+    /* Get opened vboxMedium id: */
+    QString strMediumId = vboxGlobal().openMediumWithFileOpenDialog(VBoxDefs::MediumType_HardDisk, this);
+    if (!strMediumId.isNull())
+    {
+        /* Update medium-combo if necessary: */
+        m_pDiskSelector->setCurrentItem(strMediumId);
+        /* Update hard disk source: */
+        hardDiskSourceChanged();
+        /* Focus on hard disk combo: */
+        m_pDiskSelector->setFocus();
     }
 }
