Index: /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 75368)
+++ /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 75369)
@@ -799,4 +799,5 @@
 	src/globals/UIModalWindowManager.h \
 	src/globals/UIPopupCenter.h \
+	src/globals/UIProgressEventHandler.h \
 	src/globals/UIShortcutPool.h \
 	src/globals/UIThreadPool.h \
@@ -1089,4 +1090,5 @@
 	src/globals/UIModalWindowManager.h \
 	src/globals/UIPopupCenter.h \
+	src/globals/UIProgressEventHandler.h \
 	src/globals/UIShortcutPool.h \
 	src/globals/UIThreadPool.h \
@@ -1243,5 +1245,4 @@
 	src/widgets/UIMiniToolBar.cpp \
 	src/widgets/UIPortForwardingTable.cpp \
-	src/widgets/UIProgressDialog.cpp \
 	src/widgets/UIStatusBarEditorWindow.cpp
 
@@ -1318,5 +1319,4 @@
 	src/widgets/UIHotKeyEditor.cpp \
 	src/widgets/UIPortForwardingTable.cpp \
-	src/widgets/UIProgressDialog.cpp \
 	src/widgets/UIStatusBarEditorWindow.cpp
 
@@ -1512,4 +1512,5 @@
 	src/globals/UIModalWindowManager.cpp \
 	src/globals/UIPopupCenter.cpp \
+	src/globals/UIProgressEventHandler.cpp \
 	src/globals/UIShortcutPool.cpp \
 	src/globals/UIThreadPool.cpp \
@@ -1854,4 +1855,5 @@
 	src/globals/UIModalWindowManager.cpp \
 	src/globals/UIPopupCenter.cpp \
