Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 50716)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 50717)
@@ -74,8 +74,10 @@
     { refresh(); }
 
-    /** Removes UIMedium wrapped by <i>this</i> item. */
-    virtual bool remove() = 0;
     /** Copy UIMedium wrapped by <i>this</i> item. */
     virtual bool copy() = 0;
+    /** Modify UIMedium wrapped by <i>this</i> item. */
+    virtual bool modify() = 0;
+    /** Remove UIMedium wrapped by <i>this</i> item. */
+    virtual bool remove() = 0;
 
     /** Refreshes item fully. */
@@ -172,34 +174,4 @@
 protected:
 
-    /** Removes UIMedium wrapped by <i>this</i> item. */
-    bool remove()
-    {
-        /* Confirm medium removal: */
-        if (!msgCenter().confirmMediumRemoval(medium(), treeWidget()))
-            return false;
-
-        /* Remember some of hard-disk attributes: */
-        CMedium hardDisk = medium().medium();
-        QString strMediumID = id();
-
-        /* Propose to remove medium storage: */
-        if (!maybeRemoveStorage())
-            return false;
-
-        /* Close hard-disk: */
-        hardDisk.Close();
-        if (!hardDisk.isOk())
-        {
-            msgCenter().cannotCloseMedium(medium(), hardDisk, treeWidget());
-            return false;
-        }
-
-        /* Remove UIMedium finally: */
-        vboxGlobal().deleteMedium(strMediumID);
-
-        /* True by default: */
-        return true;
-    }
-
     /** Copy UIMedium wrapped by <i>this</i> item. */
     bool copy()
@@ -213,4 +185,58 @@
         if (pWizard)
             delete pWizard;
+
+        /* True by default: */
+        return true;
+    }
+
+    /** Modify UIMedium wrapped by <i>this</i> item. */
+    bool modify()
+    {
+        /* False by default: */
+        bool fResult = false;
+
+        /* Show Modify VD dialog: */
+        UISafePointerDialog pDialog = new UIMediumTypeChangeDialog(treeWidget(), id());
+        if (pDialog->exec() == QDialog::Accepted)
+        {
+            /* Update medium-item: */
+            refreshAll();
+            /* Change to passed: */
+            fResult = true;
+        }
+
+        /* Delete if still exists: */
+        if (pDialog)
+            delete pDialog;
+
+        /* Return result: */
+        return fResult;
+    }
+
+    /** Remove UIMedium wrapped by <i>this</i> item. */
+    bool remove()
+    {
+        /* Confirm medium removal: */
+        if (!msgCenter().confirmMediumRemoval(medium(), treeWidget()))
+            return false;
+
+        /* Remember some of hard-disk attributes: */
+        CMedium hardDisk = medium().medium();
+        QString strMediumID = id();
+
+        /* Propose to remove medium storage: */
+        if (!maybeRemoveStorage())
+            return false;
+
+        /* Close hard-disk: */
+        hardDisk.Close();
+        if (!hardDisk.isOk())
+        {
+            msgCenter().cannotCloseMedium(medium(), hardDisk, treeWidget());
+            return false;
+        }
+
+        /* Remove UIMedium finally: */
+        vboxGlobal().deleteMedium(strMediumID);
 
         /* True by default: */
@@ -281,5 +307,17 @@
 protected:
 
-    /** Removes UIMedium wrapped by <i>this</i> item. */
+    /** Copy UIMedium wrapped by <i>this</i> item. */
+    bool copy()
+    {
+        AssertMsgFailedReturn(("That functionality in not supported!\n"), false);
+    }
+
+    /** Modify UIMedium wrapped by <i>this</i> item. */
+    bool modify()
+    {
+        AssertMsgFailedReturn(("That functionality in not supported!\n"), false);
+    }
+
+    /** Remove UIMedium wrapped by <i>this</i> item. */
     bool remove()
     {
@@ -305,10 +343,4 @@
         /* True by default: */
         return true;
-    }
-
-    /** Copy UIMedium wrapped by <i>this</i> item. */
-    bool copy()
-    {
-        AssertMsgFailedReturn(("That functionality in not supported!\n"), false);
     }
 };
@@ -326,5 +358,17 @@
 protected:
 
-    /** Removes UIMedium wrapped by <i>this</i> item. */
+    /** Copy UIMedium wrapped by <i>this</i> item. */
+    bool copy()
+    {
+        AssertMsgFailedReturn(("That functionality in not supported!\n"), false);
+    }
+
+    /** Modify UIMedium wrapped by <i>this</i> item. */
+    bool modify()
+    {
+        AssertMsgFailedReturn(("That functionality in not supported!\n"), false);
+    }
+
+    /** Remove UIMedium wrapped by <i>this</i> item. */
     bool remove()
     {
@@ -350,10 +394,4 @@
         /* True by default: */
         return true;
-    }
-
-    /** Copy UIMedium wrapped by <i>this</i> item. */
-    bool copy()
-    {
-        AssertMsgFailedReturn(("That functionality in not supported!\n"), false);
     }
 };
@@ -606,17 +644,10 @@
     AssertReturnVoid(!pMediumItem->id().isNull());
 
-    /* Show Modify VD dialog: */
-    UISafePointerDialog pDialog = new UIMediumTypeChangeDialog(this, pMediumItem->id());
-    if (pDialog->exec() == QDialog::Accepted)
-    {
-        /* Update medium-item: */
-        pMediumItem->refreshAll();
-        /* Update HD information-panes: */
+    /* Modify current medium-item: */
+    bool fResult = pMediumItem->modify();
+
+    /* Update HD information-panes: */
+    if (fResult)
         updateInformationPanesHD();
-    }
-
-    /* Delete if still exists: */
-    if (pDialog)
-        delete pDialog;
 }
 
