Index: /trunk/src/VBox/Frontends/VirtualBox/VirtualBox1.qrc
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/VirtualBox1.qrc	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/VirtualBox1.qrc	(revision 46582)
@@ -249,4 +249,6 @@
         <file alias="video_capture_16px.png">images/video_capture_16px.png</file>
         <file alias="video_capture_disabled_16px.png">images/video_capture_disabled_16px.png</file>
+        <file alias="video_capture_settings_16px.png">images/video_capture_settings_16px.png</file>
+        <file alias="video_capture_write_16px.png">images/video_capture_write_16px.png</file>
     </qresource>
 </RCC>
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 46582)
@@ -882,4 +882,21 @@
 };
 
+class UIActionMenuVideoCapture : public UIActionMenu
+{
+    Q_OBJECT;
+
+public:
+
+    UIActionMenuVideoCapture(UIActionPool *pParent)
+        : UIActionMenu(pParent)
+    {
+        retranslateUi();
+    }
+
+protected:
+
+    void retranslateUi() {}
+};
+
 class UIActionToggleVideoCapture : public UIActionToggle
 {
@@ -906,4 +923,30 @@
         setName(QApplication::translate("UIActionPool", "Enable &Video Capture"));
         setStatusTip(QApplication::translate("UIActionPool", "Enable video capture"));
+    }
+};
+
+class UIActionSimpleShowVideoCaptureOptions : public UIActionSimple
+{
+    Q_OBJECT;
+
+public:
+
+    UIActionSimpleShowVideoCaptureOptions(UIActionPool *pParent)
+        : UIActionSimple(pParent, ":/video_capture_settings_16px.png")
+    {
+        retranslateUi();
+    }
+
+protected:
+
+    QString shortcutExtraDataID() const
+    {
+        return QString("VideoCaptureOptions");
+    }
+
+    void retranslateUi()
+    {
+        setName(QApplication::translate("UIActionPool", "&Video Capture Options..."));
+        setStatusTip(QApplication::translate("UIActionPool", "Configure video capture options"));
     }
 };
@@ -1173,4 +1216,5 @@
     m_pool[UIActionIndexRuntime_Toggle_VRDEServer] = new UIActionToggleVRDEServer(this);
     m_pool[UIActionIndexRuntime_Toggle_VideoCapture] = new UIActionToggleVideoCapture(this);
+    m_pool[UIActionIndexRuntime_Simple_VideoCaptureOptions] = new UIActionSimpleShowVideoCaptureOptions(this);
     m_pool[UIActionIndexRuntime_Simple_InstallGuestTools] = new UIActionSimplePerformInstallGuestTools(this);
 
@@ -1242,4 +1286,7 @@
         delete m_pool[UIActionIndexRuntime_Menu_SharedFolders];
     m_pool[UIActionIndexRuntime_Menu_SharedFolders] = new UIActionMenuSharedFolders(this);
+    if (m_pool[UIActionIndexRuntime_Menu_VideoCapture])
+        delete m_pool[UIActionIndexRuntime_Menu_VideoCapture];
+    m_pool[UIActionIndexRuntime_Menu_VideoCapture] = new UIActionMenuVideoCapture(this);
 
 #ifdef VBOX_WITH_DEBUGGER_GUI
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 46582)
@@ -65,5 +65,7 @@
     UIActionIndexRuntime_Simple_SharedFoldersDialog,
     UIActionIndexRuntime_Toggle_VRDEServer,
+    UIActionIndexRuntime_Menu_VideoCapture,
     UIActionIndexRuntime_Toggle_VideoCapture,
+    UIActionIndexRuntime_Simple_VideoCaptureOptions,
     UIActionIndexRuntime_Simple_InstallGuestTools,
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp	(revision 46582)
@@ -495,20 +495,85 @@
 };
 