+	src/globals/UIProgressEventHandler.cpp \
 	src/globals/UIShortcutPool.cpp \
 	src/globals/UIThreadPool.cpp \
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIProgressEventHandler.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIProgressEventHandler.cpp	(revision 75369)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIProgressEventHandler.cpp	(revision 75369)
@@ -0,0 +1,126 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIProgressEventHandler class implementation.
+ */
+
+/*
+ * Copyright (C) 2006-2018 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifdef VBOX_WITH_PRECOMPILED_HEADERS
+# include <precomp.h>
+#else  /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+/* GUI includes: */
+# include "UIExtraDataManager.h"
+# include "UIMainEventListener.h"
+# include "UIProgressEventHandler.h"
+# include "VBoxGlobal.h"
+# ifdef VBOX_WS_MAC
+#  include "VBoxUtils-darwin.h"
+# endif /* VBOX_WS_MAC */
+
+#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+UIProgressEventHandler::UIProgressEventHandler(QObject *pParent, const CProgress &comProgress)
+    : QObject(pParent)
+    , m_comProgress(comProgress)
+{
+    /* Prepare: */
+    prepare();
+}
+
+UIProgressEventHandler::~UIProgressEventHandler()
+{
+    /* Cleanup: */
+    cleanup();
+}
+
+void UIProgressEventHandler::prepare()
+{
+    /* Prepare: */
+    prepareListener();
+    prepareConnections();
+}
+
+void UIProgressEventHandler::prepareListener()
+{
+    /* Create event listener instance: */
+    m_pQtListener.createObject();
+    m_pQtListener->init(new UIMainEventListener, this);
+    m_comEventListener = CEventListener(m_pQtListener);
+
+    /* Get CProgress event source: */
+    CEventSource comEventSourceProgress = m_comProgress.GetEventSource();
+    AssertWrapperOk(comEventSourceProgress);
+
+    /* Enumerate all the required event-types: */
+    QVector<KVBoxEventType> eventTypes;
+    eventTypes
+        << KVBoxEventType_OnProgressPercentageChanged
+        << KVBoxEventType_OnProgressTaskCompleted;
+
+    /* Register event listener for CProgress event source: */
+    comEventSourceProgress.RegisterListener(m_comEventListener, eventTypes,
+        gEDataManager->eventHandlingType() == EventHandlingType_Active ? TRUE : FALSE);
+    AssertWrapperOk(comEventSourceProgress);
+
+    /* If event listener registered as passive one: */
+    if (gEDataManager->eventHandlingType() == EventHandlingType_Passive)
+    {
+        /* Register event sources in their listeners as well: */
+        m_pQtListener->getWrapped()->registerSource(comEventSourceProgress, m_comEventListener);
+    }
+}
+
+void UIProgressEventHandler::prepareConnections()
+{
+    /* Create direct (sync) connections for signals of main listener: */
+    connect(m_pQtListener->getWrapped(), &UIMainEventListener::sigProgressPercentageChange,
+            this, &UIProgressEventHandler::sigProgressPercentageChange,
+            Qt::DirectConnection);
+    connect(m_pQtListener->getWrapped(), &UIMainEventListener::sigProgressTaskComplete,
+            this, &UIProgressEventHandler::sigProgressTaskComplete,
+            Qt::DirectConnection);
+}
+
+void UIProgressEventHandler::cleanupConnections()
+{
+    /* Nothing for now. */
+}
+
+void UIProgressEventHandler::cleanupListener()
+{
+    /* If event listener registered as passive one: */
+    if (gEDataManager->eventHandlingType() == EventHandlingType_Passive)
+    {
+        /* Unregister everything: */
+        m_pQtListener->getWrapped()->unregisterSources();
+    }
+
+    /* Make sure VBoxSVC is available: */
+    if (!vboxGlobal().isVBoxSVCAvailable())
+        return;
+
+    /* Get CProgress event source: */
+    CEventSource comEventSourceProgress = m_comProgress.GetEventSource();
+    AssertWrapperOk(comEventSourceProgress);
+
+    /* Unregister event listener for CProgress event source: */
+    comEventSourceProgress.UnregisterListener(m_comEventListener);
+}
+
+void UIProgressEventHandler::cleanup()
+{
+    /* Cleanup: */
+    cleanupConnections();
+    cleanupListener();
+}
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIProgressEventHandler.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIProgressEventHandler.h	(revision 75369)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIProgressEventHandler.h	(revision 75369)
@@ -0,0 +1,81 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIProgressEventHandler class declaration.
+ */
+
+/*
+ * Copyright (C) 2009-2018 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef ___UIProgressEventHandler_h___
+#define ___UIProgressEventHandler_h___
+
+/* GUI includes: */
+ #include "UIMainEventListener.h"
+
+/* COM includes: */
+# include "CEventListener.h"
+# include "CEventSource.h"
+# include "CProgress.h"
+
+
+/** Private QObject extension
+  * providing UIExtraDataManager with the CVirtualBox event-source. */
+class SHARED_LIBRARY_STUFF UIProgressEventHandler : public QObject
+{
+    Q_OBJECT;
+
+signals:
+
+    /** Notifies about @a iPercent change for progress with @a uProgressId. */
+    void sigProgressPercentageChange(const QUuid &uProgressId, const int iPercent);
+    /** Notifies about task complete for progress with @a uProgressId. */
+    void sigProgressTaskComplete(const QUuid &uProgressId);
+
+public:
+
+    /** Constructs event proxy object on the basis of passed @a pParent. */
+    UIProgressEventHandler(QObject *pParent, const CProgress &comProgress);
+    /** Destructs event proxy object. */
+    virtual ~UIProgressEventHandler() /* override */;
+
+protected:
+
+    /** @name Prepare/Cleanup cascade.
+      * @{ */
+        /** Prepares all. */
+        void prepare();
+        /** Prepares listener. */
+        void prepareListener();
+        /** Prepares connections. */
+        void prepareConnections();
+
+        /** Cleanups connections. */
+        void cleanupConnections();
+        /** Cleanups listener. */
+        void cleanupListener();
+        /** Cleanups all. */
+        void cleanup();
+    /** @} */
+
+private:
+
+    /** Holds the progress wrapper. */
+    CProgress  m_comProgress;
+
+    /** Holds the Qt event listener instance. */
+    ComObjPtr<UIMainEventListenerImpl>  m_pQtListener;
+    /** Holds the COM event listener instance. */
+    CEventListener                      m_comEventListener;
+};
+
+
+#endif /* !___UIProgressEventHandler_h___ */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIProgressDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIProgressDialog.cpp	(revision 75368)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIProgressDialog.cpp	(revision 75369)
@@ -36,4 +36,5 @@
 # include "UIModalWindowManager.h"
 # include "UIProgressDialog.h"
+# include "UIProgressEventHandler.h"
 # include "UISpecialControls.h"
 # include "VBoxGlobal.h"
@@ -48,155 +49,4 @@
 
 #endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
