Index: /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc	(revision 50308)
+++ /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc	(revision 50309)
@@ -75,4 +75,6 @@
         <file alias="hd_16px.png">images/hd_16px.png</file>
         <file alias="hd_disabled_16px.png">images/hd_disabled_16px.png</file>
+        <file alias="hd_settings_16px.png">images/hd_settings_16px.png</file>
+        <file alias="hd_settings_disabled_16px.png">images/hd_settings_disabled_16px.png</file>
         <file alias="hd_32px.png">images/hd_32px.png</file>
         <file alias="hd_disabled_32px.png">images/hd_disabled_32px.png</file>
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 50308)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 50309)
@@ -664,4 +664,48 @@
     {
         setName(QApplication::translate("UIActionPool", "&Devices"));
+    }
+};
+
+class UIActionMenuHardDisks : public UIActionMenu
+{
+    Q_OBJECT;
+
+public:
+
+    UIActionMenuHardDisks(UIActionPool *pParent)
+        : UIActionMenu(pParent, ":/hd_16px.png", ":/hd_disabled_16px.png")
+    {
+        qobject_cast<UIMenu*>(menu())->setShowToolTips(true);
+        retranslateUi();
+    }
+
+protected:
+
+    void retranslateUi() {}
+};
+
+class UIActionSimpleShowStorageSettingsDialog : public UIActionSimple
+{
+    Q_OBJECT;
+
+public:
+
+    UIActionSimpleShowStorageSettingsDialog(UIActionPool *pParent)
+        : UIActionSimple(pParent, ":/hd_settings_16px.png", ":/hd_settings_disabled_16px.png")
+    {
+        retranslateUi();
+    }
+
+protected:
+
+    QString shortcutExtraDataID() const
+    {
+        return QString("StorageSettingsDialog");
+    }
+
+    void retranslateUi()
+    {
+        setName(QApplication::translate("UIActionPool", "&Storage Settings..."));
+        setStatusTip(QApplication::translate("UIActionPool", "Change the settings of storage devices"));
     }
 };
@@ -1239,4 +1283,5 @@
 
     /* 'Devices' actions: */
+    m_pool[UIActionIndexRuntime_Simple_StorageSettings] = new UIActionSimpleShowStorageSettingsDialog(this);
     m_pool[UIActionIndexRuntime_Simple_NetworkSettings] = new UIActionSimpleShowNetworkSettingsDialog(this);
     m_pool[UIActionIndexRuntime_Simple_SharedFoldersSettings] = new UIActionSimpleShowSharedFoldersSettingsDialog(this);
@@ -1292,4 +1337,7 @@
         delete m_pool[UIActionIndexRuntime_Menu_Devices];
     m_pool[UIActionIndexRuntime_Menu_Devices] = new UIActionMenuDevices(this);
+    if (m_pool[UIActionIndexRuntime_Menu_HardDisks])
+        delete m_pool[UIActionIndexRuntime_Menu_HardDisks];
+    m_pool[UIActionIndexRuntime_Menu_HardDisks] = new UIActionMenuHardDisks(this);
     if (m_pool[UIActionIndexRuntime_Menu_OpticalDevices])
         delete m_pool[UIActionIndexRuntime_Menu_OpticalDevices];
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 50308)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 50309)
@@ -55,4 +55,6 @@
     /* 'Devices' menu actions: */
     UIActionIndexRuntime_Menu_Devices,
+    UIActionIndexRuntime_Menu_HardDisks,
+    UIActionIndexRuntime_Simple_StorageSettings,
     UIActionIndexRuntime_Menu_OpticalDevices,
     UIActionIndexRuntime_Menu_FloppyDevices,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 50308)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 50309)
@@ -827,4 +827,6 @@
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Toggle_MouseIntegration));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Toggle_Pause));
+    m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Menu_HardDisks));
+    m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Simple_StorageSettings));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Menu_OpticalDevices));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Menu_FloppyDevices));
@@ -886,4 +888,6 @@
 
     /* "Devices" actions connections: */
+    connect(gActionPool->action(UIActionIndexRuntime_Simple_StorageSettings), SIGNAL(triggered()),
+            this, SLOT(sltOpenStorageSettingsDialog()));
     connect(gActionPool->action(UIActionIndexRuntime_Menu_OpticalDevices)->menu(), SIGNAL(aboutToShow()),
             this, SLOT(sltPrepareStorageMenu()));