-class UIIndicatorVRDEDisks : public QIWithRetranslateUI<QIStateIndicator>
-{
-    Q_OBJECT;
-
-public:
-
-    UIIndicatorVRDEDisks(CSession &session)
-      : QIWithRetranslateUI<QIStateIndicator>()
-      , m_session(session)
-    {
-        setStateIcon(0, QPixmap (":/vrdp_disabled_16px.png"));
-        setStateIcon(1, QPixmap (":/vrdp_16px.png"));
-
-        retranslateUi();
-    }
-
+class UIIndicatorVideoCapture : public QIWithRetranslateUI<QIStateIndicator>
+{
+    Q_OBJECT;
+
+public:
+
+    /* State enumerator: */
+    enum UIIndicatorStateVideoCapture
+    {
+        UIIndicatorStateVideoCapture_Disabled = 0,
+        UIIndicatorStateVideoCapture_Enabled  = 1,
+        UIIndicatorStateVideoCapture_Writing  = 2
+    };
+
+    /* Constructor: */
+    UIIndicatorVideoCapture(CSession &session)
+        : QIWithRetranslateUI<QIStateIndicator>()
+        , m_session(session)
+        , m_pUpdateTimer(new QTimer(this))
+    {
+        /* Assign state icons: */
+        setStateIcon(UIIndicatorStateVideoCapture_Disabled, QPixmap(":/video_capture_disabled_16px.png"));
+        setStateIcon(UIIndicatorStateVideoCapture_Enabled,  QPixmap(":/video_capture_16px.png"));
+        setStateIcon(UIIndicatorStateVideoCapture_Writing,  QPixmap(":/video_capture_write_16px.png"));
+
+        /* Connect timer to update active state: */
+        connect(m_pUpdateTimer, SIGNAL(timeout()), SLOT(sltUpdateState()));
+        m_pUpdateTimer->start(500);
+
+        /* Translate finally: */
+        retranslateUi();
+    }
+
+    /* API: Update stuff: */
+    void updateAppearance()
+    {
+        /* Get machine: */
+        CMachine machine = m_session.GetMachine();
+
+        /* Update LED state: */
+        setState(machine.GetVideoCaptureEnabled());
+
+        /* Update LED tool-tip: */
+        QString strToolTip = QApplication::translate("UIIndicatorsPool", "<nobr>Indicates the activity of the video capture:</nobr>");
+        strToolTip += "<br>";
+        switch (state())
+        {
+            case UIIndicatorStateVideoCapture_Disabled:
+            {
+                strToolTip += QApplication::translate("UIIndicatorsPool", "<b>Video capture disabled</b>");
+                break;
+            }
+            case UIIndicatorStateVideoCapture_Enabled:
+            case UIIndicatorStateVideoCapture_Writing:
+            {
+                strToolTip += QApplication::translate("UIIndicatorsPool", "<nobr><b>Video capture file:</b> %1</nobr>")
+                                                                          .arg(machine.GetVideoCaptureFile());
+                break;
+            }
+            default:
+                break;
+        }
+        setToolTip(strToolTip);
+    }
+
+protected slots:
+
+    /* Handler: Update stuff: */
+    void sltUpdateState()
+    {
+        /* Toggle state from 'Enabled' to 'Writing': */
+        if (state() == UIIndicatorStateVideoCapture_Enabled)
+            setState(UIIndicatorStateVideoCapture_Writing);
+        /* Toggle state from 'Writing' to 'Enabled': */
+        else if (state() == UIIndicatorStateVideoCapture_Writing)
+            setState(UIIndicatorStateVideoCapture_Enabled);
+    }
+
+protected:
+
+    /* Handler: Translate stuff: */
     void retranslateUi()
     {
@@ -516,27 +581,8 @@
     }
 
-    void updateAppearance()
-    {
-        CVRDEServer srv = m_session.GetMachine().GetVRDEServer();
-        if (!srv.isNull())
-        {
-            /* update menu&status icon state */
-            bool fEnabled = srv.GetEnabled();
-
-            setState(fEnabled ? KDeviceActivity_Idle : KDeviceActivity_Null);
-
-            QString tip = QApplication::translate("UIIndicatorsPool", "Indicates whether the Remote Desktop Server "
-                             "is enabled (<img src=:/vrdp_16px.png/>) or not "
-                             "(<img src=:/vrdp_disabled_16px.png/>).");
-            if (srv.GetEnabled())
-                tip += QApplication::translate("UIIndicatorsPool", "<hr>The Remote Desktop Server is listening on port %1").arg(srv.GetVRDEProperty("TCP/Ports"));
-            setToolTip(tip);
-        }
-    }
-
-protected:
-    /* For compatibility reason we do it here, later this should be moved to
-     * QIStateIndicator. */
-    CSession &m_session;
+    /* For compatibility reason we do it here,
+     * later this should be moved to QIStateIndicator. */
+    CSession &m_session;
+    QTimer *m_pUpdateTimer;
 };
 
@@ -740,4 +786,7 @@
                 m_IndicatorsPool[index] = new UIIndicatorSharedFolders(m_session);
                 break;
+            case UIIndicatorIndex_VideoCapture:
+                m_IndicatorsPool[index] = new UIIndicatorVideoCapture(m_session);
+                break;
             case UIIndicatorIndex_Virtualization:
                 m_IndicatorsPool[index] = new UIIndicatorVirtualization(m_session);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.h	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.h	(revision 46582)
@@ -33,5 +33,5 @@
     UIIndicatorIndex_USBDevices,
     UIIndicatorIndex_SharedFolders,
-    UIIndicatorIndex_VRDP,
+    UIIndicatorIndex_VideoCapture,
     UIIndicatorIndex_Virtualization,
     UIIndicatorIndex_Mouse,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineDefs.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineDefs.h	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineDefs.h	(revision 46582)
@@ -43,6 +43,6 @@
     UIVisualElement_NetworkStuff          = RT_BIT(6),
     UIVisualElement_USBStuff              = RT_BIT(7),
-    UIVisualElement_VRDPStuff             = RT_BIT(8),
-    UIVisualElement_SharedFolderStuff     = RT_BIT(9),
+    UIVisualElement_SharedFolderStuff     = RT_BIT(8),
+    UIVisualElement_VideoCapture          = RT_BIT(9),
     UIVisualElement_VirtualizationStuff   = RT_BIT(10),
     UIVisualElement_MiniToolBar           = RT_BIT(11),
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 46582)
@@ -747,5 +747,7 @@
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Simple_SharedFoldersDialog));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Toggle_VRDEServer));
+    m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Menu_VideoCapture));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Toggle_VideoCapture));
+    m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Simple_VideoCaptureOptions));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Simple_InstallGuestTools));
 