-
-
-/** Private QObject extension
-  * providing UIExtraDataManager with the CVirtualBox event-source. */
-class UIProgressEventHandler : public QObject
-{
-    Q_OBJECT;
-
-signals:
-
-    /** Notifies about @a iPercent change for progress with @a uProgressId. */
-    void sigProgressPercentageChange(const QUuid &uProgressId, const int iPercent);
-    /** Notifies about task complete for progress with @a uProgressId. */
-    void sigProgressTaskComplete(const QUuid &uProgressId);
-
-public:
-
-    /** Constructs event proxy object on the basis of passed @a pParent. */
-    UIProgressEventHandler(QObject *pParent, const CProgress &comProgress);
-    /** Destructs event proxy object. */
-    virtual ~UIProgressEventHandler() /* override */;
-
-protected:
-
-    /** @name Prepare/Cleanup cascade.
-      * @{ */
-        /** Prepares all. */
-        void prepare();
-        /** Prepares listener. */
-        void prepareListener();
-        /** Prepares connections. */
-        void prepareConnections();
-
-        /** Cleanups connections. */
-        void cleanupConnections();
-        /** Cleanups listener. */
-        void cleanupListener();
-        /** Cleanups all. */
-        void cleanup();
-    /** @} */
-
-private:
-
-    /** Holds the progress wrapper. */
-    CProgress  m_comProgress;
-
-    /** Holds the Qt event listener instance. */
-    ComObjPtr<UIMainEventListenerImpl>  m_pQtListener;
-    /** Holds the COM event listener instance. */
-    CEventListener                      m_comEventListener;
-};
-
-
-/*********************************************************************************************************************************
-*   Class UIProgressEventHandler implementation.                                                                                 *
-*********************************************************************************************************************************/
-
-UIProgressEventHandler::UIProgressEventHandler(QObject *pParent, const CProgress &comProgress)
-    : QObject(pParent)
-    , m_comProgress(comProgress)
-{
-    /* Prepare: */
-    prepare();
-}
-
-UIProgressEventHandler::~UIProgressEventHandler()
-{
-    /* Cleanup: */
-    cleanup();
-}
-
-void UIProgressEventHandler::prepare()
-{
-    /* Prepare: */
-    prepareListener();
-    prepareConnections();
-}
-
-void UIProgressEventHandler::prepareListener()
-{
-    /* Create event listener instance: */
-    m_pQtListener.createObject();
-    m_pQtListener->init(new UIMainEventListener, this);
-    m_comEventListener = CEventListener(m_pQtListener);
-
-    /* Get CProgress event source: */
-    CEventSource comEventSourceProgress = m_comProgress.GetEventSource();
-    AssertWrapperOk(comEventSourceProgress);
-
-    /* Enumerate all the required event-types: */
-    QVector<KVBoxEventType> eventTypes;
-    eventTypes
-        << KVBoxEventType_OnProgressPercentageChanged
-        << KVBoxEventType_OnProgressTaskCompleted;
-
-    /* Register event listener for CProgress event source: */
-    comEventSourceProgress.RegisterListener(m_comEventListener, eventTypes,
-        gEDataManager->eventHandlingType() == EventHandlingType_Active ? TRUE : FALSE);
-    AssertWrapperOk(comEventSourceProgress);
-
-    /* If event listener registered as passive one: */
-    if (gEDataManager->eventHandlingType() == EventHandlingType_Passive)
-    {
-        /* Register event sources in their listeners as well: */
-        m_pQtListener->getWrapped()->registerSource(comEventSourceProgress, m_comEventListener);
-    }
-}
-
-void UIProgressEventHandler::prepareConnections()
-{
-    /* Create direct (sync) connections for signals of main listener: */
-    connect(m_pQtListener->getWrapped(), &UIMainEventListener::sigProgressPercentageChange,
-            this, &UIProgressEventHandler::sigProgressPercentageChange,
-            Qt::DirectConnection);
-    connect(m_pQtListener->getWrapped(), &UIMainEventListener::sigProgressTaskComplete,
-            this, &UIProgressEventHandler::sigProgressTaskComplete,
-            Qt::DirectConnection);
-}
-
-void UIProgressEventHandler::cleanupConnections()
-{
-    /* Nothing for now. */
-}
-
-void UIProgressEventHandler::cleanupListener()
-{
-    /* If event listener registered as passive one: */
-    if (gEDataManager->eventHandlingType() == EventHandlingType_Passive)
-    {
-        /* Unregister everything: */
-        m_pQtListener->getWrapped()->unregisterSources();
-    }
-
-    /* Make sure VBoxSVC is available: */
-    if (!vboxGlobal().isVBoxSVCAvailable())
-        return;
-
-    /* Get CProgress event source: */
-    CEventSource comEventSourceProgress = m_comProgress.GetEventSource();
-    AssertWrapperOk(comEventSourceProgress);
-
-    /* Unregister event listener for CProgress event source: */
-    comEventSourceProgress.UnregisterListener(m_comEventListener);
-}
-
-void UIProgressEventHandler::cleanup()
-{
-    /* Cleanup: */
-    cleanupConnections();
-    cleanupListener();
-}
 
 
@@ -764,6 +614,2 @@
     }
 }
-
-
-#include "UIProgressDialog.moc"
-