@@ -1453,4 +1457,10 @@
     foreach (UIMachineWindow *pMachineWindow, machineWindows())
         pMachineWindow->updateAppearanceOf(UIVisualElement_HDStuff | UIVisualElement_CDStuff | UIVisualElement_FDStuff);
+}
+
+void UIMachineLogic::sltOpenStorageSettingsDialog()
+{
+    /* Machine settings: Storage page: */
+    sltOpenVMSettingsDialog("#storage");
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 50308)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 50309)
@@ -199,4 +199,5 @@
     /* "Device" menu functionality: */
     void sltOpenVMSettingsDialog(const QString &strCategory = QString(), const QString &strControl = QString());
+    void sltOpenStorageSettingsDialog();
     void sltOpenNetworkAdaptersDialog();
     void sltOpenSharedFoldersDialog();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 50308)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 50309)
@@ -1260,4 +1260,5 @@
     bool fAllowReconfiguration = m_machineState != KMachineState_Stuck && m_fReconfigurable;
     gActionPool->action(UIActionIndexRuntime_Simple_SettingsDialog)->setEnabled(fAllowReconfiguration);
+    gActionPool->action(UIActionIndexRuntime_Simple_StorageSettings)->setEnabled(fAllowReconfiguration);
     gActionPool->action(UIActionIndexRuntime_Simple_SharedFoldersSettings)->setEnabled(fAllowReconfiguration);
     gActionPool->action(UIActionIndexRuntime_Simple_VideoCaptureSettings)->setEnabled(fAllowReconfiguration);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp	(revision 50308)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp	(revision 50309)
@@ -67,4 +67,12 @@
 }
 
+void UIMachineLogicNormal::sltPrepareHardDisksMenu()
+{
+    QMenu *pMenu = qobject_cast<QMenu*>(sender());
+    AssertMsg(pMenu, ("This slot should be called only on Hard Disks menu show!\n"));
+    pMenu->clear();
+    pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_StorageSettings));
+}
+
 void UIMachineLogicNormal::sltPrepareSharedFoldersMenu()
 {
@@ -106,4 +114,6 @@
 
     /* "Device" actions connections: */
+    connect(gActionPool->action(UIActionIndexRuntime_Menu_HardDisks)->menu(), SIGNAL(aboutToShow()),
+            this, SLOT(sltPrepareHardDisksMenu()));
     connect(gActionPool->action(UIActionIndexRuntime_Menu_SharedFolders)->menu(), SIGNAL(aboutToShow()),
             this, SLOT(sltPrepareSharedFoldersMenu()));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.h	(revision 50308)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.h	(revision 50309)
@@ -40,4 +40,5 @@
 
     /* Windowed mode functionality: */
+    void sltPrepareHardDisksMenu();
     void sltPrepareSharedFoldersMenu();
     void sltPrepareVideoCaptureMenu();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 50308)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 50309)
@@ -133,6 +133,12 @@
 void UIMachineWindowNormal::sltShowIndicatorsContextMenu(QIStateIndicator *pIndicator, QContextMenuEvent *pEvent)
 {
+    /* Show hard-disks LED context menu: */
+    if (pIndicator == indicatorsPool()->indicator(IndicatorType_HardDisks))
+    {
+        if (gActionPool->action(UIActionIndexRuntime_Menu_HardDisks)->isEnabled())
+            gActionPool->action(UIActionIndexRuntime_Menu_HardDisks)->menu()->exec(pEvent->globalPos());
+    }
     /* Show optical-disks LED context menu: */
-    if (pIndicator == indicatorsPool()->indicator(IndicatorType_OpticalDisks))
+    else if (pIndicator == indicatorsPool()->indicator(IndicatorType_OpticalDisks))
     {
         if (gActionPool->action(UIActionIndexRuntime_Menu_OpticalDevices)->isEnabled())
@@ -249,4 +255,6 @@
     {
         pIndicatorBoxHLayout->addWidget(pLedHardDisks);
+        connect(pLedHardDisks, SIGNAL(contextMenuRequested(QIStateIndicator*, QContextMenuEvent*)),
+                this, SLOT(sltShowIndicatorsContextMenu(QIStateIndicator*, QContextMenuEvent*)));
         fAtLeastOneAddedToLeftSection = true;
     }