@@ -811,4 +813,6 @@
     connect(gActionPool->action(UIActionIndexRuntime_Toggle_VideoCapture), SIGNAL(toggled(bool)),
             this, SLOT(sltToggleVideoCapture(bool)));
+    connect(gActionPool->action(UIActionIndexRuntime_Simple_VideoCaptureOptions), SIGNAL(triggered()),
+            this, SLOT(sltOpenVideoCaptureOptions()));
     connect(gActionPool->action(UIActionIndexRuntime_Simple_InstallGuestTools), SIGNAL(triggered()),
             this, SLOT(sltInstallGuestAdditions()));
@@ -1312,5 +1316,6 @@
 }
 
-void UIMachineLogic::sltOpenVMSettingsDialog(const QString &strCategory /* = QString() */)
+void UIMachineLogic::sltOpenVMSettingsDialog(const QString &strCategory /* = QString() */,
+                                             const QString &strControl /*= QString()*/)
 {
     /* Do not process if window(s) missed! */
@@ -1322,5 +1327,5 @@
     QPointer<UISettingsDialogMachine> pDialog = new UISettingsDialogMachine(activeMachineWindow(),
                                                                             session().GetMachine().GetId(),
-                                                                            strCategory, QString());
+                                                                            strCategory, strControl);
     /* Executing VM settings dialog.
      * This blocking function calls for the internal event-loop to process all further events,
@@ -1901,5 +1906,5 @@
     /* Make sure something had changed: */
     CMachine machine = session().GetMachine();
-    if (machine.GetVideoCaptureEnabled() == fEnabled)
+    if (machine.GetVideoCaptureEnabled() == static_cast<BOOL>(fEnabled))
         return;
 
@@ -1919,4 +1924,10 @@
     if (!machine.isOk())
         msgCenter().cannotSaveMachineSettings(machine, activeMachineWindow());
+}
+
+void UIMachineLogic::sltOpenVideoCaptureOptions()
+{
+    /* Open VM settings : Display page : Video Capture tab: */
+    sltOpenVMSettingsDialog("#display", "m_pCheckboxVideoCapture");
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 46582)
@@ -193,5 +193,5 @@
 
     /* "Device" menu functionality: */
-    void sltOpenVMSettingsDialog(const QString &strCategory = QString());
+    void sltOpenVMSettingsDialog(const QString &strCategory = QString(), const QString &strControl = QString());
     void sltOpenNetworkAdaptersDialog();
     void sltOpenSharedFoldersDialog();
@@ -207,4 +207,5 @@
     void sltSwitchVrde(bool fOn);
     void sltToggleVideoCapture(bool fEnabled);
+    void sltOpenVideoCaptureOptions();
     void sltInstallGuestAdditions();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp	(revision 46582)
@@ -244,4 +244,5 @@
     pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_NetworkAdaptersDialog));
     pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_SharedFoldersDialog));
+    pMenu->addSeparator();
     pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Toggle_VRDEServer));
     pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Toggle_VideoCapture));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 46582)
@@ -996,4 +996,5 @@
     gActionPool->action(UIActionIndexRuntime_Simple_SettingsDialog)->setEnabled(fAllowReconfiguration);
     gActionPool->action(UIActionIndexRuntime_Simple_SharedFoldersDialog)->setEnabled(fAllowReconfiguration);
+    gActionPool->action(UIActionIndexRuntime_Simple_VideoCaptureOptions)->setEnabled(fAllowReconfiguration);
     gActionPool->action(UIActionIndexRuntime_Simple_NetworkAdaptersDialog)->setEnabled(fAllowReconfiguration);
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp	(revision 46582)
@@ -62,4 +62,13 @@
 }
 
+void UIMachineLogicNormal::sltPrepareVideoCaptureMenu()
+{
+    QMenu *pMenu = qobject_cast<QMenu*>(sender());
+    AssertMsg(pMenu, ("This slot should be called only on Video Capture menu show!\n"));
+    pMenu->clear();
+    pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Toggle_VideoCapture));
+    pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_VideoCaptureOptions));
+}
+
 void UIMachineLogicNormal::sltPrepareMouseIntegrationMenu()
 {
@@ -80,4 +89,6 @@
     connect(gActionPool->action(UIActionIndexRuntime_Menu_SharedFolders)->menu(), SIGNAL(aboutToShow()),
             this, SLOT(sltPrepareSharedFoldersMenu()));
+    connect(gActionPool->action(UIActionIndexRuntime_Menu_VideoCapture)->menu(), SIGNAL(aboutToShow()),
+            this, SLOT(sltPrepareVideoCaptureMenu()));
     connect(gActionPool->action(UIActionIndexRuntime_Menu_MouseIntegration)->menu(), SIGNAL(aboutToShow()),
             this, SLOT(sltPrepareMouseIntegrationMenu()));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.h	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.h	(revision 46582)
@@ -41,4 +41,5 @@
     void sltPrepareNetworkAdaptersMenu();
     void sltPrepareSharedFoldersMenu();
+    void sltPrepareVideoCaptureMenu();
     void sltPrepareMouseIntegrationMenu();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 46582)
@@ -100,4 +100,10 @@
 }
 
+void UIMachineWindowNormal::sltVideoCaptureChange()
+{
+    /* Update video-capture stuff: */
+    updateAppearanceOf(UIVisualElement_VideoCapture);
+}
+
 void UIMachineWindowNormal::sltCPUExecutionCapChange()
 {
@@ -149,4 +155,10 @@
             gActionPool->action(UIActionIndexRuntime_Menu_SharedFolders)->menu()->exec(pEvent->globalPos());
     }
+    /* Show video-capture LED context menu: */
+    else if (pIndicator == indicatorsPool()->indicator(UIIndicatorIndex_VideoCapture))
+    {
+        if (gActionPool->action(UIActionIndexRuntime_Menu_VideoCapture)->isEnabled())
+            gActionPool->action(UIActionIndexRuntime_Menu_VideoCapture)->menu()->exec(pEvent->globalPos());
+    }
     /* Show mouse LED context menu: */
     else if (pIndicator == indicatorsPool()->indicator(UIIndicatorIndex_Mouse))
@@ -187,4 +199,8 @@
     connect(machineLogic()->uisession(), SIGNAL(sigSharedFolderChange()),
             this, SLOT(sltSharedFolderChange()));
+
+    /* Video capture change updater: */
+    connect(machineLogic()->uisession(), SIGNAL(sigVideoCaptureChange()),
+            this, SLOT(sltVideoCaptureChange()));
 
     /* CPU execution cap change updater: */
@@ -247,4 +263,10 @@
     pIndicatorBoxHLayout->addWidget(pLedSharedFolders);
     connect(pLedSharedFolders, SIGNAL(contextMenuRequested(QIStateIndicator*, QContextMenuEvent*)),
+            this, SLOT(sltShowIndicatorsContextMenu(QIStateIndicator*, QContextMenuEvent*)));
+
+    /* Video Capture: */
+    QIStateIndicator *pLedVideoCapture = indicatorsPool()->indicator(UIIndicatorIndex_VideoCapture);
+    pIndicatorBoxHLayout->addWidget(pLedVideoCapture);
+    connect(pLedVideoCapture, SIGNAL(contextMenuRequested(QIStateIndicator*, QContextMenuEvent*)),
             this, SLOT(sltShowIndicatorsContextMenu(QIStateIndicator*, QContextMenuEvent*)));
 
@@ -556,4 +578,6 @@
     if (iElement & UIVisualElement_SharedFolderStuff)
         indicatorsPool()->indicator(UIIndicatorIndex_SharedFolders)->updateAppearance();
+    if (iElement & UIVisualElement_VideoCapture)
+        indicatorsPool()->indicator(UIIndicatorIndex_VideoCapture)->updateAppearance();
     if (iElement & UIVisualElement_VirtualizationStuff)
         indicatorsPool()->indicator(UIIndicatorIndex_Virtualization)->updateAppearance();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.h	(revision 46581)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.h	(revision 46582)
@@ -50,4 +50,5 @@
     void sltNetworkAdapterChange();
     void sltSharedFolderChange();
+    void sltVideoCaptureChange();
     void sltCPUExecutionCapChange();
 
