Index: /trunk/Config.kmk
===================================================================
--- /trunk/Config.kmk	(revision 79364)
+++ /trunk/Config.kmk	(revision 79365)
@@ -255,5 +255,5 @@
 #	src/VBox/Devices/PC/PXE/client/uinit.asm
 #	src/VBox/RDP/webclient/flash/com/sun/network/rdp/Version.as
-#	src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
+#	src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp
 #	src/VBox/Frontends/VirtualBox/src/settings/global/VBoxGLSettingsLanguage.cpp
 #	src/VBox/Frontends/VirtualBox/nls/*.ts
Index: /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 79365)
@@ -35,9 +35,9 @@
  PROGRAMS += VirtualBoxHardenedVM
  DLLS += VirtualBoxVM
- DLLS += VBoxGlobal
+ DLLS += UICommon
 else
  PROGRAMS += VirtualBox
  PROGRAMS += VirtualBoxVM
- DLLS += VBoxGlobal
+ DLLS += UICommon
 endif
 INSTALLS += VirtualBox.nls
@@ -99,5 +99,5 @@
 VirtualBox_TEMPLATE      := VBOXQTGUIEXE
 VirtualBox_NAME           = VirtualBox
-VirtualBox_DEPS           = $(VBoxGlobal_0_OUTDIR)/include/COMWrappers
+VirtualBox_DEPS           = $(UICommon_0_OUTDIR)/include/COMWrappers
 VirtualBox_SDKS.win       = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK)
 VirtualBox_DEFS           =
@@ -169,5 +169,5 @@
 VirtualBoxVM_TEMPLATE       := $(if $(VBOX_WITH_HARDENING),VBOXQTGUI,VBOXQTGUIEXE)
 VirtualBoxVM_NAME           = VirtualBoxVM
-VirtualBoxVM_DEPS           = $(VBoxGlobal_0_OUTDIR)/include/COMWrappers
+VirtualBoxVM_DEPS           = $(UICommon_0_OUTDIR)/include/COMWrappers
 VirtualBoxVM_SDKS.win       = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK)
 VirtualBoxVM_DEFS           += VBOX_RUNTIME_UI
@@ -237,17 +237,17 @@
 # VirtualBox - GUI Global Shared Library.
 #
-VBoxGlobal_TEMPLATE = VBOXQTGUI
-VBoxGlobal_NAME = VBoxGlobal
-VBoxGlobal_DEFS         =
-VBoxGlobal_DEFS        += VBOX_GUI_LIBRARY
-VBoxGlobal_DEFS.darwin  = VBOX_WS_MAC
-VBoxGlobal_DEFS.freebsd = VBOX_WS_X11
-VBoxGlobal_DEFS.linux   = VBOX_WS_X11
-VBoxGlobal_DEFS.solaris = VBOX_WS_X11
-VBoxGlobal_DEFS.win     = VBOX_WS_WIN
-VBoxGlobal_DEFS.debug   = VBOX_CHECK_STATE # QT_FATAL_ASSERT
-VBoxGlobal_DEFS.darwin  += VBOX_DARWIN_USE_NATIVE_CONTROLS
-#VBoxGlobal_DEFS.win     += UNICODE QT_DLL
-VBoxGlobal_DEFS         += \
+UICommon_TEMPLATE = VBOXQTGUI
+UICommon_NAME = UICommon
+UICommon_DEFS         =
+UICommon_DEFS        += VBOX_GUI_LIBRARY
+UICommon_DEFS.darwin  = VBOX_WS_MAC
+UICommon_DEFS.freebsd = VBOX_WS_X11
+UICommon_DEFS.linux   = VBOX_WS_X11
+UICommon_DEFS.solaris = VBOX_WS_X11
+UICommon_DEFS.win     = VBOX_WS_WIN
+UICommon_DEFS.debug   = VBOX_CHECK_STATE # QT_FATAL_ASSERT
+UICommon_DEFS.darwin  += VBOX_DARWIN_USE_NATIVE_CONTROLS
+#UICommon_DEFS.win     += UNICODE QT_DLL
+UICommon_DEFS         += \
 	$(if $(VBOX_WITH_UPDATE_REQUEST),VBOX_WITH_UPDATE_REQUEST) \
 	$(if $(VBOX_GUI_WITH_NEW_MEDIA_EVENTS),VBOX_GUI_WITH_NEW_MEDIA_EVENTS) \
@@ -268,23 +268,23 @@
 	$(if $(VBOX_WITH_SDS),VBOX_WITH_SDS,)
 ifdef VBOX_WITH_DEBUGGER_GUI
- VBoxGlobal_DEFS        += VBOX_WITH_DEBUGGER_GUI
+ UICommon_DEFS        += VBOX_WITH_DEBUGGER_GUI
  if "$(KBUILD_TYPE)" != "release"
-  VBoxGlobal_DEFS       += VBOX_WITH_DEBUGGER_GUI_MENU
+  UICommon_DEFS       += VBOX_WITH_DEBUGGER_GUI_MENU
  endif
 endif
 ifdef VBOX_WITH_VIDEOHWACCEL
- VBoxGlobal_DEFS        += VBOX_WITH_VIDEOHWACCEL VBOX_GUI_USE_QGL
+ UICommon_DEFS        += VBOX_WITH_VIDEOHWACCEL VBOX_GUI_USE_QGL
 else ifdef VBOX_GUI_USE_QGL
- VBoxGlobal_DEFS        += VBOX_GUI_USE_QGL
+ UICommon_DEFS        += VBOX_GUI_USE_QGL
 endif
 ifdef VBOX_WITH_LIBCURL
- VBoxGlobal_DEFS        += VBOX_GUI_WITH_NETWORK_MANAGER
+ UICommon_DEFS        += VBOX_GUI_WITH_NETWORK_MANAGER
  VBOX_GUI_WITH_NETWORK_MANAGER := 1
 endif
 if  "$(KBUILD_TYPE)" != "release" || defined(VBOX_GUI_WITH_EXTRADATA_MANAGER_UI)
- VBoxGlobal_DEFS        += VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
+ UICommon_DEFS        += VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
 endif
 ifndef VBOX_WITHOUT_LESS_VIRTUALBOX_INCLUDING
- VBoxGlobal_DEFS        += VBOX_WITH_LESS_VIRTUALBOX_INCLUDING
+ UICommon_DEFS        += VBOX_WITH_LESS_VIRTUALBOX_INCLUDING
 endif
 
@@ -351,5 +351,5 @@
 VirtualBox_INCS = \
 	$(VBOX_GUI_INC_DIRS) \
-	$(VBoxGlobal_0_OUTDIR)/include \
+	$(UICommon_0_OUTDIR)/include \
 	$(VBOX_GRAPHICS_INCS)
 
@@ -360,5 +360,5 @@
 VirtualBoxVM_INCS = \
 	$(VBOX_GUI_INC_DIRS) \
-	$(VBoxGlobal_0_OUTDIR)/include \
+	$(UICommon_0_OUTDIR)/include \
 	$(VBOX_GRAPHICS_INCS)
 
@@ -367,7 +367,7 @@
 # Include folders.
 #
-VBoxGlobal_INCS = \
+UICommon_INCS = \
 	$(VBOX_GUI_INC_DIRS) \
-	$(VBoxGlobal_0_OUTDIR)/include
+	$(UICommon_0_OUTDIR)/include
 
 
@@ -448,19 +448,19 @@
 ## @todo we're using a number of deprecated APIs, please fix and remove these!
 ifdef VBOX_WITH_NEW_XCODE
- VBoxGlobal_CXXFLAGS.darwin    += -Wno-error=deprecated-declarations
- VBoxGlobal_OBJCFLAGS.darwin   += -Wno-error=deprecated-declarations
- VBoxGlobal_OBJCXXFLAGS.darwin += -Wno-error=deprecated-declarations
+ UICommon_CXXFLAGS.darwin    += -Wno-error=deprecated-declarations
+ UICommon_OBJCFLAGS.darwin   += -Wno-error=deprecated-declarations
+ UICommon_OBJCXXFLAGS.darwin += -Wno-error=deprecated-declarations
 else
- VBoxGlobal_CXXFLAGS.darwin    += -Wno-deprecated-declarations
- VBoxGlobal_OBJCFLAGS.darwin   += -Wno-deprecated-declarations
- VBoxGlobal_OBJCXXFLAGS.darwin += -Wno-deprecated-declarations
-endif
-
-VBoxGlobal_LDFLAGS.darwin = \
+ UICommon_CXXFLAGS.darwin    += -Wno-deprecated-declarations
+ UICommon_OBJCFLAGS.darwin   += -Wno-deprecated-declarations
+ UICommon_OBJCXXFLAGS.darwin += -Wno-deprecated-declarations
+endif
+
+UICommon_LDFLAGS.darwin = \
 	-framework AppKit -framework Carbon -framework IOKit \
-	$(if $(VBOX_WITH_HARDENING),-install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxGlobal.dylib)
+	$(if $(VBOX_WITH_HARDENING),-install_name $(VBOX_DYLD_EXECUTABLE_PATH)/UICommon.dylib)
 
 if defined(VBOX_WITH_VIDEOHWACCEL) || defined(VBOX_GUI_USE_QGL)
- VBoxGlobal_LDFLAGS.darwin += -framework OpenGL
+ UICommon_LDFLAGS.darwin += -framework OpenGL
 endif
 
@@ -513,7 +513,7 @@
 # This one is global shared GUI library:
 ifeq ($(KBUILD_TARGET),win)
- VirtualBox_LIBS += $(PATH_STAGE_LIB)/VBoxGlobal$(VBOX_SUFF_LIB)
+ VirtualBox_LIBS += $(PATH_STAGE_LIB)/UICommon$(VBOX_SUFF_LIB)
 else
- VirtualBox_LIBS += $(PATH_STAGE_DLL)/VBoxGlobal$(VBOX_SUFF_DLL)
+ VirtualBox_LIBS += $(PATH_STAGE_DLL)/UICommon$(VBOX_SUFF_DLL)
 endif
 
@@ -565,7 +565,7 @@
 
 ifeq ($(KBUILD_TARGET),win)
- VirtualBoxVM_LIBS += $(PATH_STAGE_LIB)/VBoxGlobal$(VBOX_SUFF_LIB)
+ VirtualBoxVM_LIBS += $(PATH_STAGE_LIB)/UICommon$(VBOX_SUFF_LIB)
 else
- VirtualBoxVM_LIBS += $(PATH_STAGE_DLL)/VBoxGlobal$(VBOX_SUFF_DLL)
+ VirtualBoxVM_LIBS += $(PATH_STAGE_DLL)/UICommon$(VBOX_SUFF_DLL)
 endif
 
@@ -577,30 +577,30 @@
 
 # Xinerama library required for multi-monitor support:
-VBoxGlobal_LIBS.linux   += Xinerama
-VBoxGlobal_LIBS.solaris += Xinerama
-VBoxGlobal_LIBS.freebsd += Xinerama
+UICommon_LIBS.linux   += Xinerama
+UICommon_LIBS.solaris += Xinerama
+UICommon_LIBS.freebsd += Xinerama
 
 # Various Windows hosts libraries:
-VBoxGlobal_LIBS.win = \
+UICommon_LIBS.win = \
 	$(PATH_SDK_$(VBOX_WINPSDK)_LIB)/Htmlhelp.Lib
 
 # VBox keyboard shared library for X11 hosts:
 if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
- VBoxGlobal_LIBS += $(PATH_STAGE_DLL)/VBoxKeyboard$(VBOX_SUFF_DLL)
+ UICommon_LIBS += $(PATH_STAGE_DLL)/VBoxKeyboard$(VBOX_SUFF_DLL)
 endif
 
 # These are 2D Video Acceleration and 3D Acceleration related libs:
 if defined(VBOX_WITH_VIDEOHWACCEL) || defined(VBOX_GUI_USE_QGL)
- VBoxGlobal_LIBS.win     += $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/Opengl32.lib
- VBoxGlobal_LIBS.solaris += GL
- VBoxGlobal_LIBS.linux   += GL
- VBoxGlobal_LIBS.freebsd += GL
+ UICommon_LIBS.win     += $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/Opengl32.lib
+ UICommon_LIBS.solaris += GL
+ UICommon_LIBS.linux   += GL
+ UICommon_LIBS.freebsd += GL
 endif
 ifdef VBOX_WITH_CROGL
- VBoxGlobal_LIBS += $(PATH_STAGE_LIB)/VBoxOGLTest$(VBOX_SUFF_LIB)
+ UICommon_LIBS += $(PATH_STAGE_LIB)/VBoxOGLTest$(VBOX_SUFF_LIB)
 endif
 if defined(VBOX_WITH_VIDEOHWACCEL)
  if1of ($(KBUILD_TARGET), win linux freebsd)
-  VBoxGlobal_LIBS += $(PATH_STAGE_LIB)/VBoxOGL2D$(VBOX_SUFF_LIB)
+  UICommon_LIBS += $(PATH_STAGE_LIB)/VBoxOGL2D$(VBOX_SUFF_LIB)
  endif
 endif
@@ -782,5 +782,5 @@
 # Headers containing definitions of classes that use the Q_OBJECT macro.
 #
-VBoxGlobal_QT_MOCHDRS = \
+UICommon_QT_MOCHDRS = \
 	src/VBoxAboutDlg.h \
 	src/VBoxLicenseViewer.h \
@@ -838,5 +838,5 @@
 	src/globals/UITextTable.h \
 	src/globals/UIVirtualBoxEventHandler.h \
-	src/globals/VBoxGlobal.h \
+	src/globals/UICommon.h \
 	src/globals/VBoxUtils.h \
 	src/logviewer/UIVMLogPage.h \
@@ -923,5 +923,5 @@
 
 ifdef VBOX_GUI_WITH_NETWORK_MANAGER
- VBoxGlobal_QT_MOCHDRS += \
+ UICommon_QT_MOCHDRS += \
 	src/net/UIDownloader.h \
 	src/net/UIDownloaderAdditions.h \
@@ -940,5 +940,5 @@
 endif
 
-VBoxGlobal_QT_MOCHDRS.darwin += \
+UICommon_QT_MOCHDRS.darwin += \
 	src/platform/darwin/UICocoaSpecialControls.h \
 	src/platform/darwin/UIWindowMenuManager.h
@@ -986,5 +986,5 @@
 # Sources.
 #
-VBoxGlobal_QT_MOCSRCS = \
+UICommon_QT_MOCSRCS = \
 	src/extensions/QIAdvancedSlider.cpp \
 	src/extensions/QIArrowSplitter.cpp \
@@ -1020,5 +1020,5 @@
 
 ifdef VBOX_GUI_WITH_NETWORK_MANAGER
- VBoxGlobal_QT_MOCSRCS += \
+ UICommon_QT_MOCSRCS += \
 	src/net/UINetworkReply.cpp \
 	src/net/UIUpdateManager.cpp
@@ -1026,16 +1026,16 @@
 
 ifdef VBOX_WITH_XPCOM
- VBoxGlobal_QT_MOCSRCS += \
+ UICommon_QT_MOCSRCS += \
 	src/globals/COMDefs.cpp
 endif
 
-VBoxGlobal_QT_MOCSRCS.darwin += \
+UICommon_QT_MOCSRCS.darwin += \
 	src/platform/darwin/UIWindowMenuManager.cpp
 
-VBoxGlobal_QT_MOCSRCS.linux += \
+UICommon_QT_MOCSRCS.linux += \
 	src/globals/UIDesktopWidgetWatchdog.cpp
-VBoxGlobal_QT_MOCSRCS.solaris += \
+UICommon_QT_MOCSRCS.solaris += \
 	src/globals/UIDesktopWidgetWatchdog.cpp
-VBoxGlobal_QT_MOCSRCS.freebsd += \
+UICommon_QT_MOCSRCS.freebsd += \
 	src/globals/UIDesktopWidgetWatchdog.cpp
 
@@ -1257,5 +1257,5 @@
 # Sources.
 #
-VBoxGlobal_SOURCES = \
+UICommon_SOURCES = \
 	src/VBoxAboutDlg.cpp \
 	src/VBoxLicenseViewer.cpp \
@@ -1323,5 +1323,5 @@
 	src/globals/UIVersion.cpp \
 	src/globals/UIVirtualBoxEventHandler.cpp \
-	src/globals/VBoxGlobal.cpp \
+	src/globals/UICommon.cpp \
 	src/logviewer/UIVMLogPage.cpp \
 	src/logviewer/UIVMLogViewerBookmarksPanel.cpp \
@@ -1411,5 +1411,5 @@
 
 ifdef VBOX_GUI_WITH_NETWORK_MANAGER
- VBoxGlobal_SOURCES += \
+ UICommon_SOURCES += \
 	src/net/UIDownloader.cpp \
 	src/net/UIDownloaderAdditions.cpp \
@@ -1430,14 +1430,14 @@
 
 if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris) # X11
- VBoxGlobal_SOURCES += \
+ UICommon_SOURCES += \
 	src/platform/x11/VBoxX11Helper.cpp \
 	src/platform/x11/XKeyboard-new.cpp
 endif
 
-VBoxGlobal_SOURCES.win += \
+UICommon_SOURCES.win += \
 	src/platform/win/VBoxUtils-win.cpp \
 	src/platform/win/WinKeyboard.cpp
 
-VBoxGlobal_SOURCES.darwin += \
+UICommon_SOURCES.darwin += \
 	src/platform/darwin/CocoaEventHelper.mm \
 	src/platform/darwin/DarwinKeyboard.cpp \
@@ -1449,5 +1449,5 @@
 
 if defined(VBOX_WITH_VIDEOHWACCEL) || defined(VBOX_GUI_USE_QGL)
- VBoxGlobal_SOURCES += \
+ UICommon_SOURCES += \
 	src/VBox2DHelpers.cpp \
 	src/VBoxGLSupportInfo.cpp
@@ -1510,12 +1510,12 @@
 # (The include directory and lib/framework for each module will be added by the Qt unit.)
 #
-VBoxGlobal_QT_MODULES = Core Gui Widgets
-VBoxGlobal_QT_MODULES.linux   += X11Extras
-VBoxGlobal_QT_MODULES.solaris += X11Extras
-VBoxGlobal_QT_MODULES.freebsd += X11Extras
-VBoxGlobal_QT_MODULES.darwin  += MacExtras
-VBoxGlobal_QT_MODULES.win     += WinExtras
+UICommon_QT_MODULES = Core Gui Widgets
+UICommon_QT_MODULES.linux   += X11Extras
+UICommon_QT_MODULES.solaris += X11Extras
+UICommon_QT_MODULES.freebsd += X11Extras
+UICommon_QT_MODULES.darwin  += MacExtras
+UICommon_QT_MODULES.win     += WinExtras
 if defined(VBOX_WITH_VIDEOHWACCEL) || defined(VBOX_GUI_USE_QGL)
- VBoxGlobal_QT_MODULES += OpenGL
+ UICommon_QT_MODULES += OpenGL
 endif
 
@@ -1524,30 +1524,30 @@
 $(eval VirtualBox_SOURCES += $(FORMS))
 $(eval VirtualBoxVM_SOURCES += $(FORMS))
-$(eval VBoxGlobal_SOURCES += $(FORMS))
+$(eval UICommon_SOURCES += $(FORMS))
 
 
 # Resource files with some OSE differences (VirtualBoxBrand.qrc is created further down).
-VBoxGlobal_SOURCES          += VirtualBox1.qrc
+UICommon_SOURCES          += VirtualBox1.qrc
 VirtualBox1.qrc_RCCFLAGS     = -name BASIC1
-VBoxGlobal_SOURCES          += VirtualBox2.qrc
+UICommon_SOURCES          += VirtualBox2.qrc
 VirtualBox2.qrc_RCCFLAGS     = -name BASIC2
-VBoxGlobal_SOURCES          += VirtualBox1_x2.qrc
+UICommon_SOURCES          += VirtualBox1_x2.qrc
 VirtualBox1_x2.qrc_RCCFLAGS  = -name BASIC1_X2
-VBoxGlobal_SOURCES          += VirtualBox2_x2.qrc
+UICommon_SOURCES          += VirtualBox2_x2.qrc
 VirtualBox2_x2.qrc_RCCFLAGS  = -name BASIC2_X2
-VBoxGlobal_SOURCES          += VirtualBox1_x3.qrc
+UICommon_SOURCES          += VirtualBox1_x3.qrc
 VirtualBox1_x3.qrc_RCCFLAGS  = -name BASIC1_X3
-VBoxGlobal_SOURCES          += VirtualBox2_x3.qrc
+UICommon_SOURCES          += VirtualBox2_x3.qrc
 VirtualBox2_x3.qrc_RCCFLAGS  = -name BASIC2_X3
-VBoxGlobal_SOURCES          += VirtualBox1_x4.qrc
+UICommon_SOURCES          += VirtualBox1_x4.qrc
 VirtualBox1_x4.qrc_RCCFLAGS  = -name BASIC1_X4
-VBoxGlobal_SOURCES          += VirtualBox2_x4.qrc
+UICommon_SOURCES          += VirtualBox2_x4.qrc
 VirtualBox2_x4.qrc_RCCFLAGS  = -name BASIC2_X4
-VBoxGlobal_SOURCES          += VirtualBox_xml.qrc
+UICommon_SOURCES          += VirtualBox_xml.qrc
 VirtualBox_xml.qrc_RCCFLAGS  = -name BASIC_XML
-VBoxGlobal_SOURCES += $(VBOX_VIRTUALBOX_OUT_DIR)/VirtualBoxBrand.qrc
+UICommon_SOURCES += $(VBOX_VIRTUALBOX_OUT_DIR)/VirtualBoxBrand.qrc
 $(VBOX_VIRTUALBOX_OUT_DIR)/VirtualBoxBrand.qrc_RCCFLAGS = -name BRAND
 if defined(VBOX_WITH_VIDEOHWACCEL) || defined(VBOX_GUI_USE_QGL)
- VBoxGlobal_SOURCES += VirtualBoxShaders.qrc
+ UICommon_SOURCES += VirtualBoxShaders.qrc
  VirtualBoxShaders.qrc_RCCFLAGS = -name SHADERS
 endif
@@ -1562,5 +1562,5 @@
 VirtualBox_QT_TRANSLATIONS_INST = $(INST_BIN)nls/
 # All files which contain translatable strings.
-VirtualBox_VBOX_ALL_NLS_SOURCES = $(VirtualBox_SOURCES) $(VirtualBoxVM_SOURCES) $(VBoxGlobal_SOURCES)
+VirtualBox_VBOX_ALL_NLS_SOURCES = $(VirtualBox_SOURCES) $(VirtualBoxVM_SOURCES) $(UICommon_SOURCES)
 
 
@@ -1578,17 +1578,17 @@
 # VirtualBox - GUI Global Shared Library.
 #
-includedep $(PATH_TARGET)/VBoxGlobalComWrapperFiles.dep
-VBoxGlobal_BLDDIRS       += $(VBoxGlobal_0_OUTDIR)/include
-VBoxGlobal_INTERMEDIATES += $(VBoxGlobal_0_OUTDIR)/include/COMWrappers
-VBoxGlobal_SOURCES       += $(VBoxGlobal_0_OUTDIR)/include/COMWrappers.cpp
-VBoxGlobal_CLEAN         += $(wildcard $(VBoxGlobal_0_OUTDIR)/include/*) $(PATH_TARGET)/VBoxGlobalComWrapperFiles.dep
+includedep $(PATH_TARGET)/UICommonComWrapperFiles.dep
+UICommon_BLDDIRS       += $(UICommon_0_OUTDIR)/include
+UICommon_INTERMEDIATES += $(UICommon_0_OUTDIR)/include/COMWrappers
+UICommon_SOURCES       += $(UICommon_0_OUTDIR)/include/COMWrappers.cpp
+UICommon_CLEAN         += $(wildcard $(UICommon_0_OUTDIR)/include/*) $(PATH_TARGET)/UICommonComWrapperFiles.dep
 
 ## @todo kmk doesn't remake optional outputs when they are missing...
-$$(VBoxGlobal_0_OUTDIR)/include/COMWrappers \
-+ $(PATH_TARGET)/VBoxGlobalComWrapperFiles.dep \
-+| $(if-expr defined(VBoxGlobal_VBOX_COMWRAPPERS) \
-, $(VBoxGlobal_VBOX_COMWRAPPERS) \
-, $$(VBoxGlobal_0_OUTDIR)/include/COMEnums.h \
-  $$(VBoxGlobal_0_OUTDIR)/include/COMWrappers.cpp \
+$$(UICommon_0_OUTDIR)/include/COMWrappers \
++ $(PATH_TARGET)/UICommonComWrapperFiles.dep \
++| $(if-expr defined(UICommon_VBOX_COMWRAPPERS) \
+, $(UICommon_VBOX_COMWRAPPERS) \
+, $$(UICommon_0_OUTDIR)/include/COMEnums.h \
+  $$(UICommon_0_OUTDIR)/include/COMWrappers.cpp \
 ): \
 		$(VBOX_XIDL_FILE) \
@@ -1596,14 +1596,14 @@
 		$(VBOX_FILESPLIT) \
 		| $$(dir $$@)
-	$(call MSG_GENERATE,VBoxGlobal,$<,$@)
-	$(QUIET)$(RM) -f -- "$@" "$(PATH_TARGET)/VBoxGlobalComWrapperFiles.dep"
+	$(call MSG_GENERATE,UICommon,$<,$@)
+	$(QUIET)$(RM) -f -- "$@" "$(PATH_TARGET)/UICommonComWrapperFiles.dep"
 	$(QUIET)$(VBOX_XSLTPROC) -o $@ \
 		$(VBOX_VIRTUALBOX_SRC)/src/globals/COMWrappers.xsl $<
-	$(QUIET)$(VBOX_FILESPLIT) $@ $(VBoxGlobal_0_OUTDIR)/include \
-		$(PATH_TARGET)/VBoxGlobalComWrapperFiles.dep VBoxGlobal_VBOX_COMWRAPPERS
+	$(QUIET)$(VBOX_FILESPLIT) $@ $(UICommon_0_OUTDIR)/include \
+		$(PATH_TARGET)/UICommonComWrapperFiles.dep UICommon_VBOX_COMWRAPPERS
 	$(APPEND) "$@"
 
 # alias for generating the COM Wrappers file.
-testwrappers:: $$(VBoxGlobal_0_OUTDIR)/include/COMWrappers
+testwrappers:: $$(UICommon_0_OUTDIR)/include/COMWrappers
 
 
@@ -1654,12 +1654,12 @@
   VirtualBoxVM_PCH_HDR := $(PATH_SUB_CURRENT)/src/precomp_vcc.h
 
-  VBoxGlobal_USES      += vccprecomp
-  VBoxGlobal_PCH_HDR   := $(PATH_SUB_CURRENT)/src/precomp_vcc.h
+  UICommon_USES      += vccprecomp
+  UICommon_PCH_HDR   := $(PATH_SUB_CURRENT)/src/precomp_vcc.h
 
  else if $(KBUILD_KMK_REVISION) >= 3256 && "$(KBUILD_TARGET)" != "darwin" && !defined(VBOX_WITHOUT_PRECOMPILED_HEADERS)
   if $(VBOX_GCC_VERSION_CXX) >= 50000 # GCC 4.x runs into trouble compiling the header.
-   VBoxGlobal_USES      += gccprecomp
-   VBoxGlobal_PCH_HDR   := $(PATH_SUB_CURRENT)/src/precomp_gcc.h
-   #VBoxGlobal_CXXFLAGS.linux += -H
+   UICommon_USES      += gccprecomp
+   UICommon_PCH_HDR   := $(PATH_SUB_CURRENT)/src/precomp_gcc.h
+   #UICommon_CXXFLAGS.linux += -H
 
    VirtualBox_USES      += gccprecomp
@@ -1847,5 +1847,5 @@
  tstDarwinKeyboard_LIBS = \
  	$(LIB_RUNTIME)
- tstDarwinKeyboard_LIBS += $(PATH_STAGE_DLL)/VBoxGlobal$(VBOX_SUFF_DLL)
+ tstDarwinKeyboard_LIBS += $(PATH_STAGE_DLL)/UICommon$(VBOX_SUFF_DLL)
 endif
 
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts	(revision 79365)
@@ -18977,5 +18977,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts	(revision 79365)
@@ -10228,5 +10228,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Inaccessible</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts	(revision 79365)
@@ -19269,5 +19269,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts	(revision 79365)
@@ -19640,5 +19640,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts	(revision 79365)
@@ -11710,5 +11710,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts	(revision 79365)
@@ -12824,5 +12824,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts	(revision 79365)
@@ -12900,5 +12900,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_en.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_en.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_en.ts	(revision 79365)
@@ -123,5 +123,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message numerus="yes">
         <source>%n year(s)</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts	(revision 79365)
@@ -20839,5 +20839,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts	(revision 79365)
@@ -5,5 +5,5 @@
     <name>@@@</name>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="+606"/>
+        <location filename="../src/globals/UICommon.cpp" line="+606"/>
         <source>English</source>
         <comment>Native language name</comment>
@@ -5609,5 +5609,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="+3014"/>
+        <location filename="../src/globals/UICommon.cpp" line="+3014"/>
         <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="+88"/>
         <source>Extensions</source>
@@ -10439,5 +10439,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-661"/>
+        <location filename="../src/globals/UICommon.cpp" line="-661"/>
         <source>Choose/Create a disk image...</source>
         <comment>This is used for hard disks, optical media and floppies</comment>
@@ -17191,7 +17191,7 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
-    <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="+356"/>
+    <name>UICommon</name>
+    <message>
+        <location filename="../src/globals/UICommon.cpp" line="+356"/>
         <source>Unknown device %1:%2</source>
         <comment>USB device details</comment>
@@ -17717,5 +17717,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="+479"/>
+        <location filename="../src/globals/UICommon.cpp" line="+479"/>
         <source>User-defined</source>
         <comment>serial port</comment>
@@ -17885,5 +17885,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-465"/>
+        <location filename="../src/globals/UICommon.cpp" line="-465"/>
         <source>&lt;nobr&gt;Vendor ID: %1&lt;/nobr&gt;</source>
         <comment>USB filter tooltip</comment>
@@ -18308,5 +18308,5 @@
     </message>
     <message numerus="yes">
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-2698"/>
+        <location filename="../src/globals/UICommon.cpp" line="-2698"/>
         <source>%n year(s)</source>
         <translation>
@@ -18381,5 +18381,5 @@
         <location filename="../src/converter/UIConverterBackendGlobal.cpp" line="+89"/>
         <location line="+19"/>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="+24"/>
+        <location filename="../src/globals/UICommon.cpp" line="+24"/>
         <location line="+28"/>
         <location line="+44"/>
@@ -18392,5 +18392,5 @@
         <location line="-18"/>
         <location line="+19"/>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-107"/>
+        <location filename="../src/globals/UICommon.cpp" line="-107"/>
         <location line="+29"/>
         <location line="+44"/>
@@ -18411,5 +18411,5 @@
         <location filename="../src/converter/UIConverterBackendGlobal.cpp" line="-18"/>
         <location line="+19"/>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-107"/>
+        <location filename="../src/globals/UICommon.cpp" line="-107"/>
         <location line="+30"/>
         <location line="+44"/>
@@ -18422,5 +18422,5 @@
         <location filename="../src/converter/UIConverterBackendGlobal.cpp" line="-18"/>
         <location line="+19"/>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-107"/>
+        <location filename="../src/globals/UICommon.cpp" line="-107"/>
         <location line="+31"/>
         <location line="+44"/>
@@ -18433,5 +18433,5 @@
         <location line="-18"/>
         <location line="+19"/>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-107"/>
+        <location filename="../src/globals/UICommon.cpp" line="-107"/>
         <location line="+32"/>
         <location line="+44"/>
@@ -18444,5 +18444,5 @@
         <location line="-18"/>
         <location line="+19"/>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-107"/>
+        <location filename="../src/globals/UICommon.cpp" line="-107"/>
         <location line="+33"/>
         <location line="+44"/>
@@ -18473,5 +18473,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="+2426"/>
+        <location filename="../src/globals/UICommon.cpp" line="+2426"/>
         <source>Unknown device</source>
         <comment>USB device details</comment>
@@ -19676,5 +19676,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-29"/>
+        <location filename="../src/globals/UICommon.cpp" line="-29"/>
         <source>Please choose a virtual optical disk file</source>
         <translation>Mesedez hautatu diska optiko birtual agiri bat</translation>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fa.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fa.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fa.ts	(revision 79365)
@@ -15244,5 +15244,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts	(revision 79365)
@@ -15610,5 +15610,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts	(revision 79365)
@@ -17428,5 +17428,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl.ts	(revision 79365)
@@ -15028,5 +15028,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_he.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_he.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_he.ts	(revision 79365)
@@ -11561,5 +11561,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Name</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hr_HR.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hr_HR.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hr_HR.ts	(revision 79365)
@@ -11954,5 +11954,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts	(revision 79365)
@@ -19737,5 +19737,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts	(revision 79365)
@@ -18843,5 +18843,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts	(revision 79365)
@@ -21657,5 +21657,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts	(revision 79365)
@@ -20347,5 +20347,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts	(revision 79365)
@@ -14857,5 +14857,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts	(revision 79365)
@@ -19647,5 +19647,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts	(revision 79365)
@@ -17180,5 +17180,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts	(revision 79365)
@@ -12800,5 +12800,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts	(revision 79365)
@@ -18215,5 +18215,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts	(revision 79365)
@@ -16476,5 +16476,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts	(revision 79365)
@@ -21328,5 +21328,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts	(revision 79365)
@@ -16239,5 +16239,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts	(revision 79365)
@@ -19619,5 +19619,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts	(revision 79365)
@@ -16051,5 +16051,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts	(revision 79365)
@@ -5,5 +5,5 @@
     <name>@@@</name>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="+606"/>
+        <location filename="../src/globals/UICommon.cpp" line="+606"/>
         <source>English</source>
         <comment>Native language name</comment>
@@ -5011,5 +5011,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="+3014"/>
+        <location filename="../src/globals/UICommon.cpp" line="+3014"/>
         <location filename="../src/settings/global/UIGlobalSettingsExtension.cpp" line="+88"/>
         <source>Extensions</source>
@@ -8956,5 +8956,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-661"/>
+        <location filename="../src/globals/UICommon.cpp" line="-661"/>
         <source>Choose/Create a disk image...</source>
         <comment>This is used for hard disks, optical media and floppies</comment>
@@ -15449,7 +15449,7 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
-    <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="+356"/>
+    <name>UICommon</name>
+    <message>
+        <location filename="../src/globals/UICommon.cpp" line="+356"/>
         <source>Unknown device %1:%2</source>
         <comment>USB device details</comment>
@@ -15836,5 +15836,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="+479"/>
+        <location filename="../src/globals/UICommon.cpp" line="+479"/>
         <source>User-defined</source>
         <comment>serial port</comment>
@@ -15975,5 +15975,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-465"/>
+        <location filename="../src/globals/UICommon.cpp" line="-465"/>
         <source>&lt;nobr&gt;Vendor ID: %1&lt;/nobr&gt;</source>
         <comment>USB filter tooltip</comment>
@@ -16355,5 +16355,5 @@
     </message>
     <message numerus="yes">
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-2698"/>
+        <location filename="../src/globals/UICommon.cpp" line="-2698"/>
         <source>%n year(s)</source>
         <translation>
@@ -16436,5 +16436,5 @@
         <location filename="../src/converter/UIConverterBackendGlobal.cpp" line="+89"/>
         <location line="+19"/>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="+24"/>
+        <location filename="../src/globals/UICommon.cpp" line="+24"/>
         <location line="+28"/>
         <location line="+44"/>
@@ -16447,5 +16447,5 @@
         <location line="-18"/>
         <location line="+19"/>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-107"/>
+        <location filename="../src/globals/UICommon.cpp" line="-107"/>
         <location line="+29"/>
         <location line="+44"/>
@@ -16466,5 +16466,5 @@
         <location filename="../src/converter/UIConverterBackendGlobal.cpp" line="-18"/>
         <location line="+19"/>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-107"/>
+        <location filename="../src/globals/UICommon.cpp" line="-107"/>
         <location line="+30"/>
         <location line="+44"/>
@@ -16477,5 +16477,5 @@
         <location filename="../src/converter/UIConverterBackendGlobal.cpp" line="-18"/>
         <location line="+19"/>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-107"/>
+        <location filename="../src/globals/UICommon.cpp" line="-107"/>
         <location line="+31"/>
         <location line="+44"/>
@@ -16488,5 +16488,5 @@
         <location line="-18"/>
         <location line="+19"/>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-107"/>
+        <location filename="../src/globals/UICommon.cpp" line="-107"/>
         <location line="+32"/>
         <location line="+44"/>
@@ -16499,5 +16499,5 @@
         <location line="-18"/>
         <location line="+19"/>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-107"/>
+        <location filename="../src/globals/UICommon.cpp" line="-107"/>
         <location line="+33"/>
         <location line="+44"/>
@@ -16513,5 +16513,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="+2426"/>
+        <location filename="../src/globals/UICommon.cpp" line="+2426"/>
         <source>Unknown device</source>
         <comment>USB device details</comment>
@@ -17379,5 +17379,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-29"/>
+        <location filename="../src/globals/UICommon.cpp" line="-29"/>
         <source>Please choose a virtual optical disk file</source>
         <translation>Izberite datoteko navideznega optičnega diska</translation>
@@ -17666,5 +17666,5 @@
     </message>
     <message>
-        <location filename="../src/globals/VBoxGlobal.cpp" line="-15"/>
+        <location filename="../src/globals/UICommon.cpp" line="-15"/>
         <source>Please choose a virtual hard disk file</source>
         <translation>Izberite datoteko navideznega trdega diska</translation>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts	(revision 79365)
@@ -16862,5 +16862,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts	(revision 79365)
@@ -19014,5 +19014,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_th.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_th.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_th.ts	(revision 79365)
@@ -12208,5 +12208,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts	(revision 79365)
@@ -19448,5 +19448,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Differencing</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts	(revision 79365)
@@ -18146,5 +18146,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts	(revision 79365)
@@ -9764,5 +9764,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Inaccessible</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts	(revision 79365)
@@ -17078,5 +17078,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Unknown device %1:%2</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts	(revision 79365)
@@ -10245,5 +10245,5 @@
 </context>
 <context>
-    <name>VBoxGlobal</name>
+    <name>UICommon</name>
     <message>
         <source>Inaccessible</source>
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxAboutDlg.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxAboutDlg.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxAboutDlg.cpp	(revision 79365)
@@ -31,5 +31,5 @@
 #include "UIIconPool.h"
 #include "VBoxAboutDlg.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* Other VBox includes: */
@@ -113,6 +113,6 @@
 
     /* Branding: Use a custom about splash picture if set: */
-    const QString strSplash = vboxGlobal().brandingGetKey("UI/AboutSplash");
-    if (vboxGlobal().brandingIsActive() && !strSplash.isEmpty())
+    const QString strSplash = uiCommon().brandingGetKey("UI/AboutSplash");
+    if (uiCommon().brandingIsActive() && !strSplash.isEmpty())
     {
         char szExecPath[1024];
@@ -171,5 +171,5 @@
         /* Branding: Set a different text color (because splash also could be white),
          * otherwise use white as default color: */
-        const QString strColor = vboxGlobal().brandingGetKey("UI/AboutTextColor");
+        const QString strColor = uiCommon().brandingGetKey("UI/AboutTextColor");
         if (!strColor.isEmpty())
             palette.setColor(QPalette::WindowText, QColor(strColor).name());
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp	(revision 79365)
@@ -41,5 +41,5 @@
 #include "UIModalWindowManager.h"
 #include "UIPopupCenter.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/cloud/UICloudProfileManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/cloud/UICloudProfileManager.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/cloud/UICloudProfileManager.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 #include "QIInputDialog.h"
 #include "QITreeWidget.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPoolManager.h"
 #include "UIExtraDataManager.h"
@@ -198,5 +198,5 @@
 
     /* Get VirtualBox for further activities: */
-    const CVirtualBox comVBox = vboxGlobal().virtualBox();
+    const CVirtualBox comVBox = uiCommon().virtualBox();
 
     /* Get CloudProviderManager for further activities: */
@@ -307,5 +307,5 @@
 
     /* Get VirtualBox for further activities: */
-    const CVirtualBox comVBox = vboxGlobal().virtualBox();
+    const CVirtualBox comVBox = uiCommon().virtualBox();
 
     /* Get CloudProviderManager for further activities: */
@@ -374,5 +374,5 @@
 
     /* Get VirtualBox for further activities: */
-    const CVirtualBox comVBox = vboxGlobal().virtualBox();
+    const CVirtualBox comVBox = uiCommon().virtualBox();
 
     /* Get CloudProviderManager for further activities: */
@@ -422,5 +422,5 @@
 
     /* Get VirtualBox for further activities: */
-    const CVirtualBox comVBox = vboxGlobal().virtualBox();
+    const CVirtualBox comVBox = uiCommon().virtualBox();
 
     /* Get CloudProviderManager for further activities: */
@@ -482,10 +482,10 @@
 void UICloudProfileManagerWidget::sltShowCloudProfileTryPage()
 {
-    vboxGlobal().openURL("https://myservices.us.oraclecloud.com/mycloud/signup");
+    uiCommon().openURL("https://myservices.us.oraclecloud.com/mycloud/signup");
 }
 
 void UICloudProfileManagerWidget::sltShowCloudProfileHelp()
 {
-    vboxGlobal().openURL("https://docs.cloud.oracle.com/iaas/Content/API/Concepts/sdkconfig.htm");
+    uiCommon().openURL("https://docs.cloud.oracle.com/iaas/Content/API/Concepts/sdkconfig.htm");
 }
 
@@ -710,5 +710,5 @@
 
     /* Get VirtualBox for further activities: */
-    const CVirtualBox comVBox = vboxGlobal().virtualBox();
+    const CVirtualBox comVBox = uiCommon().virtualBox();
 
     /* Get CloudProviderManager for further activities: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendCOM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendCOM.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendCOM.cpp	(revision 79365)
@@ -136,27 +136,27 @@
     switch (state)
     {
-        case KMachineState_PoweredOff:             return QApplication::translate("VBoxGlobal", "Powered Off", "MachineState");
-        case KMachineState_Saved:                  return QApplication::translate("VBoxGlobal", "Saved", "MachineState");
-        case KMachineState_Aborted:                return QApplication::translate("VBoxGlobal", "Aborted", "MachineState");
-        case KMachineState_Teleported:             return QApplication::translate("VBoxGlobal", "Teleported", "MachineState");
-        case KMachineState_Running:                return QApplication::translate("VBoxGlobal", "Running", "MachineState");
-        case KMachineState_Paused:                 return QApplication::translate("VBoxGlobal", "Paused", "MachineState");
-        case KMachineState_Stuck:                  return QApplication::translate("VBoxGlobal", "Guru Meditation", "MachineState");
-        case KMachineState_Teleporting:            return QApplication::translate("VBoxGlobal", "Teleporting", "MachineState");
-        case KMachineState_Snapshotting:           return QApplication::translate("VBoxGlobal", "Taking Snapshot", "MachineState");
-        case KMachineState_OnlineSnapshotting:     return QApplication::translate("VBoxGlobal", "Taking Online Snapshot", "MachineState");
-        case KMachineState_LiveSnapshotting:       return QApplication::translate("VBoxGlobal", "Taking Live Snapshot", "MachineState");
-        case KMachineState_Starting:               return QApplication::translate("VBoxGlobal", "Starting", "MachineState");
-        case KMachineState_Stopping:               return QApplication::translate("VBoxGlobal", "Stopping", "MachineState");
-        case KMachineState_Saving:                 return QApplication::translate("VBoxGlobal", "Saving", "MachineState");
-        case KMachineState_Restoring:              return QApplication::translate("VBoxGlobal", "Restoring", "MachineState");
-        case KMachineState_TeleportingPausedVM:    return QApplication::translate("VBoxGlobal", "Teleporting Paused VM", "MachineState");
-        case KMachineState_TeleportingIn:          return QApplication::translate("VBoxGlobal", "Teleporting", "MachineState");
-        case KMachineState_FaultTolerantSyncing:   return QApplication::translate("VBoxGlobal", "Fault Tolerant Syncing", "MachineState");
-        case KMachineState_DeletingSnapshotOnline: return QApplication::translate("VBoxGlobal", "Deleting Snapshot", "MachineState");
-        case KMachineState_DeletingSnapshotPaused: return QApplication::translate("VBoxGlobal", "Deleting Snapshot", "MachineState");
-        case KMachineState_RestoringSnapshot:      return QApplication::translate("VBoxGlobal", "Restoring Snapshot", "MachineState");
-        case KMachineState_DeletingSnapshot:       return QApplication::translate("VBoxGlobal", "Deleting Snapshot", "MachineState");
-        case KMachineState_SettingUp:              return QApplication::translate("VBoxGlobal", "Setting Up", "MachineState");
+        case KMachineState_PoweredOff:             return QApplication::translate("UICommon", "Powered Off", "MachineState");
+        case KMachineState_Saved:                  return QApplication::translate("UICommon", "Saved", "MachineState");
+        case KMachineState_Aborted:                return QApplication::translate("UICommon", "Aborted", "MachineState");
+        case KMachineState_Teleported:             return QApplication::translate("UICommon", "Teleported", "MachineState");
+        case KMachineState_Running:                return QApplication::translate("UICommon", "Running", "MachineState");
+        case KMachineState_Paused:                 return QApplication::translate("UICommon", "Paused", "MachineState");
+        case KMachineState_Stuck:                  return QApplication::translate("UICommon", "Guru Meditation", "MachineState");
+        case KMachineState_Teleporting:            return QApplication::translate("UICommon", "Teleporting", "MachineState");
+        case KMachineState_Snapshotting:           return QApplication::translate("UICommon", "Taking Snapshot", "MachineState");
+        case KMachineState_OnlineSnapshotting:     return QApplication::translate("UICommon", "Taking Online Snapshot", "MachineState");
+        case KMachineState_LiveSnapshotting:       return QApplication::translate("UICommon", "Taking Live Snapshot", "MachineState");
+        case KMachineState_Starting:               return QApplication::translate("UICommon", "Starting", "MachineState");
+        case KMachineState_Stopping:               return QApplication::translate("UICommon", "Stopping", "MachineState");
+        case KMachineState_Saving:                 return QApplication::translate("UICommon", "Saving", "MachineState");
+        case KMachineState_Restoring:              return QApplication::translate("UICommon", "Restoring", "MachineState");
+        case KMachineState_TeleportingPausedVM:    return QApplication::translate("UICommon", "Teleporting Paused VM", "MachineState");
+        case KMachineState_TeleportingIn:          return QApplication::translate("UICommon", "Teleporting", "MachineState");
+        case KMachineState_FaultTolerantSyncing:   return QApplication::translate("UICommon", "Fault Tolerant Syncing", "MachineState");
+        case KMachineState_DeletingSnapshotOnline: return QApplication::translate("UICommon", "Deleting Snapshot", "MachineState");
+        case KMachineState_DeletingSnapshotPaused: return QApplication::translate("UICommon", "Deleting Snapshot", "MachineState");
+        case KMachineState_RestoringSnapshot:      return QApplication::translate("UICommon", "Restoring Snapshot", "MachineState");
+        case KMachineState_DeletingSnapshot:       return QApplication::translate("UICommon", "Deleting Snapshot", "MachineState");
+        case KMachineState_SettingUp:              return QApplication::translate("UICommon", "Setting Up", "MachineState");
         // case KMachineState_FirstOnline:
         // case KMachineState_LastOnline:
@@ -173,8 +173,8 @@
     switch (state)
     {
-        case KSessionState_Unlocked:  return QApplication::translate("VBoxGlobal", "Unlocked", "SessionState");
-        case KSessionState_Locked:    return QApplication::translate("VBoxGlobal", "Locked", "SessionState");
-        case KSessionState_Spawning:  return QApplication::translate("VBoxGlobal", "Spawning", "SessionState");
-        case KSessionState_Unlocking: return QApplication::translate("VBoxGlobal", "Unlocking", "SessionState");
+        case KSessionState_Unlocked:  return QApplication::translate("UICommon", "Unlocked", "SessionState");
+        case KSessionState_Locked:    return QApplication::translate("UICommon", "Locked", "SessionState");
+        case KSessionState_Spawning:  return QApplication::translate("UICommon", "Spawning", "SessionState");
+        case KSessionState_Unlocking: return QApplication::translate("UICommon", "Unlocking", "SessionState");
         default: AssertMsgFailed(("No text for %d", state)); break;
     }
@@ -187,10 +187,10 @@
     switch (type)
     {
-        case KParavirtProvider_None:    return QApplication::translate("VBoxGlobal", "None", "ParavirtProvider");
-        case KParavirtProvider_Default: return QApplication::translate("VBoxGlobal", "Default", "ParavirtProvider");
-        case KParavirtProvider_Legacy:  return QApplication::translate("VBoxGlobal", "Legacy", "ParavirtProvider");
-        case KParavirtProvider_Minimal: return QApplication::translate("VBoxGlobal", "Minimal", "ParavirtProvider");
-        case KParavirtProvider_HyperV:  return QApplication::translate("VBoxGlobal", "Hyper-V", "ParavirtProvider");
-        case KParavirtProvider_KVM:     return QApplication::translate("VBoxGlobal", "KVM", "ParavirtProvider");
+        case KParavirtProvider_None:    return QApplication::translate("UICommon", "None", "ParavirtProvider");
+        case KParavirtProvider_Default: return QApplication::translate("UICommon", "Default", "ParavirtProvider");
+        case KParavirtProvider_Legacy:  return QApplication::translate("UICommon", "Legacy", "ParavirtProvider");
+        case KParavirtProvider_Minimal: return QApplication::translate("UICommon", "Minimal", "ParavirtProvider");
+        case KParavirtProvider_HyperV:  return QApplication::translate("UICommon", "Hyper-V", "ParavirtProvider");
+        case KParavirtProvider_KVM:     return QApplication::translate("UICommon", "KVM", "ParavirtProvider");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
@@ -203,11 +203,11 @@
     switch (type)
     {
-        case KDeviceType_Null:         return QApplication::translate("VBoxGlobal", "None", "DeviceType");
-        case KDeviceType_Floppy:       return QApplication::translate("VBoxGlobal", "Floppy", "DeviceType");
-        case KDeviceType_DVD:          return QApplication::translate("VBoxGlobal", "Optical", "DeviceType");
-        case KDeviceType_HardDisk:     return QApplication::translate("VBoxGlobal", "Hard Disk", "DeviceType");
-        case KDeviceType_Network:      return QApplication::translate("VBoxGlobal", "Network", "DeviceType");
-        case KDeviceType_USB:          return QApplication::translate("VBoxGlobal", "USB", "DeviceType");
-        case KDeviceType_SharedFolder: return QApplication::translate("VBoxGlobal", "Shared Folder", "DeviceType");
+        case KDeviceType_Null:         return QApplication::translate("UICommon", "None", "DeviceType");
+        case KDeviceType_Floppy:       return QApplication::translate("UICommon", "Floppy", "DeviceType");
+        case KDeviceType_DVD:          return QApplication::translate("UICommon", "Optical", "DeviceType");
+        case KDeviceType_HardDisk:     return QApplication::translate("UICommon", "Hard Disk", "DeviceType");
+        case KDeviceType_Network:      return QApplication::translate("UICommon", "Network", "DeviceType");
+        case KDeviceType_USB:          return QApplication::translate("UICommon", "USB", "DeviceType");
+        case KDeviceType_SharedFolder: return QApplication::translate("UICommon", "Shared Folder", "DeviceType");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
@@ -220,8 +220,8 @@
     switch (mode)
     {
-        case KClipboardMode_Disabled:      return QApplication::translate("VBoxGlobal", "Disabled", "ClipboardType");
-        case KClipboardMode_HostToGuest:   return QApplication::translate("VBoxGlobal", "Host To Guest", "ClipboardType");
-        case KClipboardMode_GuestToHost:   return QApplication::translate("VBoxGlobal", "Guest To Host", "ClipboardType");
-        case KClipboardMode_Bidirectional: return QApplication::translate("VBoxGlobal", "Bidirectional", "ClipboardType");
+        case KClipboardMode_Disabled:      return QApplication::translate("UICommon", "Disabled", "ClipboardType");
+        case KClipboardMode_HostToGuest:   return QApplication::translate("UICommon", "Host To Guest", "ClipboardType");
+        case KClipboardMode_GuestToHost:   return QApplication::translate("UICommon", "Guest To Host", "ClipboardType");
+        case KClipboardMode_Bidirectional: return QApplication::translate("UICommon", "Bidirectional", "ClipboardType");
         default: AssertMsgFailed(("No text for %d", mode)); break;
     }
@@ -234,8 +234,8 @@
     switch (mode)
     {
-        case KDnDMode_Disabled:      return QApplication::translate("VBoxGlobal", "Disabled", "DragAndDropType");
-        case KDnDMode_HostToGuest:   return QApplication::translate("VBoxGlobal", "Host To Guest", "DragAndDropType");
-        case KDnDMode_GuestToHost:   return QApplication::translate("VBoxGlobal", "Guest To Host", "DragAndDropType");
-        case KDnDMode_Bidirectional: return QApplication::translate("VBoxGlobal", "Bidirectional", "DragAndDropType");
+        case KDnDMode_Disabled:      return QApplication::translate("UICommon", "Disabled", "DragAndDropType");
+        case KDnDMode_HostToGuest:   return QApplication::translate("UICommon", "Host To Guest", "DragAndDropType");
+        case KDnDMode_GuestToHost:   return QApplication::translate("UICommon", "Guest To Host", "DragAndDropType");
+        case KDnDMode_Bidirectional: return QApplication::translate("UICommon", "Bidirectional", "DragAndDropType");
         default: AssertMsgFailed(("No text for %d", mode)); break;
     }
@@ -248,9 +248,9 @@
     switch (type)
     {
-        case KPointingHIDType_PS2Mouse:      return QApplication::translate("VBoxGlobal", "PS/2 Mouse", "PointingHIDType");
-        case KPointingHIDType_USBMouse:      return QApplication::translate("VBoxGlobal", "USB Mouse", "PointingHIDType");
-        case KPointingHIDType_USBTablet:     return QApplication::translate("VBoxGlobal", "USB Tablet", "PointingHIDType");
-        case KPointingHIDType_ComboMouse:    return QApplication::translate("VBoxGlobal", "PS/2 and USB Mouse", "PointingHIDType");
-        case KPointingHIDType_USBMultiTouch: return QApplication::translate("VBoxGlobal", "USB Multi-Touch Tablet", "PointingHIDType");
+        case KPointingHIDType_PS2Mouse:      return QApplication::translate("UICommon", "PS/2 Mouse", "PointingHIDType");
+        case KPointingHIDType_USBMouse:      return QApplication::translate("UICommon", "USB Mouse", "PointingHIDType");
+        case KPointingHIDType_USBTablet:     return QApplication::translate("UICommon", "USB Tablet", "PointingHIDType");
+        case KPointingHIDType_ComboMouse:    return QApplication::translate("UICommon", "PS/2 and USB Mouse", "PointingHIDType");
+        case KPointingHIDType_USBMultiTouch: return QApplication::translate("UICommon", "USB Multi-Touch Tablet", "PointingHIDType");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
@@ -263,8 +263,8 @@
     switch (type)
     {
-        case KGraphicsControllerType_Null:     return QApplication::translate("VBoxGlobal", "None",     "GraphicsControllerType");
-        case KGraphicsControllerType_VBoxVGA:  return QApplication::translate("VBoxGlobal", "VBoxVGA",  "GraphicsControllerType");
-        case KGraphicsControllerType_VMSVGA:   return QApplication::translate("VBoxGlobal", "VMSVGA",   "GraphicsControllerType");
-        case KGraphicsControllerType_VBoxSVGA: return QApplication::translate("VBoxGlobal", "VBoxSVGA", "GraphicsControllerType");
+        case KGraphicsControllerType_Null:     return QApplication::translate("UICommon", "None",     "GraphicsControllerType");
+        case KGraphicsControllerType_VBoxVGA:  return QApplication::translate("UICommon", "VBoxVGA",  "GraphicsControllerType");
+        case KGraphicsControllerType_VMSVGA:   return QApplication::translate("UICommon", "VMSVGA",   "GraphicsControllerType");
+        case KGraphicsControllerType_VBoxSVGA: return QApplication::translate("UICommon", "VBoxSVGA", "GraphicsControllerType");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
@@ -276,8 +276,8 @@
 {
     QHash<QString, KGraphicsControllerType> list;
-    list.insert(QApplication::translate("VBoxGlobal", "None",     "GraphicsControllerType"), KGraphicsControllerType_Null);
-    list.insert(QApplication::translate("VBoxGlobal", "VBoxVGA",  "GraphicsControllerType"), KGraphicsControllerType_VBoxVGA);
-    list.insert(QApplication::translate("VBoxGlobal", "VMSVGA",   "GraphicsControllerType"), KGraphicsControllerType_VMSVGA);
-    list.insert(QApplication::translate("VBoxGlobal", "VBoxSVGA", "GraphicsControllerType"), KGraphicsControllerType_VBoxSVGA);
+    list.insert(QApplication::translate("UICommon", "None",     "GraphicsControllerType"), KGraphicsControllerType_Null);
+    list.insert(QApplication::translate("UICommon", "VBoxVGA",  "GraphicsControllerType"), KGraphicsControllerType_VBoxVGA);
+    list.insert(QApplication::translate("UICommon", "VMSVGA",   "GraphicsControllerType"), KGraphicsControllerType_VMSVGA);
+    list.insert(QApplication::translate("UICommon", "VBoxSVGA", "GraphicsControllerType"), KGraphicsControllerType_VBoxSVGA);
     if (!list.contains(strType))
     {
@@ -292,10 +292,10 @@
     switch (type)
     {
-        case KMediumType_Normal:       return QApplication::translate("VBoxGlobal", "Normal", "MediumType");
-        case KMediumType_Immutable:    return QApplication::translate("VBoxGlobal", "Immutable", "MediumType");
-        case KMediumType_Writethrough: return QApplication::translate("VBoxGlobal", "Writethrough", "MediumType");
-        case KMediumType_Shareable:    return QApplication::translate("VBoxGlobal", "Shareable", "MediumType");
-        case KMediumType_Readonly:     return QApplication::translate("VBoxGlobal", "Readonly", "MediumType");
-        case KMediumType_MultiAttach:  return QApplication::translate("VBoxGlobal", "Multi-attach", "MediumType");
+        case KMediumType_Normal:       return QApplication::translate("UICommon", "Normal", "MediumType");
+        case KMediumType_Immutable:    return QApplication::translate("UICommon", "Immutable", "MediumType");
+        case KMediumType_Writethrough: return QApplication::translate("UICommon", "Writethrough", "MediumType");
+        case KMediumType_Shareable:    return QApplication::translate("UICommon", "Shareable", "MediumType");
+        case KMediumType_Readonly:     return QApplication::translate("UICommon", "Readonly", "MediumType");
+        case KMediumType_MultiAttach:  return QApplication::translate("UICommon", "Multi-attach", "MediumType");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
@@ -310,25 +310,25 @@
     {
         case KMediumVariant_Standard:
-            return QApplication::translate("VBoxGlobal", "Dynamically allocated storage", "MediumVariant");
+            return QApplication::translate("UICommon", "Dynamically allocated storage", "MediumVariant");
         case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_VdiZeroExpand):
-            return QApplication::translate("VBoxGlobal", "New dynamically allocated storage", "MediumVariant");
+            return QApplication::translate("UICommon", "New dynamically allocated storage", "MediumVariant");
         case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_Diff):
-            return QApplication::translate("VBoxGlobal", "Dynamically allocated differencing storage", "MediumVariant");
+            return QApplication::translate("UICommon", "Dynamically allocated differencing storage", "MediumVariant");
         case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_Fixed):
-            return QApplication::translate("VBoxGlobal", "Fixed size storage", "MediumVariant");
+            return QApplication::translate("UICommon", "Fixed size storage", "MediumVariant");
         case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_VmdkSplit2G):
-            return QApplication::translate("VBoxGlobal", "Dynamically allocated storage split into files of less than 2GB", "MediumVariant");
+            return QApplication::translate("UICommon", "Dynamically allocated storage split into files of less than 2GB", "MediumVariant");
         case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_VmdkSplit2G | KMediumVariant_Diff):
-            return QApplication::translate("VBoxGlobal", "Dynamically allocated differencing storage split into files of less than 2GB", "MediumVariant");
+            return QApplication::translate("UICommon", "Dynamically allocated differencing storage split into files of less than 2GB", "MediumVariant");
         case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_Fixed | KMediumVariant_VmdkSplit2G):
-            return QApplication::translate("VBoxGlobal", "Fixed size storage split into files of less than 2GB", "MediumVariant");
+            return QApplication::translate("UICommon", "Fixed size storage split into files of less than 2GB", "MediumVariant");
         case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_VmdkStreamOptimized):
-            return QApplication::translate("VBoxGlobal", "Dynamically allocated compressed storage", "MediumVariant");
+            return QApplication::translate("UICommon", "Dynamically allocated compressed storage", "MediumVariant");
         case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_VmdkStreamOptimized | KMediumVariant_Diff):
-            return QApplication::translate("VBoxGlobal", "Dynamically allocated differencing compressed storage", "MediumVariant");
+            return QApplication::translate("UICommon", "Dynamically allocated differencing compressed storage", "MediumVariant");
         case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_Fixed | KMediumVariant_VmdkESX):
-            return QApplication::translate("VBoxGlobal", "Fixed size ESX storage", "MediumVariant");
+            return QApplication::translate("UICommon", "Fixed size ESX storage", "MediumVariant");
         case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_Fixed | KMediumVariant_VmdkRawDisk):
-            return QApplication::translate("VBoxGlobal", "Fixed size storage on raw disk", "MediumVariant");
+            return QApplication::translate("UICommon", "Fixed size storage on raw disk", "MediumVariant");
         default:
             AssertMsgFailed(("No text for %d", variant)); break;
@@ -342,11 +342,11 @@
     switch (type)
     {
-        case KNetworkAttachmentType_Null:       return QApplication::translate("VBoxGlobal", "Not attached", "NetworkAttachmentType");
-        case KNetworkAttachmentType_NAT:        return QApplication::translate("VBoxGlobal", "NAT", "NetworkAttachmentType");
-        case KNetworkAttachmentType_Bridged:    return QApplication::translate("VBoxGlobal", "Bridged Adapter", "NetworkAttachmentType");
-        case KNetworkAttachmentType_Internal:   return QApplication::translate("VBoxGlobal", "Internal Network", "NetworkAttachmentType");
-        case KNetworkAttachmentType_HostOnly:   return QApplication::translate("VBoxGlobal", "Host-only Adapter", "NetworkAttachmentType");
-        case KNetworkAttachmentType_Generic:    return QApplication::translate("VBoxGlobal", "Generic Driver", "NetworkAttachmentType");
-        case KNetworkAttachmentType_NATNetwork: return QApplication::translate("VBoxGlobal", "NAT Network", "NetworkAttachmentType");
+        case KNetworkAttachmentType_Null:       return QApplication::translate("UICommon", "Not attached", "NetworkAttachmentType");
+        case KNetworkAttachmentType_NAT:        return QApplication::translate("UICommon", "NAT", "NetworkAttachmentType");
+        case KNetworkAttachmentType_Bridged:    return QApplication::translate("UICommon", "Bridged Adapter", "NetworkAttachmentType");
+        case KNetworkAttachmentType_Internal:   return QApplication::translate("UICommon", "Internal Network", "NetworkAttachmentType");
+        case KNetworkAttachmentType_HostOnly:   return QApplication::translate("UICommon", "Host-only Adapter", "NetworkAttachmentType");
+        case KNetworkAttachmentType_Generic:    return QApplication::translate("UICommon", "Generic Driver", "NetworkAttachmentType");
+        case KNetworkAttachmentType_NATNetwork: return QApplication::translate("UICommon", "NAT Network", "NetworkAttachmentType");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
@@ -359,11 +359,11 @@
     switch (type)
     {
-        case KNetworkAdapterType_Am79C970A: return QApplication::translate("VBoxGlobal", "PCnet-PCI II (Am79C970A)", "NetworkAdapterType");
-        case KNetworkAdapterType_Am79C973:  return QApplication::translate("VBoxGlobal", "PCnet-FAST III (Am79C973)", "NetworkAdapterType");
-        case KNetworkAdapterType_I82540EM:  return QApplication::translate("VBoxGlobal", "Intel PRO/1000 MT Desktop (82540EM)", "NetworkAdapterType");
-        case KNetworkAdapterType_I82543GC:  return QApplication::translate("VBoxGlobal", "Intel PRO/1000 T Server (82543GC)", "NetworkAdapterType");
-        case KNetworkAdapterType_I82545EM:  return QApplication::translate("VBoxGlobal", "Intel PRO/1000 MT Server (82545EM)", "NetworkAdapterType");
+        case KNetworkAdapterType_Am79C970A: return QApplication::translate("UICommon", "PCnet-PCI II (Am79C970A)", "NetworkAdapterType");
+        case KNetworkAdapterType_Am79C973:  return QApplication::translate("UICommon", "PCnet-FAST III (Am79C973)", "NetworkAdapterType");
+        case KNetworkAdapterType_I82540EM:  return QApplication::translate("UICommon", "Intel PRO/1000 MT Desktop (82540EM)", "NetworkAdapterType");
+        case KNetworkAdapterType_I82543GC:  return QApplication::translate("UICommon", "Intel PRO/1000 T Server (82543GC)", "NetworkAdapterType");
+        case KNetworkAdapterType_I82545EM:  return QApplication::translate("UICommon", "Intel PRO/1000 MT Server (82545EM)", "NetworkAdapterType");
 #ifdef VBOX_WITH_VIRTIO
-        case KNetworkAdapterType_Virtio:    return QApplication::translate("VBoxGlobal", "Paravirtualized Network (virtio-net)", "NetworkAdapterType");
+        case KNetworkAdapterType_Virtio:    return QApplication::translate("UICommon", "Paravirtualized Network (virtio-net)", "NetworkAdapterType");
 #endif /* VBOX_WITH_VIRTIO */
         default: AssertMsgFailed(("No text for %d", type)); break;
@@ -378,9 +378,9 @@
     {
         case KNetworkAdapterPromiscModePolicy_Deny:
-            return QApplication::translate("VBoxGlobal", "Deny", "NetworkAdapterPromiscModePolicy");
+            return QApplication::translate("UICommon", "Deny", "NetworkAdapterPromiscModePolicy");
         case KNetworkAdapterPromiscModePolicy_AllowNetwork:
-            return QApplication::translate("VBoxGlobal", "Allow VMs", "NetworkAdapterPromiscModePolicy");
+            return QApplication::translate("UICommon", "Allow VMs", "NetworkAdapterPromiscModePolicy");
         case KNetworkAdapterPromiscModePolicy_AllowAll:
-            return QApplication::translate("VBoxGlobal", "Allow All", "NetworkAdapterPromiscModePolicy");
+            return QApplication::translate("UICommon", "Allow All", "NetworkAdapterPromiscModePolicy");
         default:
             AssertMsgFailed(("No text for %d", policy)); break;
@@ -394,9 +394,9 @@
     switch (mode)
     {
-        case KPortMode_Disconnected: return QApplication::translate("VBoxGlobal", "Disconnected", "PortMode");
-        case KPortMode_HostPipe:     return QApplication::translate("VBoxGlobal", "Host Pipe", "PortMode");
-        case KPortMode_HostDevice:   return QApplication::translate("VBoxGlobal", "Host Device", "PortMode");
-        case KPortMode_RawFile:      return QApplication::translate("VBoxGlobal", "Raw File", "PortMode");
-        case KPortMode_TCP:          return QApplication::translate("VBoxGlobal", "TCP", "PortMode");
+        case KPortMode_Disconnected: return QApplication::translate("UICommon", "Disconnected", "PortMode");
+        case KPortMode_HostPipe:     return QApplication::translate("UICommon", "Host Pipe", "PortMode");
+        case KPortMode_HostDevice:   return QApplication::translate("UICommon", "Host Device", "PortMode");
+        case KPortMode_RawFile:      return QApplication::translate("UICommon", "Raw File", "PortMode");
+        case KPortMode_TCP:          return QApplication::translate("UICommon", "TCP", "PortMode");
         default: AssertMsgFailed(("No text for %d", mode)); break;
     }
@@ -408,9 +408,9 @@
 {
     QHash<QString, KPortMode> list;
-    list.insert(QApplication::translate("VBoxGlobal", "Disconnected", "PortMode"), KPortMode_Disconnected);
-    list.insert(QApplication::translate("VBoxGlobal", "Host Pipe", "PortMode"),    KPortMode_HostPipe);
-    list.insert(QApplication::translate("VBoxGlobal", "Host Device", "PortMode"),  KPortMode_HostDevice);
-    list.insert(QApplication::translate("VBoxGlobal", "Raw File", "PortMode"),     KPortMode_RawFile);
-    list.insert(QApplication::translate("VBoxGlobal", "TCP", "PortMode"),          KPortMode_TCP);
+    list.insert(QApplication::translate("UICommon", "Disconnected", "PortMode"), KPortMode_Disconnected);
+    list.insert(QApplication::translate("UICommon", "Host Pipe", "PortMode"),    KPortMode_HostPipe);
+    list.insert(QApplication::translate("UICommon", "Host Device", "PortMode"),  KPortMode_HostDevice);
+    list.insert(QApplication::translate("UICommon", "Raw File", "PortMode"),     KPortMode_RawFile);
+    list.insert(QApplication::translate("UICommon", "TCP", "PortMode"),          KPortMode_TCP);
     if (!list.contains(strMode))
     {
@@ -425,7 +425,7 @@
     switch (type)
     {
-        case KUSBControllerType_OHCI: return QApplication::translate("VBoxGlobal", "OHCI", "USBControllerType");
-        case KUSBControllerType_EHCI: return QApplication::translate("VBoxGlobal", "EHCI", "USBControllerType");
-        case KUSBControllerType_XHCI: return QApplication::translate("VBoxGlobal", "xHCI", "USBControllerType");
+        case KUSBControllerType_OHCI: return QApplication::translate("UICommon", "OHCI", "USBControllerType");
+        case KUSBControllerType_EHCI: return QApplication::translate("UICommon", "EHCI", "USBControllerType");
+        case KUSBControllerType_XHCI: return QApplication::translate("UICommon", "xHCI", "USBControllerType");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
@@ -438,10 +438,10 @@
     switch (state)
     {
-        case KUSBDeviceState_NotSupported: return QApplication::translate("VBoxGlobal", "Not supported", "USBDeviceState");
-        case KUSBDeviceState_Unavailable:  return QApplication::translate("VBoxGlobal", "Unavailable", "USBDeviceState");
-        case KUSBDeviceState_Busy:         return QApplication::translate("VBoxGlobal", "Busy", "USBDeviceState");
-        case KUSBDeviceState_Available:    return QApplication::translate("VBoxGlobal", "Available", "USBDeviceState");
-        case KUSBDeviceState_Held:         return QApplication::translate("VBoxGlobal", "Held", "USBDeviceState");
-        case KUSBDeviceState_Captured:     return QApplication::translate("VBoxGlobal", "Captured", "USBDeviceState");
+        case KUSBDeviceState_NotSupported: return QApplication::translate("UICommon", "Not supported", "USBDeviceState");
+        case KUSBDeviceState_Unavailable:  return QApplication::translate("UICommon", "Unavailable", "USBDeviceState");
+        case KUSBDeviceState_Busy:         return QApplication::translate("UICommon", "Busy", "USBDeviceState");
+        case KUSBDeviceState_Available:    return QApplication::translate("UICommon", "Available", "USBDeviceState");
+        case KUSBDeviceState_Held:         return QApplication::translate("UICommon", "Held", "USBDeviceState");
+        case KUSBDeviceState_Captured:     return QApplication::translate("UICommon", "Captured", "USBDeviceState");
         default: AssertMsgFailed(("No text for %d", state)); break;
     }
@@ -454,6 +454,6 @@
     switch (action)
     {
-        case KUSBDeviceFilterAction_Ignore: return QApplication::translate("VBoxGlobal", "Ignore", "USBDeviceFilterAction");
-        case KUSBDeviceFilterAction_Hold:   return QApplication::translate("VBoxGlobal", "Hold", "USBDeviceFilterAction");
+        case KUSBDeviceFilterAction_Ignore: return QApplication::translate("UICommon", "Ignore", "USBDeviceFilterAction");
+        case KUSBDeviceFilterAction_Hold:   return QApplication::translate("UICommon", "Hold", "USBDeviceFilterAction");
         default: AssertMsgFailed(("No text for %d", action)); break;
     }
@@ -465,6 +465,6 @@
 {
     QHash<QString, KUSBDeviceFilterAction> list;
-    list.insert(QApplication::translate("VBoxGlobal", "Ignore", "USBDeviceFilterAction"), KUSBDeviceFilterAction_Ignore);
-    list.insert(QApplication::translate("VBoxGlobal", "Hold", "USBDeviceFilterAction"),   KUSBDeviceFilterAction_Hold);
+    list.insert(QApplication::translate("UICommon", "Ignore", "USBDeviceFilterAction"), KUSBDeviceFilterAction_Ignore);
+    list.insert(QApplication::translate("UICommon", "Hold", "USBDeviceFilterAction"),   KUSBDeviceFilterAction_Hold);
     if (!list.contains(strAction))
     {
@@ -479,13 +479,13 @@
     switch (type)
     {
-        case KAudioDriverType_Null:        return QApplication::translate("VBoxGlobal", "Null Audio Driver", "AudioDriverType");
-        case KAudioDriverType_WinMM:       return QApplication::translate("VBoxGlobal", "Windows Multimedia", "AudioDriverType");
-        case KAudioDriverType_OSS:         return QApplication::translate("VBoxGlobal", "OSS Audio Driver", "AudioDriverType");
-        case KAudioDriverType_ALSA:        return QApplication::translate("VBoxGlobal", "ALSA Audio Driver", "AudioDriverType");
-        case KAudioDriverType_DirectSound: return QApplication::translate("VBoxGlobal", "Windows DirectSound", "AudioDriverType");
-        case KAudioDriverType_CoreAudio:   return QApplication::translate("VBoxGlobal", "CoreAudio", "AudioDriverType");
+        case KAudioDriverType_Null:        return QApplication::translate("UICommon", "Null Audio Driver", "AudioDriverType");
+        case KAudioDriverType_WinMM:       return QApplication::translate("UICommon", "Windows Multimedia", "AudioDriverType");
+        case KAudioDriverType_OSS:         return QApplication::translate("UICommon", "OSS Audio Driver", "AudioDriverType");
+        case KAudioDriverType_ALSA:        return QApplication::translate("UICommon", "ALSA Audio Driver", "AudioDriverType");
+        case KAudioDriverType_DirectSound: return QApplication::translate("UICommon", "Windows DirectSound", "AudioDriverType");
+        case KAudioDriverType_CoreAudio:   return QApplication::translate("UICommon", "CoreAudio", "AudioDriverType");
         // case KAudioDriverType_MMPM:
-        case KAudioDriverType_Pulse:       return QApplication::translate("VBoxGlobal", "PulseAudio", "AudioDriverType");
-        case KAudioDriverType_SolAudio:    return QApplication::translate("VBoxGlobal", "Solaris Audio", "AudioDriverType");
+        case KAudioDriverType_Pulse:       return QApplication::translate("UICommon", "PulseAudio", "AudioDriverType");
+        case KAudioDriverType_SolAudio:    return QApplication::translate("UICommon", "Solaris Audio", "AudioDriverType");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
@@ -497,13 +497,13 @@
 {
     QHash<QString, KAudioDriverType> list;
-    list.insert(QApplication::translate("VBoxGlobal", "Null Audio Driver", "AudioDriverType"),   KAudioDriverType_Null);
-    list.insert(QApplication::translate("VBoxGlobal", "Windows Multimedia", "AudioDriverType"),  KAudioDriverType_WinMM);
-    list.insert(QApplication::translate("VBoxGlobal", "OSS Audio Driver", "AudioDriverType"),    KAudioDriverType_OSS);
-    list.insert(QApplication::translate("VBoxGlobal", "ALSA Audio Driver", "AudioDriverType"),   KAudioDriverType_ALSA);
-    list.insert(QApplication::translate("VBoxGlobal", "Windows DirectSound", "AudioDriverType"), KAudioDriverType_DirectSound);
-    list.insert(QApplication::translate("VBoxGlobal", "CoreAudio", "AudioDriverType"),           KAudioDriverType_CoreAudio);
+    list.insert(QApplication::translate("UICommon", "Null Audio Driver", "AudioDriverType"),   KAudioDriverType_Null);
+    list.insert(QApplication::translate("UICommon", "Windows Multimedia", "AudioDriverType"),  KAudioDriverType_WinMM);
+    list.insert(QApplication::translate("UICommon", "OSS Audio Driver", "AudioDriverType"),    KAudioDriverType_OSS);
+    list.insert(QApplication::translate("UICommon", "ALSA Audio Driver", "AudioDriverType"),   KAudioDriverType_ALSA);
+    list.insert(QApplication::translate("UICommon", "Windows DirectSound", "AudioDriverType"), KAudioDriverType_DirectSound);
+    list.insert(QApplication::translate("UICommon", "CoreAudio", "AudioDriverType"),           KAudioDriverType_CoreAudio);
     // list.insert(..., KAudioDriverType_MMPM);
-    list.insert(QApplication::translate("VBoxGlobal", "PulseAudio", "AudioDriverType"),          KAudioDriverType_Pulse);
-    list.insert(QApplication::translate("VBoxGlobal", "Solaris Audio", "AudioDriverType"),       KAudioDriverType_SolAudio);
+    list.insert(QApplication::translate("UICommon", "PulseAudio", "AudioDriverType"),          KAudioDriverType_Pulse);
+    list.insert(QApplication::translate("UICommon", "Solaris Audio", "AudioDriverType"),       KAudioDriverType_SolAudio);
     if (!list.contains(strType))
     {
@@ -518,7 +518,7 @@
     switch (type)
     {
-        case KAudioControllerType_AC97: return QApplication::translate("VBoxGlobal", "ICH AC97", "AudioControllerType");
-        case KAudioControllerType_SB16: return QApplication::translate("VBoxGlobal", "SoundBlaster 16", "AudioControllerType");
-        case KAudioControllerType_HDA:  return QApplication::translate("VBoxGlobal", "Intel HD Audio", "AudioControllerType");
+        case KAudioControllerType_AC97: return QApplication::translate("UICommon", "ICH AC97", "AudioControllerType");
+        case KAudioControllerType_SB16: return QApplication::translate("UICommon", "SoundBlaster 16", "AudioControllerType");
+        case KAudioControllerType_HDA:  return QApplication::translate("UICommon", "Intel HD Audio", "AudioControllerType");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
@@ -530,7 +530,7 @@
 {
     QHash<QString, KAudioControllerType> list;
-    list.insert(QApplication::translate("VBoxGlobal", "ICH AC97", "AudioControllerType"),        KAudioControllerType_AC97);
-    list.insert(QApplication::translate("VBoxGlobal", "SoundBlaster 16", "AudioControllerType"), KAudioControllerType_SB16);
-    list.insert(QApplication::translate("VBoxGlobal", "Intel HD Audio", "AudioControllerType"),  KAudioControllerType_HDA);
+    list.insert(QApplication::translate("UICommon", "ICH AC97", "AudioControllerType"),        KAudioControllerType_AC97);
+    list.insert(QApplication::translate("UICommon", "SoundBlaster 16", "AudioControllerType"), KAudioControllerType_SB16);
+    list.insert(QApplication::translate("UICommon", "Intel HD Audio", "AudioControllerType"),  KAudioControllerType_HDA);
     if (!list.contains(strType))
     {
@@ -545,7 +545,7 @@
     switch (type)
     {
-        case KAuthType_Null:     return QApplication::translate("VBoxGlobal", "Null", "AuthType");
-        case KAuthType_External: return QApplication::translate("VBoxGlobal", "External", "AuthType");
-        case KAuthType_Guest:    return QApplication::translate("VBoxGlobal", "Guest", "AuthType");
+        case KAuthType_Null:     return QApplication::translate("UICommon", "Null", "AuthType");
+        case KAuthType_External: return QApplication::translate("UICommon", "External", "AuthType");
+        case KAuthType_Guest:    return QApplication::translate("UICommon", "Guest", "AuthType");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
@@ -557,7 +557,7 @@
 {
     QHash<QString, KAuthType> list;
-    list.insert(QApplication::translate("VBoxGlobal", "Null", "AuthType"),     KAuthType_Null);
-    list.insert(QApplication::translate("VBoxGlobal", "External", "AuthType"), KAuthType_External);
-    list.insert(QApplication::translate("VBoxGlobal", "Guest", "AuthType"),    KAuthType_Guest);
+    list.insert(QApplication::translate("UICommon", "Null", "AuthType"),     KAuthType_Null);
+    list.insert(QApplication::translate("UICommon", "External", "AuthType"), KAuthType_External);
+    list.insert(QApplication::translate("UICommon", "Guest", "AuthType"),    KAuthType_Guest);
     if (!list.contains(strType))
     {
@@ -572,12 +572,12 @@
     switch (bus)
     {
-        case KStorageBus_IDE:        return QApplication::translate("VBoxGlobal", "IDE", "StorageBus");
-        case KStorageBus_SATA:       return QApplication::translate("VBoxGlobal", "SATA", "StorageBus");
-        case KStorageBus_SCSI:       return QApplication::translate("VBoxGlobal", "SCSI", "StorageBus");
-        case KStorageBus_Floppy:     return QApplication::translate("VBoxGlobal", "Floppy", "StorageBus");
-        case KStorageBus_SAS:        return QApplication::translate("VBoxGlobal", "SAS", "StorageBus");
-        case KStorageBus_USB:        return QApplication::translate("VBoxGlobal", "USB", "StorageBus");
-        case KStorageBus_PCIe:       return QApplication::translate("VBoxGlobal", "PCIe", "StorageBus");
-        case KStorageBus_VirtioSCSI: return QApplication::translate("VBoxGlobal", "virtio-scsi", "StorageBus");
+        case KStorageBus_IDE:        return QApplication::translate("UICommon", "IDE", "StorageBus");
+        case KStorageBus_SATA:       return QApplication::translate("UICommon", "SATA", "StorageBus");
+        case KStorageBus_SCSI:       return QApplication::translate("UICommon", "SCSI", "StorageBus");
+        case KStorageBus_Floppy:     return QApplication::translate("UICommon", "Floppy", "StorageBus");
+        case KStorageBus_SAS:        return QApplication::translate("UICommon", "SAS", "StorageBus");
+        case KStorageBus_USB:        return QApplication::translate("UICommon", "USB", "StorageBus");
+        case KStorageBus_PCIe:       return QApplication::translate("UICommon", "PCIe", "StorageBus");
+        case KStorageBus_VirtioSCSI: return QApplication::translate("UICommon", "virtio-scsi", "StorageBus");
         default:                     AssertMsgFailed(("No text for %d", bus)); break;
     }
@@ -589,12 +589,12 @@
 {
     QHash<QString, KStorageBus> list;
-    list.insert(QApplication::translate("VBoxGlobal", "IDE", "StorageBus"),         KStorageBus_IDE);
-    list.insert(QApplication::translate("VBoxGlobal", "SATA", "StorageBus"),        KStorageBus_SATA);
-    list.insert(QApplication::translate("VBoxGlobal", "SCSI", "StorageBus"),        KStorageBus_SCSI);
-    list.insert(QApplication::translate("VBoxGlobal", "Floppy", "StorageBus"),      KStorageBus_Floppy);
-    list.insert(QApplication::translate("VBoxGlobal", "SAS", "StorageBus"),         KStorageBus_SAS);
-    list.insert(QApplication::translate("VBoxGlobal", "USB", "StorageBus"),         KStorageBus_USB);
-    list.insert(QApplication::translate("VBoxGlobal", "PCIe", "StorageBus"),        KStorageBus_PCIe);
-    list.insert(QApplication::translate("VBoxGlobal", "virtio-scsi", "StorageBus"), KStorageBus_VirtioSCSI);
+    list.insert(QApplication::translate("UICommon", "IDE", "StorageBus"),         KStorageBus_IDE);
+    list.insert(QApplication::translate("UICommon", "SATA", "StorageBus"),        KStorageBus_SATA);
+    list.insert(QApplication::translate("UICommon", "SCSI", "StorageBus"),        KStorageBus_SCSI);
+    list.insert(QApplication::translate("UICommon", "Floppy", "StorageBus"),      KStorageBus_Floppy);
+    list.insert(QApplication::translate("UICommon", "SAS", "StorageBus"),         KStorageBus_SAS);
+    list.insert(QApplication::translate("UICommon", "USB", "StorageBus"),         KStorageBus_USB);
+    list.insert(QApplication::translate("UICommon", "PCIe", "StorageBus"),        KStorageBus_PCIe);
+    list.insert(QApplication::translate("UICommon", "virtio-scsi", "StorageBus"), KStorageBus_VirtioSCSI);
     if (!list.contains(strType))
     {
@@ -609,15 +609,15 @@
     switch (type)
     {
-        case KStorageControllerType_LsiLogic:    return QApplication::translate("VBoxGlobal", "Lsilogic", "StorageControllerType");
-        case KStorageControllerType_BusLogic:    return QApplication::translate("VBoxGlobal", "BusLogic", "StorageControllerType");
-        case KStorageControllerType_IntelAhci:   return QApplication::translate("VBoxGlobal", "AHCI", "StorageControllerType");
-        case KStorageControllerType_PIIX3:       return QApplication::translate("VBoxGlobal", "PIIX3", "StorageControllerType");
-        case KStorageControllerType_PIIX4:       return QApplication::translate("VBoxGlobal", "PIIX4", "StorageControllerType");
-        case KStorageControllerType_ICH6:        return QApplication::translate("VBoxGlobal", "ICH6", "StorageControllerType");
-        case KStorageControllerType_I82078:      return QApplication::translate("VBoxGlobal", "I82078", "StorageControllerType");
-        case KStorageControllerType_LsiLogicSas: return QApplication::translate("VBoxGlobal", "LsiLogic SAS", "StorageControllerType");
-        case KStorageControllerType_USB:         return QApplication::translate("VBoxGlobal", "USB", "StorageControllerType");
-        case KStorageControllerType_NVMe:        return QApplication::translate("VBoxGlobal", "NVMe", "StorageControllerType");
-        case KStorageControllerType_VirtioSCSI:  return QApplication::translate("VBoxGlobal", "virtio-scsi", "StorageControllerType");
+        case KStorageControllerType_LsiLogic:    return QApplication::translate("UICommon", "Lsilogic", "StorageControllerType");
+        case KStorageControllerType_BusLogic:    return QApplication::translate("UICommon", "BusLogic", "StorageControllerType");
+        case KStorageControllerType_IntelAhci:   return QApplication::translate("UICommon", "AHCI", "StorageControllerType");
+        case KStorageControllerType_PIIX3:       return QApplication::translate("UICommon", "PIIX3", "StorageControllerType");
+        case KStorageControllerType_PIIX4:       return QApplication::translate("UICommon", "PIIX4", "StorageControllerType");
+        case KStorageControllerType_ICH6:        return QApplication::translate("UICommon", "ICH6", "StorageControllerType");
+        case KStorageControllerType_I82078:      return QApplication::translate("UICommon", "I82078", "StorageControllerType");
+        case KStorageControllerType_LsiLogicSas: return QApplication::translate("UICommon", "LsiLogic SAS", "StorageControllerType");
+        case KStorageControllerType_USB:         return QApplication::translate("UICommon", "USB", "StorageControllerType");
+        case KStorageControllerType_NVMe:        return QApplication::translate("UICommon", "NVMe", "StorageControllerType");
+        case KStorageControllerType_VirtioSCSI:  return QApplication::translate("UICommon", "virtio-scsi", "StorageControllerType");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
@@ -629,15 +629,15 @@
 {
     QHash<QString, KStorageControllerType> list;
-    list.insert(QApplication::translate("VBoxGlobal", "Lsilogic", "StorageControllerType"),     KStorageControllerType_LsiLogic);
-    list.insert(QApplication::translate("VBoxGlobal", "BusLogic", "StorageControllerType"),     KStorageControllerType_BusLogic);
-    list.insert(QApplication::translate("VBoxGlobal", "AHCI", "StorageControllerType"),         KStorageControllerType_IntelAhci);
-    list.insert(QApplication::translate("VBoxGlobal", "PIIX3", "StorageControllerType"),        KStorageControllerType_PIIX3);
-    list.insert(QApplication::translate("VBoxGlobal", "PIIX4", "StorageControllerType"),        KStorageControllerType_PIIX4);
-    list.insert(QApplication::translate("VBoxGlobal", "ICH6", "StorageControllerType"),         KStorageControllerType_ICH6);
-    list.insert(QApplication::translate("VBoxGlobal", "I82078", "StorageControllerType"),       KStorageControllerType_I82078);
-    list.insert(QApplication::translate("VBoxGlobal", "LsiLogic SAS", "StorageControllerType"), KStorageControllerType_LsiLogicSas);
-    list.insert(QApplication::translate("VBoxGlobal", "USB", "StorageControllerType"),          KStorageControllerType_USB);
-    list.insert(QApplication::translate("VBoxGlobal", "NVMe", "StorageControllerType"),         KStorageControllerType_NVMe);
-    list.insert(QApplication::translate("VBoxGlobal", "virtio-scsi", "StorageControllerType"),  KStorageControllerType_VirtioSCSI);
+    list.insert(QApplication::translate("UICommon", "Lsilogic", "StorageControllerType"),     KStorageControllerType_LsiLogic);
+    list.insert(QApplication::translate("UICommon", "BusLogic", "StorageControllerType"),     KStorageControllerType_BusLogic);
+    list.insert(QApplication::translate("UICommon", "AHCI", "StorageControllerType"),         KStorageControllerType_IntelAhci);
+    list.insert(QApplication::translate("UICommon", "PIIX3", "StorageControllerType"),        KStorageControllerType_PIIX3);
+    list.insert(QApplication::translate("UICommon", "PIIX4", "StorageControllerType"),        KStorageControllerType_PIIX4);
+    list.insert(QApplication::translate("UICommon", "ICH6", "StorageControllerType"),         KStorageControllerType_ICH6);
+    list.insert(QApplication::translate("UICommon", "I82078", "StorageControllerType"),       KStorageControllerType_I82078);
+    list.insert(QApplication::translate("UICommon", "LsiLogic SAS", "StorageControllerType"), KStorageControllerType_LsiLogicSas);
+    list.insert(QApplication::translate("UICommon", "USB", "StorageControllerType"),          KStorageControllerType_USB);
+    list.insert(QApplication::translate("UICommon", "NVMe", "StorageControllerType"),         KStorageControllerType_NVMe);
+    list.insert(QApplication::translate("UICommon", "virtio-scsi", "StorageControllerType"),  KStorageControllerType_VirtioSCSI);
     if (!list.contains(strType))
     {
@@ -652,6 +652,6 @@
     switch (type)
     {
-        case KChipsetType_PIIX3: return QApplication::translate("VBoxGlobal", "PIIX3", "ChipsetType");
-        case KChipsetType_ICH9:  return QApplication::translate("VBoxGlobal", "ICH9", "ChipsetType");
+        case KChipsetType_PIIX3: return QApplication::translate("UICommon", "PIIX3", "ChipsetType");
+        case KChipsetType_ICH9:  return QApplication::translate("UICommon", "ICH9", "ChipsetType");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
@@ -664,6 +664,6 @@
     switch (protocol)
     {
-        case KNATProtocol_UDP: return QApplication::translate("VBoxGlobal", "UDP", "NATProtocol");
-        case KNATProtocol_TCP: return QApplication::translate("VBoxGlobal", "TCP", "NATProtocol");
+        case KNATProtocol_UDP: return QApplication::translate("UICommon", "UDP", "NATProtocol");
+        case KNATProtocol_TCP: return QApplication::translate("UICommon", "TCP", "NATProtocol");
         default: AssertMsgFailed(("No text for %d", protocol)); break;
     }
@@ -706,13 +706,13 @@
     switch (enmStatus)
     {
-        case KGuestSessionStatus_Undefined:           return QApplication::translate("VBoxGlobal", "Undefined",          "GuestSessionStatus");
-        case KGuestSessionStatus_Starting:            return QApplication::translate("VBoxGlobal", "Starting",           "GuestSessionStatus");
-        case KGuestSessionStatus_Started:             return QApplication::translate("VBoxGlobal", "Started",            "GuestSessionStatus");
-        case KGuestSessionStatus_Terminating:         return QApplication::translate("VBoxGlobal", "Terminating",        "GuestSessionStatus");
-        case KGuestSessionStatus_Terminated:          return QApplication::translate("VBoxGlobal", "Terminated",         "GuestSessionStatus");
-        case KGuestSessionStatus_TimedOutKilled:      return QApplication::translate("VBoxGlobal", "TimedOutKilled",     "GuestSessionStatus");
-        case KGuestSessionStatus_TimedOutAbnormally:  return QApplication::translate("VBoxGlobal", "TimedOutAbnormally", "GuestSessionStatus");
-        case KGuestSessionStatus_Down:                return QApplication::translate("VBoxGlobal", "Down",               "GuestSessionStatus");
-        case KGuestSessionStatus_Error:               return QApplication::translate("VBoxGlobal", "Error",              "GuestSessionStatus");
+        case KGuestSessionStatus_Undefined:           return QApplication::translate("UICommon", "Undefined",          "GuestSessionStatus");
+        case KGuestSessionStatus_Starting:            return QApplication::translate("UICommon", "Starting",           "GuestSessionStatus");
+        case KGuestSessionStatus_Started:             return QApplication::translate("UICommon", "Started",            "GuestSessionStatus");
+        case KGuestSessionStatus_Terminating:         return QApplication::translate("UICommon", "Terminating",        "GuestSessionStatus");
+        case KGuestSessionStatus_Terminated:          return QApplication::translate("UICommon", "Terminated",         "GuestSessionStatus");
+        case KGuestSessionStatus_TimedOutKilled:      return QApplication::translate("UICommon", "TimedOutKilled",     "GuestSessionStatus");
+        case KGuestSessionStatus_TimedOutAbnormally:  return QApplication::translate("UICommon", "TimedOutAbnormally", "GuestSessionStatus");
+        case KGuestSessionStatus_Down:                return QApplication::translate("UICommon", "Down",               "GuestSessionStatus");
+        case KGuestSessionStatus_Error:               return QApplication::translate("UICommon", "Error",              "GuestSessionStatus");
         default: AssertMsgFailed(("No text for %d", enmStatus)); break;
     }
@@ -723,13 +723,13 @@
 {
     QHash<QString, KGuestSessionStatus> list;
-    list.insert(QApplication::translate("VBoxGlobal", "Undefined",          "GuestSessionStatus"),  KGuestSessionStatus_Undefined);
-    list.insert(QApplication::translate("VBoxGlobal", "Starting",           "GuestSessionStatus"),  KGuestSessionStatus_Starting);
-    list.insert(QApplication::translate("VBoxGlobal", "Started",            "GuestSessionStatus"),  KGuestSessionStatus_Started);
-    list.insert(QApplication::translate("VBoxGlobal", "Terminating",        "GuestSessionStatus"),  KGuestSessionStatus_Terminating);
-    list.insert(QApplication::translate("VBoxGlobal", "Terminated",         "GuestSessionStatus"),  KGuestSessionStatus_Terminated);
-    list.insert(QApplication::translate("VBoxGlobal", "TimedOutKilled",     "GuestSessionStatus"),  KGuestSessionStatus_TimedOutKilled);
-    list.insert(QApplication::translate("VBoxGlobal", "TimedOutAbnormally", "GuestSessionStatus"),  KGuestSessionStatus_TimedOutAbnormally);
-    list.insert(QApplication::translate("VBoxGlobal", "Down",               "GuestSessionStatus"),  KGuestSessionStatus_Down);
-    list.insert(QApplication::translate("VBoxGlobal", "Error",              "GuestSessionStatus"),  KGuestSessionStatus_Error);
+    list.insert(QApplication::translate("UICommon", "Undefined",          "GuestSessionStatus"),  KGuestSessionStatus_Undefined);
+    list.insert(QApplication::translate("UICommon", "Starting",           "GuestSessionStatus"),  KGuestSessionStatus_Starting);
+    list.insert(QApplication::translate("UICommon", "Started",            "GuestSessionStatus"),  KGuestSessionStatus_Started);
+    list.insert(QApplication::translate("UICommon", "Terminating",        "GuestSessionStatus"),  KGuestSessionStatus_Terminating);
+    list.insert(QApplication::translate("UICommon", "Terminated",         "GuestSessionStatus"),  KGuestSessionStatus_Terminated);
+    list.insert(QApplication::translate("UICommon", "TimedOutKilled",     "GuestSessionStatus"),  KGuestSessionStatus_TimedOutKilled);
+    list.insert(QApplication::translate("UICommon", "TimedOutAbnormally", "GuestSessionStatus"),  KGuestSessionStatus_TimedOutAbnormally);
+    list.insert(QApplication::translate("UICommon", "Down",               "GuestSessionStatus"),  KGuestSessionStatus_Down);
+    list.insert(QApplication::translate("UICommon", "Error",              "GuestSessionStatus"),  KGuestSessionStatus_Error);
     if (!list.contains(strStatus))
     {
@@ -743,16 +743,16 @@
     switch (enmStatus)
     {
-        case KProcessStatus_Undefined:            return QApplication::translate("VBoxGlobal", "Undefined",            "ProcessStatus");
-        case KProcessStatus_Starting:             return QApplication::translate("VBoxGlobal", "Starting",             "ProcessStatus");
-        case KProcessStatus_Started:              return QApplication::translate("VBoxGlobal", "Started",              "ProcessStatus");
-        case KProcessStatus_Paused:               return QApplication::translate("VBoxGlobal", "Paused",               "ProcessStatus");
-        case KProcessStatus_Terminating:          return QApplication::translate("VBoxGlobal", "Terminating",          "ProcessStatus");
-        case KProcessStatus_TerminatedNormally:   return QApplication::translate("VBoxGlobal", "TerminatedNormally",   "ProcessStatus");
-        case KProcessStatus_TerminatedSignal:     return QApplication::translate("VBoxGlobal", "TerminatedSignal",     "ProcessStatus");
-        case KProcessStatus_TerminatedAbnormally: return QApplication::translate("VBoxGlobal", "TerminatedAbnormally", "ProcessStatus");
-        case KProcessStatus_TimedOutKilled:       return QApplication::translate("VBoxGlobal", "TimedOutKilled",       "ProcessStatus");
-        case KProcessStatus_TimedOutAbnormally:   return QApplication::translate("VBoxGlobal", "TimedOutAbnormally",   "ProcessStatus");
-        case KProcessStatus_Down:                 return QApplication::translate("VBoxGlobal", "Down",                 "ProcessStatus");
-        case KProcessStatus_Error:                return QApplication::translate("VBoxGlobal", "Error",                "ProcessStatus");
+        case KProcessStatus_Undefined:            return QApplication::translate("UICommon", "Undefined",            "ProcessStatus");
+        case KProcessStatus_Starting:             return QApplication::translate("UICommon", "Starting",             "ProcessStatus");
+        case KProcessStatus_Started:              return QApplication::translate("UICommon", "Started",              "ProcessStatus");
+        case KProcessStatus_Paused:               return QApplication::translate("UICommon", "Paused",               "ProcessStatus");
+        case KProcessStatus_Terminating:          return QApplication::translate("UICommon", "Terminating",          "ProcessStatus");
+        case KProcessStatus_TerminatedNormally:   return QApplication::translate("UICommon", "TerminatedNormally",   "ProcessStatus");
+        case KProcessStatus_TerminatedSignal:     return QApplication::translate("UICommon", "TerminatedSignal",     "ProcessStatus");
+        case KProcessStatus_TerminatedAbnormally: return QApplication::translate("UICommon", "TerminatedAbnormally", "ProcessStatus");
+        case KProcessStatus_TimedOutKilled:       return QApplication::translate("UICommon", "TimedOutKilled",       "ProcessStatus");
+        case KProcessStatus_TimedOutAbnormally:   return QApplication::translate("UICommon", "TimedOutAbnormally",   "ProcessStatus");
+        case KProcessStatus_Down:                 return QApplication::translate("UICommon", "Down",                 "ProcessStatus");
+        case KProcessStatus_Error:                return QApplication::translate("UICommon", "Error",                "ProcessStatus");
         default: AssertMsgFailed(("No text for %d", enmStatus)); break;
     }
@@ -763,16 +763,16 @@
 {
     QHash<QString, KProcessStatus> list;
-    list.insert(QApplication::translate("VBoxGlobal", "Undefined",            "ProcessStatus"),  KProcessStatus_Undefined);
-    list.insert(QApplication::translate("VBoxGlobal", "Starting",             "ProcessStatus"),  KProcessStatus_Starting);
-    list.insert(QApplication::translate("VBoxGlobal", "Started",              "ProcessStatus"),  KProcessStatus_Started);
-    list.insert(QApplication::translate("VBoxGlobal", "Paused",               "ProcessStatus"),  KProcessStatus_Paused);
-    list.insert(QApplication::translate("VBoxGlobal", "Terminating",          "ProcessStatus"),  KProcessStatus_Terminating);
-    list.insert(QApplication::translate("VBoxGlobal", "TerminatedNormally",   "ProcessStatus"),  KProcessStatus_TerminatedNormally);
-    list.insert(QApplication::translate("VBoxGlobal", "TerminatedSignal",     "ProcessStatus"),  KProcessStatus_TerminatedSignal);
-    list.insert(QApplication::translate("VBoxGlobal", "TerminatedAbnormally", "ProcessStatus"),  KProcessStatus_TerminatedAbnormally);
-    list.insert(QApplication::translate("VBoxGlobal", "TimedOutKilled",       "ProcessStatus"),  KProcessStatus_TimedOutKilled);
-    list.insert(QApplication::translate("VBoxGlobal", "TimedOutAbnormally",   "ProcessStatus"),  KProcessStatus_TimedOutAbnormally);
-    list.insert(QApplication::translate("VBoxGlobal", "Down",                 "ProcessStatus"),  KProcessStatus_Down);
-    list.insert(QApplication::translate("VBoxGlobal", "Error",                "ProcessStatus"),  KProcessStatus_Error);
+    list.insert(QApplication::translate("UICommon", "Undefined",            "ProcessStatus"),  KProcessStatus_Undefined);
+    list.insert(QApplication::translate("UICommon", "Starting",             "ProcessStatus"),  KProcessStatus_Starting);
+    list.insert(QApplication::translate("UICommon", "Started",              "ProcessStatus"),  KProcessStatus_Started);
+    list.insert(QApplication::translate("UICommon", "Paused",               "ProcessStatus"),  KProcessStatus_Paused);
+    list.insert(QApplication::translate("UICommon", "Terminating",          "ProcessStatus"),  KProcessStatus_Terminating);
+    list.insert(QApplication::translate("UICommon", "TerminatedNormally",   "ProcessStatus"),  KProcessStatus_TerminatedNormally);
+    list.insert(QApplication::translate("UICommon", "TerminatedSignal",     "ProcessStatus"),  KProcessStatus_TerminatedSignal);
+    list.insert(QApplication::translate("UICommon", "TerminatedAbnormally", "ProcessStatus"),  KProcessStatus_TerminatedAbnormally);
+    list.insert(QApplication::translate("UICommon", "TimedOutKilled",       "ProcessStatus"),  KProcessStatus_TimedOutKilled);
+    list.insert(QApplication::translate("UICommon", "TimedOutAbnormally",   "ProcessStatus"),  KProcessStatus_TimedOutAbnormally);
+    list.insert(QApplication::translate("UICommon", "Down",                 "ProcessStatus"),  KProcessStatus_Down);
+    list.insert(QApplication::translate("UICommon", "Error",                "ProcessStatus"),  KProcessStatus_Error);
 
     if (!list.contains(strStatus))
Index: /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIConverterBackend.h"
 #include "UIIconPool.h"
@@ -87,10 +87,10 @@
     switch (sizeSuffix)
     {
-        case SizeSuffix_Byte:     strResult = QApplication::translate("VBoxGlobal", "B", "size suffix Bytes"); break;
-        case SizeSuffix_KiloByte: strResult = QApplication::translate("VBoxGlobal", "KB", "size suffix KBytes=1024 Bytes"); break;
-        case SizeSuffix_MegaByte: strResult = QApplication::translate("VBoxGlobal", "MB", "size suffix MBytes=1024 KBytes"); break;
-        case SizeSuffix_GigaByte: strResult = QApplication::translate("VBoxGlobal", "GB", "size suffix GBytes=1024 MBytes"); break;
-        case SizeSuffix_TeraByte: strResult = QApplication::translate("VBoxGlobal", "TB", "size suffix TBytes=1024 GBytes"); break;
-        case SizeSuffix_PetaByte: strResult = QApplication::translate("VBoxGlobal", "PB", "size suffix PBytes=1024 TBytes"); break;
+        case SizeSuffix_Byte:     strResult = QApplication::translate("UICommon", "B", "size suffix Bytes"); break;
+        case SizeSuffix_KiloByte: strResult = QApplication::translate("UICommon", "KB", "size suffix KBytes=1024 Bytes"); break;
+        case SizeSuffix_MegaByte: strResult = QApplication::translate("UICommon", "MB", "size suffix MBytes=1024 KBytes"); break;
+        case SizeSuffix_GigaByte: strResult = QApplication::translate("UICommon", "GB", "size suffix GBytes=1024 MBytes"); break;
+        case SizeSuffix_TeraByte: strResult = QApplication::translate("UICommon", "TB", "size suffix TBytes=1024 GBytes"); break;
+        case SizeSuffix_PetaByte: strResult = QApplication::translate("UICommon", "PB", "size suffix PBytes=1024 TBytes"); break;
         default:
         {
@@ -106,10 +106,10 @@
 {
     QHash<QString, SizeSuffix> list;
-    list.insert(QApplication::translate("VBoxGlobal", "B", "size suffix Bytes"),               SizeSuffix_Byte);
-    list.insert(QApplication::translate("VBoxGlobal", "KB", "size suffix KBytes=1024 Bytes"),  SizeSuffix_KiloByte);
-    list.insert(QApplication::translate("VBoxGlobal", "MB", "size suffix MBytes=1024 KBytes"), SizeSuffix_MegaByte);
-    list.insert(QApplication::translate("VBoxGlobal", "GB", "size suffix GBytes=1024 MBytes"), SizeSuffix_GigaByte);
-    list.insert(QApplication::translate("VBoxGlobal", "TB", "size suffix TBytes=1024 GBytes"), SizeSuffix_TeraByte);
-    list.insert(QApplication::translate("VBoxGlobal", "PB", "size suffix PBytes=1024 TBytes"), SizeSuffix_PetaByte);
+    list.insert(QApplication::translate("UICommon", "B", "size suffix Bytes"),               SizeSuffix_Byte);
+    list.insert(QApplication::translate("UICommon", "KB", "size suffix KBytes=1024 Bytes"),  SizeSuffix_KiloByte);
+    list.insert(QApplication::translate("UICommon", "MB", "size suffix MBytes=1024 KBytes"), SizeSuffix_MegaByte);
+    list.insert(QApplication::translate("UICommon", "GB", "size suffix GBytes=1024 MBytes"), SizeSuffix_GigaByte);
+    list.insert(QApplication::translate("UICommon", "TB", "size suffix TBytes=1024 GBytes"), SizeSuffix_TeraByte);
+    list.insert(QApplication::translate("UICommon", "PB", "size suffix PBytes=1024 TBytes"), SizeSuffix_PetaByte);
     if (!list.contains(strSizeSuffix))
     {
@@ -127,6 +127,6 @@
         case KStorageBus_IDE:
         {
-            int iMaxPort = vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
-            int iMaxDevice = vboxGlobal().virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus(storageSlot.bus);
+            int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
+            int iMaxDevice = uiCommon().virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus(storageSlot.bus);
             if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
             {
@@ -140,16 +140,16 @@
             }
             if (storageSlot.port == 0 && storageSlot.device == 0)
-                strResult = QApplication::translate("VBoxGlobal", "IDE Primary Master", "StorageSlot");
+                strResult = QApplication::translate("UICommon", "IDE Primary Master", "StorageSlot");
             else if (storageSlot.port == 0 && storageSlot.device == 1)
-                strResult = QApplication::translate("VBoxGlobal", "IDE Primary Slave", "StorageSlot");
+                strResult = QApplication::translate("UICommon", "IDE Primary Slave", "StorageSlot");
             else if (storageSlot.port == 1 && storageSlot.device == 0)
-                strResult = QApplication::translate("VBoxGlobal", "IDE Secondary Master", "StorageSlot");
+                strResult = QApplication::translate("UICommon", "IDE Secondary Master", "StorageSlot");
             else if (storageSlot.port == 1 && storageSlot.device == 1)
-                strResult = QApplication::translate("VBoxGlobal", "IDE Secondary Slave", "StorageSlot");
+                strResult = QApplication::translate("UICommon", "IDE Secondary Slave", "StorageSlot");
             break;
         }
         case KStorageBus_SATA:
         {
-            int iMaxPort = vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
+            int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
             if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
             {
@@ -162,10 +162,10 @@
                 break;
             }
-            strResult = QApplication::translate("VBoxGlobal", "SATA Port %1", "StorageSlot").arg(storageSlot.port);
+            strResult = QApplication::translate("UICommon", "SATA Port %1", "StorageSlot").arg(storageSlot.port);
             break;
         }
         case KStorageBus_SCSI:
         {
-            int iMaxPort = vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
+            int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
             if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
             {
@@ -178,10 +178,10 @@
                 break;
             }
-            strResult = QApplication::translate("VBoxGlobal", "SCSI Port %1", "StorageSlot").arg(storageSlot.port);
+            strResult = QApplication::translate("UICommon", "SCSI Port %1", "StorageSlot").arg(storageSlot.port);
             break;
         }
         case KStorageBus_SAS:
         {
-            int iMaxPort = vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
+            int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
             if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
             {
@@ -194,10 +194,10 @@
                 break;
             }
-            strResult = QApplication::translate("VBoxGlobal", "SAS Port %1", "StorageSlot").arg(storageSlot.port);
+            strResult = QApplication::translate("UICommon", "SAS Port %1", "StorageSlot").arg(storageSlot.port);
             break;
         }
         case KStorageBus_Floppy:
         {
-            int iMaxDevice = vboxGlobal().virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus(storageSlot.bus);
+            int iMaxDevice = uiCommon().virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus(storageSlot.bus);
             if (storageSlot.port != 0)
             {
@@ -210,10 +210,10 @@
                 break;
             }
-            strResult = QApplication::translate("VBoxGlobal", "Floppy Device %1", "StorageSlot").arg(storageSlot.device);
+            strResult = QApplication::translate("UICommon", "Floppy Device %1", "StorageSlot").arg(storageSlot.device);
             break;
         }
         case KStorageBus_USB:
         {
-            int iMaxPort = vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
+            int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
             if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
             {
@@ -226,10 +226,10 @@
                 break;
             }
-            strResult = QApplication::translate("VBoxGlobal", "USB Port %1", "StorageSlot").arg(storageSlot.port);
+            strResult = QApplication::translate("UICommon", "USB Port %1", "StorageSlot").arg(storageSlot.port);
             break;
         }
         case KStorageBus_PCIe:
         {
-            int iMaxPort = vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
+            int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
             if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
             {
@@ -242,10 +242,10 @@
                 break;
             }
-            strResult = QApplication::translate("VBoxGlobal", "NVMe Port %1", "StorageSlot").arg(storageSlot.port);
+            strResult = QApplication::translate("UICommon", "NVMe Port %1", "StorageSlot").arg(storageSlot.port);
             break;
         }
         case KStorageBus_VirtioSCSI:
         {
-            int iMaxPort = vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
+            int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
             if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
             {
@@ -258,5 +258,5 @@
                 break;
             }
-            strResult = QApplication::translate("VBoxGlobal", "virtio-scsi Port %1", "StorageSlot").arg(storageSlot.port);
+            strResult = QApplication::translate("UICommon", "virtio-scsi Port %1", "StorageSlot").arg(storageSlot.port);
             break;
         }
@@ -275,15 +275,15 @@
     /* Prepare a hash of known port templates: */
     QHash<int, QString> templates;
-    templates[0] = QApplication::translate("VBoxGlobal", "IDE Primary Master", "StorageSlot");
-    templates[1] = QApplication::translate("VBoxGlobal", "IDE Primary Slave", "StorageSlot");
-    templates[2] = QApplication::translate("VBoxGlobal", "IDE Secondary Master", "StorageSlot");
-    templates[3] = QApplication::translate("VBoxGlobal", "IDE Secondary Slave", "StorageSlot");
-    templates[4] = QApplication::translate("VBoxGlobal", "SATA Port %1", "StorageSlot");
-    templates[5] = QApplication::translate("VBoxGlobal", "SCSI Port %1", "StorageSlot");
-    templates[6] = QApplication::translate("VBoxGlobal", "SAS Port %1", "StorageSlot");
-    templates[7] = QApplication::translate("VBoxGlobal", "Floppy Device %1", "StorageSlot");
-    templates[8] = QApplication::translate("VBoxGlobal", "USB Port %1", "StorageSlot");
-    templates[9] = QApplication::translate("VBoxGlobal", "NVMe Port %1", "StorageSlot");
-    templates[10] = QApplication::translate("VBoxGlobal", "virtio-scsi Port %1", "StorageSlot");
+    templates[0] = QApplication::translate("UICommon", "IDE Primary Master", "StorageSlot");
+    templates[1] = QApplication::translate("UICommon", "IDE Primary Slave", "StorageSlot");
+    templates[2] = QApplication::translate("UICommon", "IDE Secondary Master", "StorageSlot");
+    templates[3] = QApplication::translate("UICommon", "IDE Secondary Slave", "StorageSlot");
+    templates[4] = QApplication::translate("UICommon", "SATA Port %1", "StorageSlot");
+    templates[5] = QApplication::translate("UICommon", "SCSI Port %1", "StorageSlot");
+    templates[6] = QApplication::translate("UICommon", "SAS Port %1", "StorageSlot");
+    templates[7] = QApplication::translate("UICommon", "Floppy Device %1", "StorageSlot");
+    templates[8] = QApplication::translate("UICommon", "USB Port %1", "StorageSlot");
+    templates[9] = QApplication::translate("UICommon", "NVMe Port %1", "StorageSlot");
+    templates[10] = QApplication::translate("UICommon", "virtio-scsi Port %1", "StorageSlot");
 
     /* Search for a template index strStorageSlot corresponds to: */
@@ -330,6 +330,6 @@
             if (result.bus == KStorageBus_Null)
                 break;
-            const int iMaxPort = vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(result.bus);
-            const int iMaxDevice = vboxGlobal().virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus(result.bus);
+            const int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(result.bus);
+            const int iMaxDevice = uiCommon().virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus(result.bus);
             const LONG iPort = iIndex / iMaxPort;
             const LONG iDevice = iIndex % iMaxPort;
@@ -358,5 +358,5 @@
             if (result.bus == KStorageBus_Null)
                 break;
-            const int iMaxPort = vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(result.bus);
+            const int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(result.bus);
             const LONG iPort = regExp.cap(1).toInt();
             const LONG iDevice = 0;
@@ -871,8 +871,8 @@
     switch (enmDetailsElementOptionTypeGeneral)
     {
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_Name:     strResult = QApplication::translate("VBoxGlobal", "Name"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_OS:       strResult = QApplication::translate("VBoxGlobal", "OS"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_Location: strResult = QApplication::translate("VBoxGlobal", "Location"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_Groups:   strResult = QApplication::translate("VBoxGlobal", "Groups"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_Name:     strResult = QApplication::translate("UICommon", "Name"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_OS:       strResult = QApplication::translate("UICommon", "OS"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_Location: strResult = QApplication::translate("UICommon", "Location"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_Groups:   strResult = QApplication::translate("UICommon", "Groups"); break;
         default:
         {
@@ -926,11 +926,11 @@
     switch (enmDetailsElementOptionTypeSystem)
     {
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_RAM:             strResult = QApplication::translate("VBoxGlobal", "RAM"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_CPUCount:        strResult = QApplication::translate("VBoxGlobal", "CPU Count"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_CPUExecutionCap: strResult = QApplication::translate("VBoxGlobal", "CPU Execution Cap"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_BootOrder:       strResult = QApplication::translate("VBoxGlobal", "Boot Order"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_ChipsetType:     strResult = QApplication::translate("VBoxGlobal", "Chipset Type"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_Firmware:        strResult = QApplication::translate("VBoxGlobal", "Firmware"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_Acceleration:    strResult = QApplication::translate("VBoxGlobal", "Acceleration"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_RAM:             strResult = QApplication::translate("UICommon", "RAM"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_CPUCount:        strResult = QApplication::translate("UICommon", "CPU Count"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_CPUExecutionCap: strResult = QApplication::translate("UICommon", "CPU Execution Cap"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_BootOrder:       strResult = QApplication::translate("UICommon", "Boot Order"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_ChipsetType:     strResult = QApplication::translate("UICommon", "Chipset Type"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_Firmware:        strResult = QApplication::translate("UICommon", "Firmware"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_Acceleration:    strResult = QApplication::translate("UICommon", "Acceleration"); break;
         default:
         {
@@ -990,11 +990,11 @@
     switch (enmDetailsElementOptionTypeDisplay)
     {
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_VRAM:               strResult = QApplication::translate("VBoxGlobal", "VRAM"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_ScreenCount:        strResult = QApplication::translate("VBoxGlobal", "Screen Count"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_ScaleFactor:        strResult = QApplication::translate("VBoxGlobal", "Scale Factor"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_GraphicsController: strResult = QApplication::translate("VBoxGlobal", "Graphics Controller"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_Acceleration:       strResult = QApplication::translate("VBoxGlobal", "Acceleration"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_VRDE:               strResult = QApplication::translate("VBoxGlobal", "VRDE"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_Recording:          strResult = QApplication::translate("VBoxGlobal", "Recording"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_VRAM:               strResult = QApplication::translate("UICommon", "VRAM"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_ScreenCount:        strResult = QApplication::translate("UICommon", "Screen Count"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_ScaleFactor:        strResult = QApplication::translate("UICommon", "Scale Factor"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_GraphicsController: strResult = QApplication::translate("UICommon", "Graphics Controller"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_Acceleration:       strResult = QApplication::translate("UICommon", "Acceleration"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_VRDE:               strResult = QApplication::translate("UICommon", "VRDE"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeDisplay_Recording:          strResult = QApplication::translate("UICommon", "Recording"); break;
         default:
         {
@@ -1054,7 +1054,7 @@
     switch (enmDetailsElementOptionTypeStorage)
     {
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeStorage_HardDisks:      strResult = QApplication::translate("VBoxGlobal", "Hard Disks"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeStorage_OpticalDevices: strResult = QApplication::translate("VBoxGlobal", "Optical Devices"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeStorage_FloppyDevices:  strResult = QApplication::translate("VBoxGlobal", "Floppy Devices"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeStorage_HardDisks:      strResult = QApplication::translate("UICommon", "Hard Disks"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeStorage_OpticalDevices: strResult = QApplication::translate("UICommon", "Optical Devices"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeStorage_FloppyDevices:  strResult = QApplication::translate("UICommon", "Floppy Devices"); break;
         default:
         {
@@ -1106,7 +1106,7 @@
     switch (enmDetailsElementOptionTypeAudio)
     {
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeAudio_Driver:     strResult = QApplication::translate("VBoxGlobal", "Driver"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeAudio_Controller: strResult = QApplication::translate("VBoxGlobal", "Controller"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeAudio_IO:         strResult = QApplication::translate("VBoxGlobal", "Input/Output"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeAudio_Driver:     strResult = QApplication::translate("UICommon", "Driver"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeAudio_Controller: strResult = QApplication::translate("UICommon", "Controller"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeAudio_IO:         strResult = QApplication::translate("UICommon", "Input/Output"); break;
         default:
         {
@@ -1158,11 +1158,11 @@
     switch (enmDetailsElementOptionTypeNetwork)
     {
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_NotAttached:     strResult = QApplication::translate("VBoxGlobal", "Not Attached", "network adapter"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_NAT:             strResult = QApplication::translate("VBoxGlobal", "NAT"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_BridgetAdapter:  strResult = QApplication::translate("VBoxGlobal", "Bridget Adapter"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_InternalNetwork: strResult = QApplication::translate("VBoxGlobal", "Internal Network"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_HostOnlyAdapter: strResult = QApplication::translate("VBoxGlobal", "Host Only Adapter"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_GenericDriver:   strResult = QApplication::translate("VBoxGlobal", "Generic Driver"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_NATNetwork:      strResult = QApplication::translate("VBoxGlobal", "NAT Network"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_NotAttached:     strResult = QApplication::translate("UICommon", "Not Attached", "network adapter"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_NAT:             strResult = QApplication::translate("UICommon", "NAT"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_BridgetAdapter:  strResult = QApplication::translate("UICommon", "Bridget Adapter"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_InternalNetwork: strResult = QApplication::translate("UICommon", "Internal Network"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_HostOnlyAdapter: strResult = QApplication::translate("UICommon", "Host Only Adapter"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_GenericDriver:   strResult = QApplication::translate("UICommon", "Generic Driver"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeNetwork_NATNetwork:      strResult = QApplication::translate("UICommon", "NAT Network"); break;
         default:
         {
@@ -1222,9 +1222,9 @@
     switch (enmDetailsElementOptionTypeSerial)
     {
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeSerial_Disconnected: strResult = QApplication::translate("VBoxGlobal", "Disconnected", "serial port"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeSerial_HostPipe:     strResult = QApplication::translate("VBoxGlobal", "Host Pipe"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeSerial_HostDevice:   strResult = QApplication::translate("VBoxGlobal", "Host Device"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeSerial_RawFile:      strResult = QApplication::translate("VBoxGlobal", "Raw File"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeSerial_TCP:          strResult = QApplication::translate("VBoxGlobal", "TCP"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeSerial_Disconnected: strResult = QApplication::translate("UICommon", "Disconnected", "serial port"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeSerial_HostPipe:     strResult = QApplication::translate("UICommon", "Host Pipe"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeSerial_HostDevice:   strResult = QApplication::translate("UICommon", "Host Device"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeSerial_RawFile:      strResult = QApplication::translate("UICommon", "Raw File"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeSerial_TCP:          strResult = QApplication::translate("UICommon", "TCP"); break;
         default:
         {
@@ -1280,6 +1280,6 @@
     switch (enmDetailsElementOptionTypeUsb)
     {
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeUsb_Controller:    strResult = QApplication::translate("VBoxGlobal", "Controller"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeUsb_DeviceFilters: strResult = QApplication::translate("VBoxGlobal", "Device Filters"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeUsb_Controller:    strResult = QApplication::translate("UICommon", "Controller"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeUsb_DeviceFilters: strResult = QApplication::translate("UICommon", "Device Filters"); break;
         default:
         {
@@ -1372,7 +1372,7 @@
     switch (enmDetailsElementOptionTypeUserInterface)
     {
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_MenuBar:     strResult = QApplication::translate("VBoxGlobal", "Menu Bar"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_StatusBar:   strResult = QApplication::translate("VBoxGlobal", "Status Bar"); break;
-        case UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_MiniToolbar: strResult = QApplication::translate("VBoxGlobal", "Mini Toolbar"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_MenuBar:     strResult = QApplication::translate("UICommon", "Menu Bar"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_StatusBar:   strResult = QApplication::translate("UICommon", "Status Bar"); break;
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_MiniToolbar: strResult = QApplication::translate("UICommon", "Mini Toolbar"); break;
         default:
         {
@@ -1547,16 +1547,16 @@
     switch (detailsElementType)
     {
-        case DetailsElementType_General:     strResult = QApplication::translate("VBoxGlobal", "General", "DetailsElementType"); break;
-        case DetailsElementType_Preview:     strResult = QApplication::translate("VBoxGlobal", "Preview", "DetailsElementType"); break;
-        case DetailsElementType_System:      strResult = QApplication::translate("VBoxGlobal", "System", "DetailsElementType"); break;
-        case DetailsElementType_Display:     strResult = QApplication::translate("VBoxGlobal", "Display", "DetailsElementType"); break;
-        case DetailsElementType_Storage:     strResult = QApplication::translate("VBoxGlobal", "Storage", "DetailsElementType"); break;
-        case DetailsElementType_Audio:       strResult = QApplication::translate("VBoxGlobal", "Audio", "DetailsElementType"); break;
-        case DetailsElementType_Network:     strResult = QApplication::translate("VBoxGlobal", "Network", "DetailsElementType"); break;
-        case DetailsElementType_Serial:      strResult = QApplication::translate("VBoxGlobal", "Serial ports", "DetailsElementType"); break;
-        case DetailsElementType_USB:         strResult = QApplication::translate("VBoxGlobal", "USB", "DetailsElementType"); break;
-        case DetailsElementType_SF:          strResult = QApplication::translate("VBoxGlobal", "Shared folders", "DetailsElementType"); break;
-        case DetailsElementType_UI:          strResult = QApplication::translate("VBoxGlobal", "User interface", "DetailsElementType"); break;
-        case DetailsElementType_Description: strResult = QApplication::translate("VBoxGlobal", "Description", "DetailsElementType"); break;
+        case DetailsElementType_General:     strResult = QApplication::translate("UICommon", "General", "DetailsElementType"); break;
+        case DetailsElementType_Preview:     strResult = QApplication::translate("UICommon", "Preview", "DetailsElementType"); break;
+        case DetailsElementType_System:      strResult = QApplication::translate("UICommon", "System", "DetailsElementType"); break;
+        case DetailsElementType_Display:     strResult = QApplication::translate("UICommon", "Display", "DetailsElementType"); break;
+        case DetailsElementType_Storage:     strResult = QApplication::translate("UICommon", "Storage", "DetailsElementType"); break;
+        case DetailsElementType_Audio:       strResult = QApplication::translate("UICommon", "Audio", "DetailsElementType"); break;
+        case DetailsElementType_Network:     strResult = QApplication::translate("UICommon", "Network", "DetailsElementType"); break;
+        case DetailsElementType_Serial:      strResult = QApplication::translate("UICommon", "Serial ports", "DetailsElementType"); break;
+        case DetailsElementType_USB:         strResult = QApplication::translate("UICommon", "USB", "DetailsElementType"); break;
+        case DetailsElementType_SF:          strResult = QApplication::translate("UICommon", "Shared folders", "DetailsElementType"); break;
+        case DetailsElementType_UI:          strResult = QApplication::translate("UICommon", "User interface", "DetailsElementType"); break;
+        case DetailsElementType_Description: strResult = QApplication::translate("UICommon", "Description", "DetailsElementType"); break;
         default:
         {
@@ -1574,16 +1574,16 @@
      * to search through the keys using 'case-insensitive' rule: */
     QStringList keys;                                                                      QList<DetailsElementType> values;
-    keys << QApplication::translate("VBoxGlobal", "General", "DetailsElementType");        values << DetailsElementType_General;
-    keys << QApplication::translate("VBoxGlobal", "Preview", "DetailsElementType");        values << DetailsElementType_Preview;
-    keys << QApplication::translate("VBoxGlobal", "System", "DetailsElementType");         values << DetailsElementType_System;
-    keys << QApplication::translate("VBoxGlobal", "Display", "DetailsElementType");        values << DetailsElementType_Display;
-    keys << QApplication::translate("VBoxGlobal", "Storage", "DetailsElementType");        values << DetailsElementType_Storage;
-    keys << QApplication::translate("VBoxGlobal", "Audio", "DetailsElementType");          values << DetailsElementType_Audio;
-    keys << QApplication::translate("VBoxGlobal", "Network", "DetailsElementType");        values << DetailsElementType_Network;
-    keys << QApplication::translate("VBoxGlobal", "Serial ports", "DetailsElementType");   values << DetailsElementType_Serial;
-    keys << QApplication::translate("VBoxGlobal", "USB", "DetailsElementType");            values << DetailsElementType_USB;
-    keys << QApplication::translate("VBoxGlobal", "Shared folders", "DetailsElementType"); values << DetailsElementType_SF;
-    keys << QApplication::translate("VBoxGlobal", "User interface", "DetailsElementType"); values << DetailsElementType_UI;
-    keys << QApplication::translate("VBoxGlobal", "Description", "DetailsElementType");    values << DetailsElementType_Description;
+    keys << QApplication::translate("UICommon", "General", "DetailsElementType");        values << DetailsElementType_General;
+    keys << QApplication::translate("UICommon", "Preview", "DetailsElementType");        values << DetailsElementType_Preview;
+    keys << QApplication::translate("UICommon", "System", "DetailsElementType");         values << DetailsElementType_System;
+    keys << QApplication::translate("UICommon", "Display", "DetailsElementType");        values << DetailsElementType_Display;
+    keys << QApplication::translate("UICommon", "Storage", "DetailsElementType");        values << DetailsElementType_Storage;
+    keys << QApplication::translate("UICommon", "Audio", "DetailsElementType");          values << DetailsElementType_Audio;
+    keys << QApplication::translate("UICommon", "Network", "DetailsElementType");        values << DetailsElementType_Network;
+    keys << QApplication::translate("UICommon", "Serial ports", "DetailsElementType");   values << DetailsElementType_Serial;
+    keys << QApplication::translate("UICommon", "USB", "DetailsElementType");            values << DetailsElementType_USB;
+    keys << QApplication::translate("UICommon", "Shared folders", "DetailsElementType"); values << DetailsElementType_SF;
+    keys << QApplication::translate("UICommon", "User interface", "DetailsElementType"); values << DetailsElementType_UI;
+    keys << QApplication::translate("UICommon", "Description", "DetailsElementType");    values << DetailsElementType_Description;
     /* Invalid type for unknown words: */
     if (!keys.contains(strDetailsElementType, Qt::CaseInsensitive))
@@ -2040,16 +2040,16 @@
     switch (indicatorType)
     {
-        case IndicatorType_HardDisks:     strResult = QApplication::translate("VBoxGlobal", "Hard Disks", "IndicatorType"); break;
-        case IndicatorType_OpticalDisks:  strResult = QApplication::translate("VBoxGlobal", "Optical Disks", "IndicatorType"); break;
-        case IndicatorType_FloppyDisks:   strResult = QApplication::translate("VBoxGlobal", "Floppy Disks", "IndicatorType"); break;
-        case IndicatorType_Audio:         strResult = QApplication::translate("VBoxGlobal", "Audio", "IndicatorType"); break;
-        case IndicatorType_Network:       strResult = QApplication::translate("VBoxGlobal", "Network", "IndicatorType"); break;
-        case IndicatorType_USB:           strResult = QApplication::translate("VBoxGlobal", "USB", "IndicatorType"); break;
-        case IndicatorType_SharedFolders: strResult = QApplication::translate("VBoxGlobal", "Shared Folders", "IndicatorType"); break;
-        case IndicatorType_Display:       strResult = QApplication::translate("VBoxGlobal", "Display", "IndicatorType"); break;
-        case IndicatorType_Recording:     strResult = QApplication::translate("VBoxGlobal", "Recording", "IndicatorType"); break;
-        case IndicatorType_Features:      strResult = QApplication::translate("VBoxGlobal", "Features", "IndicatorType"); break;
-        case IndicatorType_Mouse:         strResult = QApplication::translate("VBoxGlobal", "Mouse", "IndicatorType"); break;
-        case IndicatorType_Keyboard:      strResult = QApplication::translate("VBoxGlobal", "Keyboard", "IndicatorType"); break;
+        case IndicatorType_HardDisks:     strResult = QApplication::translate("UICommon", "Hard Disks", "IndicatorType"); break;
+        case IndicatorType_OpticalDisks:  strResult = QApplication::translate("UICommon", "Optical Disks", "IndicatorType"); break;
+        case IndicatorType_FloppyDisks:   strResult = QApplication::translate("UICommon", "Floppy Disks", "IndicatorType"); break;
+        case IndicatorType_Audio:         strResult = QApplication::translate("UICommon", "Audio", "IndicatorType"); break;
+        case IndicatorType_Network:       strResult = QApplication::translate("UICommon", "Network", "IndicatorType"); break;
+        case IndicatorType_USB:           strResult = QApplication::translate("UICommon", "USB", "IndicatorType"); break;
+        case IndicatorType_SharedFolders: strResult = QApplication::translate("UICommon", "Shared Folders", "IndicatorType"); break;
+        case IndicatorType_Display:       strResult = QApplication::translate("UICommon", "Display", "IndicatorType"); break;
+        case IndicatorType_Recording:     strResult = QApplication::translate("UICommon", "Recording", "IndicatorType"); break;
+        case IndicatorType_Features:      strResult = QApplication::translate("UICommon", "Features", "IndicatorType"); break;
+        case IndicatorType_Mouse:         strResult = QApplication::translate("UICommon", "Mouse", "IndicatorType"); break;
+        case IndicatorType_Keyboard:      strResult = QApplication::translate("UICommon", "Keyboard", "IndicatorType"); break;
         default:
         {
@@ -2259,19 +2259,19 @@
     switch (informationElementType)
     {
-        case InformationElementType_General:           strResult = QApplication::translate("VBoxGlobal", "General", "InformationElementType"); break;
-        case InformationElementType_Preview:           strResult = QApplication::translate("VBoxGlobal", "Preview", "InformationElementType"); break;
-        case InformationElementType_System:            strResult = QApplication::translate("VBoxGlobal", "System", "InformationElementType"); break;
-        case InformationElementType_Display:           strResult = QApplication::translate("VBoxGlobal", "Display", "InformationElementType"); break;
-        case InformationElementType_Storage:           strResult = QApplication::translate("VBoxGlobal", "Storage", "InformationElementType"); break;
-        case InformationElementType_Audio:             strResult = QApplication::translate("VBoxGlobal", "Audio", "InformationElementType"); break;
-        case InformationElementType_Network:           strResult = QApplication::translate("VBoxGlobal", "Network", "InformationElementType"); break;
-        case InformationElementType_Serial:            strResult = QApplication::translate("VBoxGlobal", "Serial ports", "InformationElementType"); break;
-        case InformationElementType_USB:               strResult = QApplication::translate("VBoxGlobal", "USB", "InformationElementType"); break;
-        case InformationElementType_SharedFolders:     strResult = QApplication::translate("VBoxGlobal", "Shared folders", "InformationElementType"); break;
-        case InformationElementType_UI:                strResult = QApplication::translate("VBoxGlobal", "User interface", "InformationElementType"); break;
-        case InformationElementType_Description:       strResult = QApplication::translate("VBoxGlobal", "Description", "InformationElementType"); break;
-        case InformationElementType_RuntimeAttributes: strResult = QApplication::translate("VBoxGlobal", "Runtime attributes", "InformationElementType"); break;
-        case InformationElementType_StorageStatistics: strResult = QApplication::translate("VBoxGlobal", "Storage statistics", "InformationElementType"); break;
-        case InformationElementType_NetworkStatistics: strResult = QApplication::translate("VBoxGlobal", "Network statistics", "InformationElementType"); break;
+        case InformationElementType_General:           strResult = QApplication::translate("UICommon", "General", "InformationElementType"); break;
+        case InformationElementType_Preview:           strResult = QApplication::translate("UICommon", "Preview", "InformationElementType"); break;
+        case InformationElementType_System:            strResult = QApplication::translate("UICommon", "System", "InformationElementType"); break;
+        case InformationElementType_Display:           strResult = QApplication::translate("UICommon", "Display", "InformationElementType"); break;
+        case InformationElementType_Storage:           strResult = QApplication::translate("UICommon", "Storage", "InformationElementType"); break;
+        case InformationElementType_Audio:             strResult = QApplication::translate("UICommon", "Audio", "InformationElementType"); break;
+        case InformationElementType_Network:           strResult = QApplication::translate("UICommon", "Network", "InformationElementType"); break;
+        case InformationElementType_Serial:            strResult = QApplication::translate("UICommon", "Serial ports", "InformationElementType"); break;
+        case InformationElementType_USB:               strResult = QApplication::translate("UICommon", "USB", "InformationElementType"); break;
+        case InformationElementType_SharedFolders:     strResult = QApplication::translate("UICommon", "Shared folders", "InformationElementType"); break;
+        case InformationElementType_UI:                strResult = QApplication::translate("UICommon", "User interface", "InformationElementType"); break;
+        case InformationElementType_Description:       strResult = QApplication::translate("UICommon", "Description", "InformationElementType"); break;
+        case InformationElementType_RuntimeAttributes: strResult = QApplication::translate("UICommon", "Runtime attributes", "InformationElementType"); break;
+        case InformationElementType_StorageStatistics: strResult = QApplication::translate("UICommon", "Storage statistics", "InformationElementType"); break;
+        case InformationElementType_NetworkStatistics: strResult = QApplication::translate("UICommon", "Network statistics", "InformationElementType"); break;
         default:
         {
@@ -2289,19 +2289,19 @@
      * to search through the keys using 'case-insensitive' rule: */
     QStringList keys;                                                                              QList<InformationElementType> values;
-    keys << QApplication::translate("VBoxGlobal", "General", "InformationElementType");            values << InformationElementType_General;
-    keys << QApplication::translate("VBoxGlobal", "Preview", "InformationElementType");            values << InformationElementType_Preview;
-    keys << QApplication::translate("VBoxGlobal", "System", "InformationElementType");             values << InformationElementType_System;
-    keys << QApplication::translate("VBoxGlobal", "Display", "InformationElementType");            values << InformationElementType_Display;
-    keys << QApplication::translate("VBoxGlobal", "Storage", "InformationElementType");            values << InformationElementType_Storage;
-    keys << QApplication::translate("VBoxGlobal", "Audio", "InformationElementType");              values << InformationElementType_Audio;
-    keys << QApplication::translate("VBoxGlobal", "Network", "InformationElementType");            values << InformationElementType_Network;
-    keys << QApplication::translate("VBoxGlobal", "Serial ports", "InformationElementType");       values << InformationElementType_Serial;
-    keys << QApplication::translate("VBoxGlobal", "USB", "InformationElementType");                values << InformationElementType_USB;
-    keys << QApplication::translate("VBoxGlobal", "Shared folders", "InformationElementType");     values << InformationElementType_SharedFolders;
-    keys << QApplication::translate("VBoxGlobal", "User interface", "InformationElementType");     values << InformationElementType_UI;
-    keys << QApplication::translate("VBoxGlobal", "Description", "InformationElementType");        values << InformationElementType_Description;
-    keys << QApplication::translate("VBoxGlobal", "Runtime attributes", "InformationElementType"); values << InformationElementType_RuntimeAttributes;
-    keys << QApplication::translate("VBoxGlobal", "Storage statistics", "InformationElementType"); values << InformationElementType_StorageStatistics;
-    keys << QApplication::translate("VBoxGlobal", "Network statistics", "InformationElementType"); values << InformationElementType_NetworkStatistics;
+    keys << QApplication::translate("UICommon", "General", "InformationElementType");            values << InformationElementType_General;
+    keys << QApplication::translate("UICommon", "Preview", "InformationElementType");            values << InformationElementType_Preview;
+    keys << QApplication::translate("UICommon", "System", "InformationElementType");             values << InformationElementType_System;
+    keys << QApplication::translate("UICommon", "Display", "InformationElementType");            values << InformationElementType_Display;
+    keys << QApplication::translate("UICommon", "Storage", "InformationElementType");            values << InformationElementType_Storage;
+    keys << QApplication::translate("UICommon", "Audio", "InformationElementType");              values << InformationElementType_Audio;
+    keys << QApplication::translate("UICommon", "Network", "InformationElementType");            values << InformationElementType_Network;
+    keys << QApplication::translate("UICommon", "Serial ports", "InformationElementType");       values << InformationElementType_Serial;
+    keys << QApplication::translate("UICommon", "USB", "InformationElementType");                values << InformationElementType_USB;
+    keys << QApplication::translate("UICommon", "Shared folders", "InformationElementType");     values << InformationElementType_SharedFolders;
+    keys << QApplication::translate("UICommon", "User interface", "InformationElementType");     values << InformationElementType_UI;
+    keys << QApplication::translate("UICommon", "Description", "InformationElementType");        values << InformationElementType_Description;
+    keys << QApplication::translate("UICommon", "Runtime attributes", "InformationElementType"); values << InformationElementType_RuntimeAttributes;
+    keys << QApplication::translate("UICommon", "Storage statistics", "InformationElementType"); values << InformationElementType_StorageStatistics;
+    keys << QApplication::translate("UICommon", "Network statistics", "InformationElementType"); values << InformationElementType_NetworkStatistics;
     /* Invalid type for unknown words: */
     if (!keys.contains(strInformationElementType, Qt::CaseInsensitive))
@@ -2437,10 +2437,10 @@
     switch (enmUIMediumFormat)
     {
-        case UIMediumFormat_VDI:       strResult = QApplication::translate("VBoxGlobal", "VDI (VirtualBox Disk Image)", "UIMediumFormat"); break;
-        case UIMediumFormat_VMDK:      strResult = QApplication::translate("VBoxGlobal", "VMDK (Virtual Machine Disk)", "UIMediumFormat"); break;
-        case UIMediumFormat_VHD:       strResult = QApplication::translate("VBoxGlobal", "VHD (Virtual Hard Disk)", "UIMediumFormat"); break;
-        case UIMediumFormat_Parallels: strResult = QApplication::translate("VBoxGlobal", "HDD (Parallels Hard Disk)", "UIMediumFormat"); break;
-        case UIMediumFormat_QED:       strResult = QApplication::translate("VBoxGlobal", "QED (QEMU enhanced disk)", "UIMediumFormat"); break;
-        case UIMediumFormat_QCOW:      strResult = QApplication::translate("VBoxGlobal", "QCOW (QEMU Copy-On-Write)", "UIMediumFormat"); break;
+        case UIMediumFormat_VDI:       strResult = QApplication::translate("UICommon", "VDI (VirtualBox Disk Image)", "UIMediumFormat"); break;
+        case UIMediumFormat_VMDK:      strResult = QApplication::translate("UICommon", "VMDK (Virtual Machine Disk)", "UIMediumFormat"); break;
+        case UIMediumFormat_VHD:       strResult = QApplication::translate("UICommon", "VHD (Virtual Hard Disk)", "UIMediumFormat"); break;
+        case UIMediumFormat_Parallels: strResult = QApplication::translate("UICommon", "HDD (Parallels Hard Disk)", "UIMediumFormat"); break;
+        case UIMediumFormat_QED:       strResult = QApplication::translate("UICommon", "QED (QEMU enhanced disk)", "UIMediumFormat"); break;
+        case UIMediumFormat_QCOW:      strResult = QApplication::translate("UICommon", "QCOW (QEMU Copy-On-Write)", "UIMediumFormat"); break;
         default:
         {
@@ -2498,7 +2498,7 @@
     switch (enmRecordingMode)
     {
-        case UISettingsDefs::RecordingMode_VideoAudio: strResult = QApplication::translate("VBoxGlobal", "Video/Audio", "UISettingsDefs::RecordingMode"); break;
-        case UISettingsDefs::RecordingMode_VideoOnly:  strResult = QApplication::translate("VBoxGlobal", "Video Only",  "UISettingsDefs::RecordingMode"); break;
-        case UISettingsDefs::RecordingMode_AudioOnly:  strResult = QApplication::translate("VBoxGlobal", "Audio Only",  "UISettingsDefs::RecordingMode"); break;
+        case UISettingsDefs::RecordingMode_VideoAudio: strResult = QApplication::translate("UICommon", "Video/Audio", "UISettingsDefs::RecordingMode"); break;
+        case UISettingsDefs::RecordingMode_VideoOnly:  strResult = QApplication::translate("UICommon", "Video Only",  "UISettingsDefs::RecordingMode"); break;
+        case UISettingsDefs::RecordingMode_AudioOnly:  strResult = QApplication::translate("UICommon", "Audio Only",  "UISettingsDefs::RecordingMode"); break;
         default:
         {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIDialog.cpp	(revision 79365)
@@ -21,5 +21,5 @@
 /* GUI includes: */
 #include "QIDialog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 
@@ -124,4 +124,4 @@
 
     /* Explicit centering according to our parent: */
-    VBoxGlobal::centerWidget(this, parentWidget(), false);
+    UICommon::centerWidget(this, parentWidget(), false);
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainDialog.cpp	(revision 79365)
@@ -29,5 +29,5 @@
 /* GUI includes: */
 #include "QIMainDialog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "VBoxUtils.h"
 
@@ -233,5 +233,5 @@
     /* Explicit centering according to our parent: */
     if (m_fIsAutoCentering)
-        VBoxGlobal::centerWidget(this, parentWidget(), false);
+        UICommon::centerWidget(this, parentWidget(), false);
 
     /* Mark dialog as polished: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainWindow.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainWindow.cpp	(revision 79365)
@@ -19,5 +19,5 @@
 #include "QIMainWindow.h"
 #ifdef VBOX_WS_X11
-# include "VBoxGlobal.h"
+# include "UICommon.h"
 #endif
 
@@ -36,5 +36,5 @@
 #elif defined(VBOX_WS_X11)
     /* Use the new approach for X11: */
-    VBoxGlobal::setTopLevelGeometry(this, m_geometry);
+    UICommon::setTopLevelGeometry(this, m_geometry);
 #endif /* VBOX_WS_X11 */
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIManagerDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIManagerDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIManagerDialog.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 #include "QIDialogButtonBox.h"
 #include "QIManagerDialog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDesktopWidgetWatchdog.h"
 #ifdef VBOX_WS_MAC
@@ -104,5 +104,5 @@
 
     /* Center according requested widget: */
-    VBoxGlobal::centerWidget(this, pCenterWidget, false);
+    UICommon::centerWidget(this, pCenterWidget, false);
 
     /* Load the dialog's settings from extradata */
@@ -240,5 +240,5 @@
 #else /* VBOX_WS_MAC */
     /* Use the new approach for Windows/X11: */
-    VBoxGlobal::setTopLevelGeometry(this, geometry);
+    UICommon::setTopLevelGeometry(this, geometry);
 #endif /* !VBOX_WS_MAC */
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QISplitter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QISplitter.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QISplitter.cpp	(revision 79365)
@@ -24,5 +24,5 @@
 /* GUI includes: */
 #include "QISplitter.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 
@@ -325,5 +325,5 @@
                             {
                                 m_fHandleGrabbed = true;
-                                VBoxGlobal::setCursor(this, Qt::SplitHCursor);
+                                UICommon::setCursor(this, Qt::SplitHCursor);
                                 qApp->postEvent(pHandle, new QMouseEvent(newME));
                                 return true;
@@ -337,5 +337,5 @@
                                     && pMouseEvent->buttons().testFlag(Qt::LeftButton)))
                             {
-                                VBoxGlobal::setCursor(this, Qt::SplitHCursor);
+                                UICommon::setCursor(this, Qt::SplitHCursor);
                                 qApp->postEvent(pHandle, new QMouseEvent(newME));
                                 return true;
@@ -345,5 +345,5 @@
                                 /* If not, reset the state. */
                                 m_fHandleGrabbed = false;
-                                VBoxGlobal::setCursor(this, Qt::ArrowCursor);
+                                UICommon::setCursor(this, Qt::ArrowCursor);
                             }
                         }
@@ -356,5 +356,5 @@
             {
                 m_fHandleGrabbed = false;
-                VBoxGlobal::setCursor(this, Qt::ArrowCursor);
+                UICommon::setCursor(this, Qt::ArrowCursor);
                 break;
             }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 79365)
@@ -40,5 +40,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPool.h"
 #include "UIConverter.h"
@@ -163,5 +163,5 @@
 
     /* Get VirtualBox: */
-    const CVirtualBox comVBox = vboxGlobal().virtualBox();
+    const CVirtualBox comVBox = uiCommon().virtualBox();
     AssertWrapperOk(comVBox);
     /* Get VirtualBox event source: */
@@ -214,9 +214,9 @@
 
     /* Make sure VBoxSVC is available: */
-    if (!vboxGlobal().isVBoxSVCAvailable())
+    if (!uiCommon().isVBoxSVCAvailable())
         return;
 
     /* Get VirtualBox: */
-    const CVirtualBox comVBox = vboxGlobal().virtualBox();
+    const CVirtualBox comVBox = uiCommon().virtualBox();
     AssertWrapperOk(comVBox);
     /* Get VirtualBox event source: */
@@ -416,5 +416,5 @@
     /* If proper machine ID passed => return corresponding pixmap/size: */
     if (index.data(Field_ID).toUuid() != UIExtraDataManager::GlobalID)
-        pixmap = vboxGlobal().vmGuestOSTypePixmapDefault(index.data(Field_OsTypeID).toString(), &pixmapSize);
+        pixmap = uiCommon().vmGuestOSTypePixmapDefault(index.data(Field_OsTypeID).toString(), &pixmapSize);
     else
     {
@@ -740,5 +740,5 @@
     activateWindow();
 //    /* Center according passed widget: */
-//    VBoxGlobal::centerWidget(this, pCenterWidget, false);
+//    UICommon::centerWidget(this, pCenterWidget, false);
 }
 
@@ -754,5 +754,5 @@
 
         /* Get machine items: */
-        const CMachineVector machines = vboxGlobal().virtualBox().GetMachines();
+        const CMachineVector machines = uiCommon().virtualBox().GetMachines();
         /* Look for the proper place to insert new machine item: */
         QUuid uPositionID = UIExtraDataManager::GlobalID;
@@ -1173,5 +1173,5 @@
 
     /* Compose initial file-name: */
-    const QString strInitialFileName = QDir(vboxGlobal().homeFolder()).absoluteFilePath(QString("%1_ExtraData.xml").arg(currentChooserName()));
+    const QString strInitialFileName = QDir(uiCommon().homeFolder()).absoluteFilePath(QString("%1_ExtraData.xml").arg(currentChooserName()));
     /* Open file-save dialog to choose file to save extra-data into: */
     const QString strFileName = QIFileDialog::getSaveFileName(strInitialFileName, "XML files (*.xml)", this,
@@ -1260,5 +1260,5 @@
 
     /* Compose initial file-name: */
-    const QString strInitialFileName = QDir(vboxGlobal().homeFolder()).absoluteFilePath(QString("%1_ExtraData.xml").arg(currentChooserName()));
+    const QString strInitialFileName = QDir(uiCommon().homeFolder()).absoluteFilePath(QString("%1_ExtraData.xml").arg(currentChooserName()));
     /* Open file-open dialog to choose file to open extra-data into: */
     const QString strFileName = QIFileDialog::getOpenFileName(strInitialFileName, "XML files (*.xml)", this,
@@ -1585,5 +1585,5 @@
                     addChooserItemByID(UIExtraDataManager::GlobalID);
                     /* Add machine chooser items into source-model: */
-                    CMachineVector machines = vboxGlobal().virtualBox().GetMachines();
+                    CMachineVector machines = uiCommon().virtualBox().GetMachines();
                     foreach (const CMachine &machine, machines)
                         addChooserItemByMachine(machine);
@@ -1862,5 +1862,5 @@
 
     /* Search for the corresponding machine by ID: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
     const CMachine machine = vbox.FindMachine(uID.toString());
     /* Make sure VM is accessible: */
@@ -2091,5 +2091,5 @@
 
     /* Search for corresponding machine: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
     CMachine machine = vbox.FindMachine(uID.toString());
     AssertReturnVoid(vbox.isOk() && !machine.isNull());
@@ -2135,5 +2135,5 @@
 {
     /* Make sure VBoxSVC is available: */
-    if (!vboxGlobal().isVBoxSVCAvailable())
+    if (!uiCommon().isVBoxSVCAvailable())
         return;
 
@@ -2152,5 +2152,5 @@
     {
         /* Get global object: */
-        CVirtualBox comVBox = vboxGlobal().virtualBox();
+        CVirtualBox comVBox = uiCommon().virtualBox();
         /* Update global extra-data: */
         comVBox.SetExtraData(strKey, strValue);
@@ -2172,5 +2172,5 @@
     {
         /* Search for corresponding machine: */
-        CVirtualBox comVBox = vboxGlobal().virtualBox();
+        CVirtualBox comVBox = uiCommon().virtualBox();
         const CMachine comMachine = comVBox.FindMachine(uID.toString());
         AssertReturnVoid(comVBox.isOk() && !comMachine.isNull());
@@ -2182,7 +2182,7 @@
         CSession comSession;
         if (enmLevel == ConfigurationAccessLevel_Full)
-            comSession = vboxGlobal().openSession(uID);
+            comSession = uiCommon().openSession(uID);
         else
-            comSession = vboxGlobal().openExistingSession(uID);
+            comSession = uiCommon().openExistingSession(uID);
         AssertReturnVoid(!comSession.isNull());
         /* Get machine from that session: */
@@ -2232,5 +2232,5 @@
 {
     /* Make sure VBoxSVC is available: */
-    if (!vboxGlobal().isVBoxSVCAvailable())
+    if (!uiCommon().isVBoxSVCAvailable())
         return;
 
@@ -2249,5 +2249,5 @@
     {
         /* Get global object: */
-        CVirtualBox comVBox = vboxGlobal().virtualBox();
+        CVirtualBox comVBox = uiCommon().virtualBox();
         /* Update global extra-data: */
         comVBox.SetExtraDataStringList(strKey, value);
@@ -2269,5 +2269,5 @@
     {
         /* Search for corresponding machine: */
-        CVirtualBox comVBox = vboxGlobal().virtualBox();
+        CVirtualBox comVBox = uiCommon().virtualBox();
         const CMachine comMachine = comVBox.FindMachine(uID.toString());
         AssertReturnVoid(comVBox.isOk() && !comMachine.isNull());
@@ -2279,7 +2279,7 @@
         CSession comSession;
         if (enmLevel == ConfigurationAccessLevel_Full)
-            comSession = vboxGlobal().openSession(uID);
+            comSession = uiCommon().openSession(uID);
         else
-            comSession = vboxGlobal().openExistingSession(uID);
+            comSession = uiCommon().openExistingSession(uID);
         AssertReturnVoid(!comSession.isNull());
         /* Get machine from that session: */
@@ -2747,5 +2747,5 @@
     /* Make sure resulting geometry is within current bounds: */
     if (fOk && !availableGeometry.contains(geometry))
-        geometry = VBoxGlobal::getNormalized(geometry, QRegion(availableGeometry));
+        geometry = UICommon::getNormalized(geometry, QRegion(availableGeometry));
 #endif /* VBOX_WS_WIN */
 
@@ -4197,5 +4197,5 @@
     /* Make sure resulting geometry is within current bounds: */
     if (fOk && !availableGeometry.contains(geometry))
-        geometry = VBoxGlobal::getNormalized(geometry, QRegion(availableGeometry));
+        geometry = UICommon::getNormalized(geometry, QRegion(availableGeometry));
 #endif /* VBOX_WS_WIN */
 
@@ -4514,5 +4514,5 @@
     /* Make sure resulting geometry is within current bounds: */
     if (fOk && !availableGeometry.contains(geometry))
-        geometry = VBoxGlobal::getNormalized(geometry, QRegion(availableGeometry));
+        geometry = UICommon::getNormalized(geometry, QRegion(availableGeometry));
 #endif /* VBOX_WS_WIN */
 
@@ -4631,5 +4631,5 @@
     /* Make sure resulting geometry is within current bounds: */
     if (!availableGeometry.contains(geometry))
-        geometry = VBoxGlobal::getNormalized(geometry, QRegion(availableGeometry));
+        geometry = UICommon::getNormalized(geometry, QRegion(availableGeometry));
 #endif /* VBOX_WS_WIN */
 
@@ -4779,6 +4779,6 @@
     {
         /* Current VM only: */
-        if (   vboxGlobal().uiType() == VBoxGlobal::UIType_RuntimeUI
-            && uMachineID == vboxGlobal().managedVMUuid())
+        if (   uiCommon().uiType() == UICommon::UIType_RuntimeUI
+            && uMachineID == uiCommon().managedVMUuid())
         {
             /* HID LEDs sync state changed (allowed if not restricted)? */
@@ -4843,5 +4843,5 @@
 {
     /* Get CVirtualBox: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
 
     /* Make sure at least empty map is created: */
@@ -5031,5 +5031,5 @@
     /* Make sure resulting geometry is within current bounds: */
     if (!availableGeometry.contains(geometry))
-        geometry = VBoxGlobal::getNormalized(geometry, QRegion(availableGeometry));
+        geometry = UICommon::getNormalized(geometry, QRegion(availableGeometry));
 #endif /* VBOX_WS_WIN */
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp	(revision 79365)
@@ -21,5 +21,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPool.h"
 #include "UIActionPoolManager.h"
@@ -188,5 +188,5 @@
         case UIActionPoolType_Manager: return name();
         /* Filtered name for Runtime UI: */
-        case UIActionPoolType_Runtime: return VBoxGlobal::removeAccelMark(name());
+        case UIActionPoolType_Runtime: return UICommon::removeAccelMark(name());
     }
     /* Nothing by default: */
@@ -214,5 +214,5 @@
         {
             if (machineMenuAction())
-                setText(vboxGlobal().insertKeyToActionText(nameInMenu(),
+                setText(uiCommon().insertKeyToActionText(nameInMenu(),
                                                            gShortcutPool->shortcut(actionPool(), this).toString()));
             else
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp	(revision 79365)
@@ -17,5 +17,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPoolManager.h"
 #include "UIExtraDataManager.h"
@@ -2994,5 +2994,5 @@
 
     /* Check if Ext Pack is ready, some of actions my depend on it: */
-    CExtPack extPack = vboxGlobal().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
+    CExtPack extPack = uiCommon().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
     const bool fExtPackAccessible = !extPack.isNull() && extPack.GetUsable();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.cpp	(revision 79365)
@@ -17,5 +17,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPoolRuntime.h"
 #include "UIConverter.h"
@@ -3241,5 +3241,5 @@
 {
     /* Skip unrelated machine IDs: */
-    if (vboxGlobal().managedVMUuid() != uMachineID)
+    if (uiCommon().managedVMUuid() != uMachineID)
         return;
 
@@ -3343,5 +3343,5 @@
     const double dScaleFactor = pAction->property("Requested Scale Factor").toDouble();
     const int iGuestScreenIndex = pAction->property("Guest Screen Index").toInt();
-    gEDataManager->setScaleFactor(dScaleFactor, vboxGlobal().managedVMUuid(), iGuestScreenIndex);
+    gEDataManager->setScaleFactor(dScaleFactor, uiCommon().managedVMUuid(), iGuestScreenIndex);
 }
 
@@ -3481,5 +3481,5 @@
 {
     /* Get machine ID: */
-    const QUuid uMachineID = vboxGlobal().managedVMUuid();
+    const QUuid uMachineID = uiCommon().managedVMUuid();
     if (uMachineID.isNull())
         return;
@@ -3546,5 +3546,5 @@
     /* Recache extension-pack related action restrictions: */
 #if VBOX_WITH_EXTPACK
-    CExtPack extPack = vboxGlobal().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
+    CExtPack extPack = uiCommon().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
 #else
     CExtPack extPack;
@@ -3559,5 +3559,5 @@
     /* Recache close related action restrictions: */
     MachineCloseAction restrictedCloseActions = gEDataManager->restrictedMachineCloseActions(uMachineID);
-    bool fAllCloseActionsRestricted =    (!vboxGlobal().isSeparateProcess() || (restrictedCloseActions & MachineCloseAction_Detach))
+    bool fAllCloseActionsRestricted =    (!uiCommon().isSeparateProcess() || (restrictedCloseActions & MachineCloseAction_Detach))
                                       && (restrictedCloseActions & MachineCloseAction_SaveState)
                                       && (restrictedCloseActions & MachineCloseAction_Shutdown)
@@ -3619,5 +3619,5 @@
 #ifdef VBOX_WITH_DEBUGGER_GUI
     /* 'Debug' menu: */
-    addMenu(m_mainMenus, action(UIActionIndexRT_M_Debug), vboxGlobal().isDebuggerEnabled());
+    addMenu(m_mainMenus, action(UIActionIndexRT_M_Debug), uiCommon().isDebuggerEnabled());
     updateMenuDebug();
 #endif
@@ -4009,5 +4009,5 @@
     /* Get corresponding screen index and scale-factor: */
     const int iGuestScreenIndex = pMenu->property("Guest Screen Index").toInt();
-    const double dCurrentScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid(), iGuestScreenIndex);
+    const double dCurrentScaleFactor = gEDataManager->scaleFactor(uiCommon().managedVMUuid(), iGuestScreenIndex);
 
     /* Create exclusive 'rescale' action-group: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp	(revision 79365)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp	(revision 79365)
@@ -0,0 +1,4816 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UICommon class implementation.
+ */
+
+/*
+ * Copyright (C) 2006-2019 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.
+ */
+
+/* Qt includes: */
+#include <QDesktopServices>
+#include <QDir>
+#include <QFileDialog>
+#include <QGraphicsWidget>
+#include <QLocale>
+#include <QMenu>
+#include <QMutex>
+#include <QPainter>
+#include <QProcess>
+#include <QSpinBox>
+#include <QStandardPaths>
+#include <QThread>
+#include <QTimer>
+#include <QToolButton>
+#include <QToolTip>
+#include <QTranslator>
+#include <QLibraryInfo>
+#include <QProgressDialog>
+#include <QSettings>
+#include <QStyleOptionSpinBox>
+#include <QSessionManager>
+#ifdef VBOX_WS_WIN
+# include <QEventLoop>
+#endif /* VBOX_WS_WIN */
+#ifdef VBOX_WS_X11
+# include <QScrollBar>
+# include <QTextBrowser>
+# include <QX11Info>
+#endif /* VBOX_WS_X11 */
+#ifdef VBOX_GUI_WITH_PIDFILE
+# include <QTextStream>
+#endif /* VBOX_GUI_WITH_PIDFILE */
+#ifdef VBOX_WS_X11
+# include <QScreen>
+#endif
+
+/* GUI includes: */
+#include "UICommon.h"
+#include "VBoxLicenseViewer.h"
+#include "UIMessageCenter.h"
+#include "UIPopupCenter.h"
+#include "QIMessageBox.h"
+#include "QIDialogButtonBox.h"
+#include "UIFDCreationDialog.h"
+#include "UIIconPool.h"
+#include "UIThreadPool.h"
+#include "UIShortcutPool.h"
+#include "UIExtraDataManager.h"
+#include "QIFileDialog.h"
+#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
+# include "UINetworkManager.h"
+# include "UIUpdateManager.h"
+#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
+#include "UIConverter.h"
+#include "UIMediumEnumerator.h"
+#include "UIMedium.h"
+#include "UIMediumSelector.h"
+#include "UIModalWindowManager.h"
+#include "UIIconPool.h"
+#include "UIVirtualBoxEventHandler.h"
+#include "UIDesktopWidgetWatchdog.h"
+#include "UIVisoCreator.h"
+#include "UIWizardNewVD.h"
+#ifdef VBOX_WS_X11
+# include "UIHostComboEditor.h"
+# include "VBoxX11Helper.h"
+#endif
+#ifdef VBOX_WS_MAC
+# include "VBoxUtils-darwin.h"
+# include "UIMachineWindowFullscreen.h"
+# include "UIMachineWindowSeamless.h"
+#endif /* VBOX_WS_MAC */
+
+/* COM includes: */
+#include "CAudioAdapter.h"
+#include "CBIOSSettings.h"
+#include "CConsole.h"
+#include "CExtPack.h"
+#include "CExtPackFile.h"
+#include "CExtPackManager.h"
+#include "CHostUSBDevice.h"
+#include "CHostVideoInputDevice.h"
+#include "CMachine.h"
+#include "CMediumAttachment.h"
+#include "CNetworkAdapter.h"
+#include "CSerialPort.h"
+#include "CSharedFolder.h"
+#include "CSnapshot.h"
+#include "CStorageController.h"
+#include "CSystemProperties.h"
+#include "CUSBController.h"
+#include "CUSBDevice.h"
+#include "CUSBDeviceFilter.h"
+#include "CUSBDeviceFilters.h"
+#include "CVRDEServer.h"
+
+/* Other VBox includes: */
+#include <iprt/asm.h>
+#include <iprt/ctype.h>
+#include <iprt/err.h>
+#include <iprt/env.h>
+#include <iprt/file.h>
+#include <iprt/getopt.h>
+#include <iprt/ldr.h>
+#include <iprt/param.h>
+#include <iprt/path.h>
+#include <iprt/system.h>
+#include <iprt/stream.h>
+#ifdef VBOX_WS_X11
+# include <iprt/mem.h>
+#endif /* VBOX_WS_X11 */
+#include <VBox/sup.h>
+#include <VBox/VBoxOGL.h>
+#include <VBox/vd.h>
+#include <VBox/com/Guid.h>
+
+/* VirtualBox interface declarations: */
+#include <VBox/com/VirtualBox.h>
+
+/* External includes: */
+#ifdef VBOX_WS_WIN
+# include <iprt/win/shlobj.h>
+#endif
+#ifdef VBOX_WS_X11
+# include <xcb/xcb.h>
+#endif
+
+/* External includes: */
+# include <math.h>
+#ifdef VBOX_WS_MAC
+# include <sys/utsname.h>
+#endif /* VBOX_WS_MAC */
+#ifdef VBOX_WS_X11
+// WORKAROUND:
+// typedef CARD8 BOOL in Xmd.h conflicts with #define BOOL PRBool
+// in COMDefs.h. A better fix would be to isolate X11-specific
+// stuff by placing XX* helpers below to a separate source file.
+# undef BOOL
+# include <X11/X.h>
+# include <X11/Xmd.h>
+# include <X11/Xlib.h>
+# include <X11/Xatom.h>
+# include <X11/Xutil.h>
+# include <X11/extensions/Xinerama.h>
+# define BOOL PRBool
+#endif /* VBOX_WS_X11 */
+
+//#define VBOX_WITH_FULL_DETAILS_REPORT /* hidden for now */
+
+/* Namespaces: */
+using namespace UIExtraDataDefs;
+using namespace UIMediumDefs;
+
+
+/** QTranslator subclass for VBox needs. */
+class VBoxTranslator : public QTranslator
+{
+public:
+
+    /** Constructs translator passing @a pParent to the base-class. */
+    VBoxTranslator(QObject *pParent = 0)
+        : QTranslator(pParent)
+    {}
+
+    /** Loads language file with gained @a strFileName. */
+    bool loadFile(const QString &strFileName)
+    {
+        QFile file(strFileName);
+        if (!file.open(QIODevice::ReadOnly))
+            return false;
+        m_data = file.readAll();
+        return load((uchar*)m_data.data(), m_data.size());
+    }
+
+private:
+
+    /** Holds the loaded data. */
+    QByteArray m_data;
+};
+
+/** Holds the static #VBoxTranslator instance. */
+static VBoxTranslator *sTranslator = 0;
+
+
+/** Port config cache. */
+struct PortConfig
+{
+    const char *name;
+    const ulong IRQ;
+    const ulong IOBase;
+};
+
+/** Known port config COM ports. */
+static const PortConfig kComKnownPorts[] =
+{
+    { "COM1", 4, 0x3F8 },
+    { "COM2", 3, 0x2F8 },
+    { "COM3", 4, 0x3E8 },
+    { "COM4", 3, 0x2E8 },
+    /* Must not contain an element with IRQ=0 and IOBase=0 used to cause
+     * toCOMPortName() to return the "User-defined" string for these values. */
+};
+
+/** Known port config LPT ports. */
+static const PortConfig kLptKnownPorts[] =
+{
+    { "LPT1", 7, 0x378 },
+    { "LPT2", 5, 0x278 },
+    { "LPT1", 2, 0x3BC },
+    /* Must not contain an element with IRQ=0 and IOBase=0 used to cause
+     * toLPTPortName() to return the "User-defined" string for these values. */
+};
+
+
+/* static */
+UICommon *UICommon::s_pInstance = 0;
+bool        UICommon::s_fCleaningUp = false;
+QString     UICommon::s_strLoadedLanguageId = vboxBuiltInLanguageName();
+QString     UICommon::s_strUserDefinedPortName = QString();
+
+/* static */
+void UICommon::create(UIType enmType)
+{
+    /* Make sure instance is NOT created yet: */
+    if (s_pInstance)
+    {
+        AssertMsgFailed(("UICommon instance is already created!"));
+        return;
+    }
+
+    /* Create instance: */
+    new UICommon(enmType);
+    /* Prepare instance: */
+    s_pInstance->prepare();
+}
+
+/* static */
+void UICommon::destroy()
+{
+    /* Make sure instance is NOT destroyed yet: */
+    if (!s_pInstance)
+    {
+        AssertMsgFailed(("UICommon instance is already destroyed!"));
+        return;
+    }
+
+    /* Cleanup instance:
+     * 1. By default, automatically on QApplication::aboutToQuit() signal.
+     * 2. But if QApplication was not started at all and we perform
+     *    early shutdown, we should do cleanup ourselves. */
+    if (s_pInstance->isValid())
+        s_pInstance->cleanup();
+    /* Destroy instance: */
+    delete s_pInstance;
+}
+
+UICommon::UICommon(UIType enmType)
+    : m_enmType(enmType)
+    , m_fValid(false)
+#ifdef VBOX_WS_MAC
+    , m_enmMacOSVersion(MacOSXRelease_Old)
+#endif
+#ifdef VBOX_WS_X11
+    , m_enmWindowManagerType(X11WMType_Unknown)
+    , m_fCompositingManagerRunning(false)
+#endif
+    , m_fSeparateProcess(false)
+    , m_fShowStartVMErrors(true)
+#if defined(DEBUG_bird)
+    , m_fAgressiveCaching(false)
+#else
+    , m_fAgressiveCaching(true)
+#endif
+    , m_fRestoreCurrentSnapshot(false)
+    , m_fDisablePatm(false)
+    , m_fDisableCsam(false)
+    , m_fRecompileSupervisor(false)
+    , m_fRecompileUser(false)
+    , m_fExecuteAllInIem(false)
+    , m_uWarpPct(100)
+#ifdef VBOX_WITH_DEBUGGER_GUI
+    , m_fDbgEnabled(0)
+    , m_fDbgAutoShow(0)
+    , m_fDbgAutoShowCommandLine(0)
+    , m_fDbgAutoShowStatistics(0)
+    , m_hVBoxDbg(NIL_RTLDRMOD)
+    , m_enmLaunchRunning(LaunchRunning_Default)
+#endif
+    , m_fSettingsPwSet(false)
+    , m_fWrappersValid(false)
+    , m_fVBoxSVCAvailable(true)
+    , m_i3DAvailable(-1)
+    , m_pThreadPool(0)
+    , m_pIconPool(0)
+    , m_pMediumEnumerator(0)
+{
+    /* Assign instance: */
+    s_pInstance = this;
+}
+
+UICommon::~UICommon()
+{
+    /* Unassign instance: */
+    s_pInstance = 0;
+}
+
+/* static */
+QString UICommon::qtRTVersionString()
+{
+    return QString::fromLatin1(qVersion());
+}
+
+/* static */
+uint UICommon::qtRTVersion()
+{
+    const QString strVersionRT = UICommon::qtRTVersionString();
+    return (strVersionRT.section('.', 0, 0).toInt() << 16) +
+           (strVersionRT.section('.', 1, 1).toInt() << 8) +
+           strVersionRT.section('.', 2, 2).toInt();
+}
+
+/* static */
+uint UICommon::qtRTMajorVersion()
+{
+    return UICommon::qtRTVersionString().section('.', 0, 0).toInt();
+}
+
+/* static */
+uint UICommon::qtRTMinorVersion()
+{
+    return UICommon::qtRTVersionString().section('.', 1, 1).toInt();
+}
+
+/* static */
+uint UICommon::qtRTRevisionNumber()
+{
+    return UICommon::qtRTVersionString().section('.', 2, 2).toInt();
+}
+
+/* static */
+QString UICommon::qtCTVersionString()
+{
+    return QString::fromLatin1(QT_VERSION_STR);
+}
+
+/* static */
+uint UICommon::qtCTVersion()
+{
+    const QString strVersionCompiled = UICommon::qtCTVersionString();
+    return (strVersionCompiled.section('.', 0, 0).toInt() << 16) +
+           (strVersionCompiled.section('.', 1, 1).toInt() << 8) +
+           strVersionCompiled.section('.', 2, 2).toInt();
+}
+
+QString UICommon::vboxVersionString() const
+{
+    return m_comVBox.GetVersion();
+}
+
+QString UICommon::vboxVersionStringNormalized() const
+{
+    return m_comVBox.GetVersionNormalized();
+}
+
+bool UICommon::isBeta() const
+{
+    return vboxVersionString().contains("BETA", Qt::CaseInsensitive);
+}
+
+#ifdef VBOX_WS_MAC
+/* static */
+MacOSXRelease UICommon::determineOsRelease()
+{
+    /* Prepare 'utsname' struct: */
+    utsname info;
+    if (uname(&info) != -1)
+    {
+        /* Compose map of known releases: */
+        QMap<int, MacOSXRelease> release;
+        release[10] = MacOSXRelease_SnowLeopard;
+        release[11] = MacOSXRelease_Lion;
+        release[12] = MacOSXRelease_MountainLion;
+        release[13] = MacOSXRelease_Mavericks;
+        release[14] = MacOSXRelease_Yosemite;
+        release[15] = MacOSXRelease_ElCapitan;
+
+        /* Cut the major release index of the string we have, s.a. 'man uname': */
+        const int iRelease = QString(info.release).section('.', 0, 0).toInt();
+
+        /* Return release if determined, return 'New' if version more recent than latest, return 'Old' otherwise: */
+        return release.value(iRelease, iRelease > release.keys().last() ? MacOSXRelease_New : MacOSXRelease_Old);
+    }
+    /* Return 'Old' by default: */
+    return MacOSXRelease_Old;
+}
+#endif /* VBOX_WS_MAC */
+
+bool UICommon::brandingIsActive(bool fForce /* = false */)
+{
+    if (fForce)
+        return true;
+
+    if (m_strBrandingConfigFilePath.isEmpty())
+    {
+        m_strBrandingConfigFilePath = QDir(QApplication::applicationDirPath()).absolutePath();
+        m_strBrandingConfigFilePath += "/custom/custom.ini";
+    }
+
+    return QFile::exists(m_strBrandingConfigFilePath);
+}
+
+QString UICommon::brandingGetKey(QString strKey)
+{
+    QSettings settings(m_strBrandingConfigFilePath, QSettings::IniFormat);
+    return settings.value(QString("%1").arg(strKey)).toString();
+}
+
+/*static */
+QString UICommon::findUniqueFileName(const QString &strFullFolderPath, const QString &strBaseFileName)
+{
+    QDir folder(strFullFolderPath);
+    if (!folder.exists())
+        return strBaseFileName;
+    QFileInfoList folderContent = folder.entryInfoList();
+    QSet<QString> fileNameSet;
+    foreach (const QFileInfo &fileInfo, folderContent)
+    {
+        /* Remove the extension : */
+        fileNameSet.insert(fileInfo.completeBaseName());
+    }
+    int iSuffix = 0;
+    QString strNewName(strBaseFileName);
+    while (fileNameSet.contains(strNewName))
+    {
+        strNewName = strBaseFileName + QString("_") + QString::number(++iSuffix);
+    }
+    return strNewName;
+}
+
+/* static */
+bool UICommon::hasAllowedExtension(const QString &strExt, const QStringList &extList)
+{
+    for (int i = 0; i < extList.size(); ++i)
+        if (strExt.endsWith(extList.at(i), Qt::CaseInsensitive))
+            return true;
+    return false;
+}
+
+bool UICommon::processArgs()
+{
+    /* Among those arguments: */
+    bool fResult = false;
+    const QStringList args = qApp->arguments();
+
+    /* We are looking for a list of file URLs passed to the executable: */
+    QList<QUrl> listArgUrls;
+    for (int i = 1; i < args.size(); ++i)
+    {
+        /* But we break out after the first parameter, cause there
+         * could be parameters with arguments (e.g. --comment comment). */
+        if (args.at(i).startsWith("-"))
+            break;
+
+#ifdef VBOX_WS_MAC
+        const QString strArg = ::darwinResolveAlias(args.at(i));
+#else
+        const QString strArg = args.at(i);
+#endif
+
+        /* So if the argument file exists, we add it to URL list: */
+        if (   !strArg.isEmpty()
+            && QFile::exists(strArg))
+            listArgUrls << QUrl::fromLocalFile(QFileInfo(strArg).absoluteFilePath());
+    }
+
+    /* If there are file URLs: */
+    if (!listArgUrls.isEmpty())
+    {
+        /* We enumerate them and: */
+        for (int i = 0; i < listArgUrls.size(); ++i)
+        {
+            /* Check which of them has allowed VM extensions: */
+            const QUrl url = listArgUrls.at(i);
+            const QString strFile = url.toLocalFile();
+            if (UICommon::hasAllowedExtension(strFile, VBoxFileExts))
+            {
+                /* So that we could run existing VMs: */
+                CVirtualBox comVBox = virtualBox();
+                CMachine comMachine = comVBox.FindMachine(strFile);
+                if (!comMachine.isNull())
+                {
+                    fResult = true;
+                    launchMachine(comMachine);
+                    /* And remove their URLs from the ULR list: */
+                    listArgUrls.removeAll(url);
+                }
+            }
+        }
+    }
+
+    /* And if there are *still* URLs: */
+    if (!listArgUrls.isEmpty())
+    {
+        /* We store them, they will be handled later: */
+        m_listArgUrls = listArgUrls;
+    }
+
+    return fResult;
+}
+
+bool UICommon::argumentUrlsPresent() const
+{
+    return !m_listArgUrls.isEmpty();
+}
+
+QList<QUrl> UICommon::takeArgumentUrls()
+{
+    const QList<QUrl> result = m_listArgUrls;
+    m_listArgUrls.clear();
+    return result;
+}
+
+#ifdef VBOX_WITH_DEBUGGER_GUI
+
+bool UICommon::isDebuggerEnabled() const
+{
+    return isDebuggerWorker(&m_fDbgEnabled, GUI_Dbg_Enabled);
+}
+
+bool UICommon::isDebuggerAutoShowEnabled() const
+{
+    return isDebuggerWorker(&m_fDbgAutoShow, GUI_Dbg_AutoShow);
+}
+
+bool UICommon::isDebuggerAutoShowCommandLineEnabled() const
+{
+    return isDebuggerWorker(&m_fDbgAutoShowCommandLine, GUI_Dbg_AutoShow);
+}
+
+bool UICommon::isDebuggerAutoShowStatisticsEnabled() const
+{
+    return isDebuggerWorker(&m_fDbgAutoShowStatistics, GUI_Dbg_AutoShow);
+}
+
+#endif /* VBOX_WITH_DEBUGGER_GUI */
+
+bool UICommon::shouldStartPaused() const
+{
+#ifdef VBOX_WITH_DEBUGGER_GUI
+    return m_enmLaunchRunning == LaunchRunning_Default ? isDebuggerAutoShowEnabled() : m_enmLaunchRunning == LaunchRunning_No;
+#else
+    return false;
+#endif
+}
+
+#ifdef VBOX_GUI_WITH_PIDFILE
+
+void UICommon::createPidfile()
+{
+    if (!m_strPidFile.isEmpty())
+    {
+        const qint64 iPid = qApp->applicationPid();
+        QFile file(m_strPidFile);
+        if (file.open(QIODevice::WriteOnly | QIODevice::Truncate))
+        {
+             QTextStream out(&file);
+             out << iPid << endl;
+        }
+        else
+            LogRel(("Failed to create pid file %s\n", m_strPidFile.toUtf8().constData()));
+    }
+}
+
+void UICommon::deletePidfile()
+{
+    if (   !m_strPidFile.isEmpty()
+        && QFile::exists(m_strPidFile))
+        QFile::remove(m_strPidFile);
+}
+
+#endif /* VBOX_GUI_WITH_PIDFILE */
+
+/* static */
+QString UICommon::languageName()
+{
+    /* Returns "English" if no translation is installed
+     * or if the translation file is invalid. */
+    return QApplication::translate("@@@", "English",
+                                   "Native language name");
+}
+
+/* static */
+QString UICommon::languageCountry()
+{
+    /* Returns "--" if no translation is installed or if the translation file
+     * is invalid, or if the language is independent on the country. */
+    return QApplication::translate("@@@", "--",
+                                   "Native language country name "
+                                   "(empty if this language is for all countries)");
+}
+
+/* static */
+QString UICommon::languageNameEnglish()
+{
+    /* Returns "English" if no translation is installed
+     * or if the translation file is invalid. */
+    return QApplication::translate("@@@", "English",
+                                   "Language name, in English");
+}
+
+/* static */
+QString UICommon::languageCountryEnglish()
+{
+    /* Returns "--" if no translation is installed or if the translation file
+     * is invalid, or if the language is independent on the country. */
+    return QApplication::translate("@@@", "--",
+                                   "Language country name, in English "
+                                   "(empty if native country name is empty)");
+}
+
+/* static */
+QString UICommon::languageTranslators()
+{
+    /* Returns "Oracle Corporation" if no translation is installed or if the translation file
+     * is invalid, or if the translation is supplied by Oracle Corporation. */
+    return QApplication::translate("@@@", "Oracle Corporation",
+                                   "Comma-separated list of translators");
+}
+
+/* static */
+QString UICommon::vboxLanguageSubDirectory()
+{
+    return "/nls";
+}
+
+/* static */
+QString UICommon::vboxLanguageFileBase()
+{
+    return "VirtualBox_";
+}
+
+/* static */
+QString UICommon::vboxLanguageFileExtension()
+{
+    return ".qm";
+}
+
+/* static */
+QString UICommon::vboxLanguageIdRegExp()
+{
+    return "(([a-z]{2})(?:_([A-Z]{2}))?)|(C)";
+}
+
+/* static */
+QString UICommon::vboxBuiltInLanguageName()
+{
+    return "C";
+}
+
+/* static */
+QString UICommon::languageId()
+{
+    /* Note that it may not match with UIExtraDataManager::languageId() if the specified language cannot be loaded.
+     *
+     * If the built-in language is active, this method returns "C". "C" is treated as the built-in language for
+     * simplicity -- the C locale is used in unix environments as a fallback when the requested locale is invalid.
+     * This way we don't need to process both the "built_in" language and the "C" language (which is a valid
+     * environment setting) separately. */
+
+    return s_strLoadedLanguageId;
+}
+
+/* static */
+QString UICommon::systemLanguageId()
+{
+    /* This does exactly the same as QLocale::system().name() but corrects its wrong behavior on Linux systems
+     * (LC_NUMERIC for some strange reason takes precedence over any other locale setting in the QLocale::system()
+     * implementation). This implementation first looks at LC_ALL (as defined by SUS), then looks at LC_MESSAGES
+     * which is designed to define a language for program messages in case if it differs from the language for
+     * other locale categories. Then it looks for LANG and finally falls back to QLocale::system().name().
+     *
+     * The order of precedence is well defined here:
+     * http://opengroup.org/onlinepubs/007908799/xbd/envvar.html
+     *
+     * This method will return "C" when the requested locale is invalid or when the "C" locale is set explicitly. */
+
+#if defined(VBOX_WS_MAC)
+    /* QLocale return the right id only if the user select the format
+     * of the language also. So we use our own implementation */
+    return ::darwinSystemLanguage();
+#elif defined(Q_OS_UNIX)
+    const char *pszValue = RTEnvGet("LC_ALL");
+    if (pszValue == 0)
+        pszValue = RTEnvGet("LC_MESSAGES");
+    if (pszValue == 0)
+        pszValue = RTEnvGet("LANG");
+    if (pszValue != 0)
+        return QLocale(pszValue).name();
+#endif
+    return QLocale::system().name();
+}
+
+/* static */
+void UICommon::loadLanguage(const QString &strLangId)
+{
+    QString strEffectiveLangId = strLangId.isEmpty()
+                               ? UICommon::systemLanguageId()
+                               : strLangId;
+    QString strLanguageFileName;
+    QString strSelectedLangId = vboxBuiltInLanguageName();
+
+    /* If C is selected we change it temporary to en. This makes sure any extra
+     * "en" translation file will be loaded. This is necessary for loading the
+     * plural forms of some of our translations. */
+    bool fResetToC = false;
+    if (strEffectiveLangId == "C")
+    {
+        strEffectiveLangId = "en";
+        fResetToC = true;
+    }
+
+    char szNlsPath[RTPATH_MAX];
+    int rc;
+
+    rc = RTPathAppPrivateNoArch(szNlsPath, sizeof(szNlsPath));
+    AssertRC(rc);
+
+    QString strNlsPath = QString(szNlsPath) + vboxLanguageSubDirectory();
+    QDir nlsDir(strNlsPath);
+
+    Assert(!strEffectiveLangId.isEmpty());
+    if (!strEffectiveLangId.isEmpty() && strEffectiveLangId != vboxBuiltInLanguageName())
+    {
+        QRegExp regExp(vboxLanguageIdRegExp());
+        int iPos = regExp.indexIn(strEffectiveLangId);
+        /* The language ID should match the regexp completely: */
+        AssertReturnVoid(iPos == 0);
+
+        QString strStrippedLangId = regExp.cap(2);
+
+        if (nlsDir.exists(vboxLanguageFileBase() + strEffectiveLangId + vboxLanguageFileExtension()))
+        {
+            strLanguageFileName = nlsDir.absoluteFilePath(vboxLanguageFileBase() +
+                                                          strEffectiveLangId +
+                                                          vboxLanguageFileExtension());
+            strSelectedLangId = strEffectiveLangId;
+        }
+        else if (nlsDir.exists(vboxLanguageFileBase() + strStrippedLangId + vboxLanguageFileExtension()))
+        {
+            strLanguageFileName = nlsDir.absoluteFilePath(vboxLanguageFileBase() +
+                                                          strStrippedLangId +
+                                                          vboxLanguageFileExtension());
+            strSelectedLangId = strStrippedLangId;
+        }
+        else
+        {
+            /* Never complain when the default language is requested.  In any
+             * case, if no explicit language file exists, we will simply
+             * fall-back to English (built-in). */
+            if (!strLangId.isNull() && strEffectiveLangId != "en")
+                msgCenter().cannotFindLanguage(strEffectiveLangId, strNlsPath);
+            /* strSelectedLangId remains built-in here: */
+            AssertReturnVoid(strSelectedLangId == vboxBuiltInLanguageName());
+        }
+    }
+
+    /* Delete the old translator if there is one: */
+    if (sTranslator)
+    {
+        /* QTranslator destructor will call qApp->removeTranslator() for
+         * us. It will also delete all its child translations we attach to it
+         * below, so we don't have to care about them specially. */
+        delete sTranslator;
+    }
+
+    /* Load new language files: */
+    sTranslator = new VBoxTranslator(qApp);
+    Assert(sTranslator);
+    bool fLoadOk = true;
+    if (sTranslator)
+    {
+        if (strSelectedLangId != vboxBuiltInLanguageName())
+        {
+            Assert(!strLanguageFileName.isNull());
+            fLoadOk = sTranslator->loadFile(strLanguageFileName);
+        }
+        /* We install the translator in any case: on failure, this will
+         * activate an empty translator that will give us English (built-in): */
+        qApp->installTranslator(sTranslator);
+    }
+    else
+        fLoadOk = false;
+
+    if (fLoadOk)
+        s_strLoadedLanguageId = strSelectedLangId;
+    else
+    {
+        msgCenter().cannotLoadLanguage(strLanguageFileName);
+        s_strLoadedLanguageId = vboxBuiltInLanguageName();
+    }
+
+    /* Try to load the corresponding Qt translation: */
+    if (languageId() != vboxBuiltInLanguageName() && languageId() != "en")
+    {
+#ifdef Q_OS_UNIX
+        /* We use system installations of Qt on Linux systems, so first, try
+         * to load the Qt translation from the system location. */
+        strLanguageFileName = QLibraryInfo::location(QLibraryInfo::TranslationsPath) + "/qt_" +
+                              languageId() + vboxLanguageFileExtension();
+        QTranslator *pQtSysTr = new QTranslator(sTranslator);
+        Assert(pQtSysTr);
+        if (pQtSysTr && pQtSysTr->load(strLanguageFileName))
+            qApp->installTranslator(pQtSysTr);
+        /* Note that the Qt translation supplied by Oracle is always loaded
+         * afterwards to make sure it will take precedence over the system
+         * translation (it may contain more decent variants of translation
+         * that better correspond to VirtualBox UI). We need to load both
+         * because a newer version of Qt may be installed on the user computer
+         * and the Oracle version may not fully support it. We don't do it on
+         * Win32 because we supply a Qt library there and therefore the
+         * Oracle translation is always the best one. */
+#endif
+        strLanguageFileName = nlsDir.absoluteFilePath(QString("qt_") +
+                                                      languageId() +
+                                                      vboxLanguageFileExtension());
+        QTranslator *pQtTr = new QTranslator(sTranslator);
+        Assert(pQtTr);
+        if (pQtTr && (fLoadOk = pQtTr->load(strLanguageFileName)))
+            qApp->installTranslator(pQtTr);
+        /* The below message doesn't fit 100% (because it's an additional
+         * language and the main one won't be reset to built-in on failure)
+         * but the load failure is so rare here that it's not worth a separate
+         * message (but still, having something is better than having none) */
+        if (!fLoadOk && !strLangId.isNull())
+            msgCenter().cannotLoadLanguage(strLanguageFileName);
+    }
+    if (fResetToC)
+        s_strLoadedLanguageId = vboxBuiltInLanguageName();
+#ifdef VBOX_WS_MAC
+    /* Qt doesn't translate the items in the Application menu initially.
+     * Manually trigger an update. */
+    ::darwinRetranslateAppMenu();
+#endif
+}
+
+/* static */
+QString UICommon::yearsToString(uint32_t cVal)
+{
+    return QApplication::translate("UICommon", "%n year(s)", "", cVal);
+}
+
+/* static */
+QString UICommon::monthsToString(uint32_t cVal)
+{
+    return QApplication::translate("UICommon", "%n month(s)", "", cVal);
+}
+
+/* static */
+QString UICommon::daysToString(uint32_t cVal)
+{
+    return QApplication::translate("UICommon", "%n day(s)", "", cVal);
+}
+
+/* static */
+QString UICommon::hoursToString(uint32_t cVal)
+{
+    return QApplication::translate("UICommon", "%n hour(s)", "", cVal);
+}
+
+/* static */
+QString UICommon::minutesToString(uint32_t cVal)
+{
+    return QApplication::translate("UICommon", "%n minute(s)", "", cVal);
+}
+
+/* static */
+QString UICommon::secondsToString(uint32_t cVal)
+{
+    return QApplication::translate("UICommon", "%n second(s)", "", cVal);
+}
+
+/* static */
+QChar UICommon::decimalSep()
+{
+    return QLocale::system().decimalPoint();
+}
+
+/* static */
+QString UICommon::sizeRegexp()
+{
+    /* This regexp will capture 5 groups of text:
+     * - cap(1): integer number in case when no decimal point is present
+     *           (if empty, it means that decimal point is present)
+     * - cap(2): size suffix in case when no decimal point is present (may be empty)
+     * - cap(3): integer number in case when decimal point is present (may be empty)
+     * - cap(4): fraction number (hundredth) in case when decimal point is present
+     * - cap(5): size suffix in case when decimal point is present (note that
+     *           B cannot appear there). */
+
+    const QString strRegexp =
+        QString("^(?:(?:(\\d+)(?:\\s?(%2|%3|%4|%5|%6|%7))?)|(?:(\\d*)%1(\\d{1,2})(?:\\s?(%3|%4|%5|%6|%7))))$")
+            .arg(decimalSep())
+            .arg(tr("B", "size suffix Bytes"))
+            .arg(tr("KB", "size suffix KBytes=1024 Bytes"))
+            .arg(tr("MB", "size suffix MBytes=1024 KBytes"))
+            .arg(tr("GB", "size suffix GBytes=1024 MBytes"))
+            .arg(tr("TB", "size suffix TBytes=1024 GBytes"))
+            .arg(tr("PB", "size suffix PBytes=1024 TBytes"));
+    return strRegexp;
+}
+
+/* static */
+quint64 UICommon::parseSize(const QString &strText)
+{
+    /* Text should be in form of B|KB|MB|GB|TB|PB. */
+    QRegExp regexp(sizeRegexp());
+    int iPos = regexp.indexIn(strText);
+    if (iPos != -1)
+    {
+        QString strInteger = regexp.cap(1);
+        QString strHundred;
+        QString strSuff = regexp.cap(2);
+        if (strInteger.isEmpty())
+        {
+            strInteger = regexp.cap(3);
+            strHundred = regexp.cap(4);
+            strSuff = regexp.cap(5);
+        }
+
+        quint64 uDenominator = 0;
+        if (strSuff.isEmpty() || strSuff == tr("B", "size suffix Bytes"))
+            uDenominator = 1;
+        else if (strSuff == tr("KB", "size suffix KBytes=1024 Bytes"))
+            uDenominator = _1K;
+        else if (strSuff == tr("MB", "size suffix MBytes=1024 KBytes"))
+            uDenominator = _1M;
+        else if (strSuff == tr("GB", "size suffix GBytes=1024 MBytes"))
+            uDenominator = _1G;
+        else if (strSuff == tr("TB", "size suffix TBytes=1024 GBytes"))
+            uDenominator = _1T;
+        else if (strSuff == tr("PB", "size suffix PBytes=1024 TBytes"))
+            uDenominator = _1P;
+
+        quint64 iInteger = strInteger.toULongLong();
+        if (uDenominator == 1)
+            return iInteger;
+
+        quint64 iHundred = strHundred.leftJustified(2, '0').toULongLong();
+        iHundred = iHundred * uDenominator / 100;
+        iInteger = iInteger * uDenominator + iHundred;
+        return iInteger;
+    }
+    else
+        return 0;
+}
+
+/* static */
+SizeSuffix UICommon::parseSizeSuffix(const QString &strText)
+{
+    /* Text should be in form of B|KB|MB|GB|TB|PB. */
+    QRegExp regexp(sizeRegexp());
+    int iPos = regexp.indexIn(strText);
+    if (iPos != -1)
+    {
+        QString strInteger = regexp.cap(1);
+        QString strSuff = regexp.cap(2);
+        if (strInteger.isEmpty())
+        {
+            strInteger = regexp.cap(3);
+            strSuff = regexp.cap(5);
+        }
+
+        SizeSuffix enmSizeSuffix = SizeSuffix_Byte;
+
+        if (strSuff.isEmpty() || strSuff == tr("B", "size suffix Bytes"))
+            enmSizeSuffix = SizeSuffix_Byte;
+        else if (strSuff == tr("KB", "size suffix KBytes=1024 Bytes"))
+            enmSizeSuffix = SizeSuffix_KiloByte;
+        else if (strSuff == tr("MB", "size suffix MBytes=1024 KBytes"))
+            enmSizeSuffix = SizeSuffix_MegaByte;
+        else if (strSuff == tr("GB", "size suffix GBytes=1024 MBytes"))
+            enmSizeSuffix = SizeSuffix_GigaByte;
+        else if (strSuff == tr("TB", "size suffix TBytes=1024 GBytes"))
+            enmSizeSuffix = SizeSuffix_TeraByte;
+        else if (strSuff == tr("PB", "size suffix PBytes=1024 TBytes"))
+            enmSizeSuffix = SizeSuffix_PetaByte;
+        return enmSizeSuffix;
+    }
+    else
+        return SizeSuffix_Byte;
+}
+
+/* static */
+bool UICommon::hasSizeSuffix(const QString &strText)
+{
+    /* Text should be in form of B|KB|MB|GB|TB|PB. */
+    QRegExp regexp(sizeRegexp());
+    int iPos = regexp.indexIn(strText);
+    if (iPos != -1)
+    {
+        QString strInteger = regexp.cap(1);
+        QString strSuff = regexp.cap(2);
+        if (strInteger.isEmpty())
+        {
+            strInteger = regexp.cap(3);
+            strSuff = regexp.cap(5);
+        }
+
+        if (strSuff.isEmpty())
+            return false;
+        if (strSuff == tr("B", "size suffix Bytes") ||
+            strSuff == tr("KB", "size suffix KBytes=1024 Bytes") ||
+            strSuff == tr("MB", "size suffix MBytes=1024 KBytes") ||
+            strSuff == tr("GB", "size suffix GBytes=1024 MBytes") ||
+            strSuff == tr("TB", "size suffix TBytes=1024 GBytes") ||
+            strSuff == tr("PB", "size suffix PBytes=1024 TBytes"))
+            return true;
+        return false;
+    }
+    else
+        return false;
+}
+
+/* static */
+QString UICommon::formatSize(quint64 uSize, uint cDecimal /* = 2 */,
+                               FormatSize enmMode /* = FormatSize_Round */)
+{
+    /* Text will be in form of B|KB|MB|GB|TB|PB.
+     *
+     * When enmMode is FormatSize_Round, the result is rounded to the
+     *              closest number containing @a aDecimal decimal digits.
+     * When enmMode is FormatSize_RoundDown, the result is rounded to the
+     *              largest number with @a aDecimal decimal digits that is not greater than
+     *              the result. This guarantees that converting the resulting string back to
+     *              the integer value in bytes will not produce a value greater that the
+     *              initial size parameter.
+     * When enmMode is FormatSize_RoundUp, the result is rounded to the
+     *              smallest number with @a aDecimal decimal digits that is not less than the
+     *              result. This guarantees that converting the resulting string back to the
+     *              integer value in bytes will not produce a value less that the initial
+     *              size parameter. */
+
+    quint64 uDenominator = 0;
+    int iSuffix = 0;
+
+    if (uSize < _1K)
+    {
+        uDenominator = 1;
+        iSuffix = 0;
+    }
+    else if (uSize < _1M)
+    {
+        uDenominator = _1K;
+        iSuffix = 1;
+    }
+    else if (uSize < _1G)
+    {
+        uDenominator = _1M;
+        iSuffix = 2;
+    }
+    else if (uSize < _1T)
+    {
+        uDenominator = _1G;
+        iSuffix = 3;
+    }
+    else if (uSize < _1P)
+    {
+        uDenominator = _1T;
+        iSuffix = 4;
+    }
+    else
+    {
+        uDenominator = _1P;
+        iSuffix = 5;
+    }
+
+    quint64 uInteger = uSize / uDenominator;
+    quint64 uDecimal = uSize % uDenominator;
+    quint64 uMult = 1;
+    for (uint i = 0; i < cDecimal; ++i)
+        uMult *= 10;
+
+    QString strNumber;
+    if (uDenominator > 1)
+    {
+        if (uDecimal)
+        {
+            uDecimal *= uMult;
+            /* Not greater: */
+            if (enmMode == FormatSize_RoundDown)
+                uDecimal = uDecimal / uDenominator;
+            /* Not less: */
+            else if (enmMode == FormatSize_RoundUp)
+                uDecimal = (uDecimal + uDenominator - 1) / uDenominator;
+            /* Nearest: */
+            else
+                uDecimal = (uDecimal + uDenominator / 2) / uDenominator;
+        }
+        /* Check for the fractional part overflow due to rounding: */
+        if (uDecimal == uMult)
+        {
+            uDecimal = 0;
+            ++uInteger;
+            /* Check if we've got 1024 XB after rounding and scale down if so: */
+            if (uInteger == 1024 && iSuffix + 1 < (int)SizeSuffix_Max)
+            {
+                uInteger /= 1024;
+                ++iSuffix;
+            }
+        }
+        strNumber = QString::number(uInteger);
+        if (cDecimal)
+            strNumber += QString("%1%2").arg(decimalSep())
+                                        .arg(QString::number(uDecimal).rightJustified(cDecimal, '0'));
+    }
+    else
+    {
+        strNumber = QString::number(uInteger);
+    }
+
+    return QString("%1 %2").arg(strNumber).arg(gpConverter->toString(static_cast<SizeSuffix>(iSuffix)));
+}
+
+/* static */
+QStringList UICommon::COMPortNames()
+{
+    QStringList list;
+    for (size_t i = 0; i < RT_ELEMENTS(kComKnownPorts); ++i)
+        list << kComKnownPorts[i].name;
+
+    return list;
+}
+
+/* static */
+QString UICommon::toCOMPortName(ulong uIRQ, ulong uIOBase)
+{
+    for (size_t i = 0; i < RT_ELEMENTS(kComKnownPorts); ++i)
+        if (kComKnownPorts[i].IRQ == uIRQ &&
+            kComKnownPorts[i].IOBase == uIOBase)
+            return kComKnownPorts[i].name;
+
+    return s_strUserDefinedPortName;
+}
+
+/* static */
+bool UICommon::toCOMPortNumbers(const QString &strName, ulong &uIRQ, ulong &uIOBase)
+{
+    for (size_t i = 0; i < RT_ELEMENTS(kComKnownPorts); ++i)
+        if (strcmp(kComKnownPorts[i].name, strName.toUtf8().data()) == 0)
+        {
+            uIRQ = kComKnownPorts[i].IRQ;
+            uIOBase = kComKnownPorts[i].IOBase;
+            return true;
+        }
+
+    return false;
+}
+
+/* static */
+QStringList UICommon::LPTPortNames()
+{
+    QStringList list;
+    for (size_t i = 0; i < RT_ELEMENTS(kLptKnownPorts); ++i)
+        list << kLptKnownPorts[i].name;
+
+    return list;
+}
+
+/* static */
+QString UICommon::toLPTPortName(ulong uIRQ, ulong uIOBase)
+{
+    for (size_t i = 0; i < RT_ELEMENTS(kLptKnownPorts); ++i)
+        if (kLptKnownPorts[i].IRQ == uIRQ &&
+            kLptKnownPorts[i].IOBase == uIOBase)
+            return kLptKnownPorts[i].name;
+
+    return s_strUserDefinedPortName;
+}
+
+/* static */
+bool UICommon::toLPTPortNumbers(const QString &strName, ulong &uIRQ, ulong &uIOBase)
+{
+    for (size_t i = 0; i < RT_ELEMENTS(kLptKnownPorts); ++i)
+        if (strcmp(kLptKnownPorts[i].name, strName.toUtf8().data()) == 0)
+        {
+            uIRQ = kLptKnownPorts[i].IRQ;
+            uIOBase = kLptKnownPorts[i].IOBase;
+            return true;
+        }
+
+    return false;
+}
+
+/* static */
+QString UICommon::highlight(QString strText, bool fToolTip /* = false */)
+{
+    /* We should reformat the input strText so that:
+     * - strings in single quotes will be put inside <nobr> and marked
+     *   with blue color;
+     * - UUIDs be put inside <nobr> and marked
+     *   with green color;
+     * - replaces new line chars with </p><p> constructs to form paragraphs
+     *   (note that <p\> and </p> are not appended to the beginning and to the
+     *    end of the string respectively, to allow the result be appended
+     *    or prepended to the existing paragraph).
+     *
+     *  If @a fToolTip is true, colouring is not applied, only the <nobr> tag
+     *  is added. Also, new line chars are replaced with <br> instead of <p>. */
+
+    QString strFont;
+    QString uuidFont;
+    QString endFont;
+    if (!fToolTip)
+    {
+        strFont = "<font color=#0000CC>";
+        uuidFont = "<font color=#008000>";
+        endFont = "</font>";
+    }
+
+    /* Replace special entities, '&' -- first! */
+    strText.replace('&', "&amp;");
+    strText.replace('<', "&lt;");
+    strText.replace('>', "&gt;");
+    strText.replace('\"', "&quot;");
+
+    /* Mark strings in single quotes with color: */
+    QRegExp rx = QRegExp("((?:^|\\s)[(]?)'([^']*)'(?=[:.-!);]?(?:\\s|$))");
+    rx.setMinimal(true);
+    strText.replace(rx, QString("\\1%1<nobr>'\\2'</nobr>%2").arg(strFont).arg(endFont));
+
+    /* Mark UUIDs with color: */
+    strText.replace(QRegExp(
+        "((?:^|\\s)[(]?)"
+        "(\\{[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\})"
+        "(?=[:.-!);]?(?:\\s|$))"),
+        QString("\\1%1<nobr>\\2</nobr>%2").arg(uuidFont).arg(endFont));
+
+    /* Split to paragraphs at \n chars: */
+    if (!fToolTip)
+        strText.replace('\n', "</p><p>");
+    else
+        strText.replace('\n', "<br>");
+
+    return strText;
+}
+
+/* static */
+QString UICommon::emphasize(QString strText)
+{
+    /* We should reformat the input string @a strText so that:
+     * - strings in single quotes will be put inside \<nobr\> and marked
+     *   with bold style;
+     * - UUIDs be put inside \<nobr\> and marked
+     *   with italic style;
+     * - replaces new line chars with \</p\>\<p\> constructs to form paragraphs
+     *   (note that \<p\> and \</p\> are not appended to the beginning and to the
+     *    end of the string respectively, to allow the result be appended
+     *    or prepended to the existing paragraph). */
+
+    QString strEmphStart("<b>");
+    QString strEmphEnd("</b>");
+    QString uuidEmphStart("<i>");
+    QString uuidEmphEnd("</i>");
+
+    /* Replace special entities, '&' -- first! */
+    strText.replace('&', "&amp;");
+    strText.replace('<', "&lt;");
+    strText.replace('>', "&gt;");
+    strText.replace('\"', "&quot;");
+
+    /* Mark strings in single quotes with bold style: */
+    QRegExp rx = QRegExp("((?:^|\\s)[(]?)'([^']*)'(?=[:.-!);]?(?:\\s|$))");
+    rx.setMinimal(true);
+    strText.replace(rx, QString("\\1%1<nobr>'\\2'</nobr>%2").arg(strEmphStart).arg(strEmphEnd));
+
+    /* Mark UUIDs with italic style: */
+    strText.replace(QRegExp(
+        "((?:^|\\s)[(]?)"
+        "(\\{[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\})"
+        "(?=[:.-!);]?(?:\\s|$))"),
+        QString("\\1%1<nobr>\\2</nobr>%2").arg(uuidEmphStart).arg(uuidEmphEnd));
+
+    /* Split to paragraphs at \n chars: */
+    strText.replace('\n', "</p><p>");
+
+    return strText;
+}
+
+/* static */
+QString UICommon::removeAccelMark(QString strText)
+{
+    /* In order to support accelerators used in non-alphabet languages
+     * (e.g. Japanese) that has a form of "(&<L>)" (where <L> is a latin letter),
+     * this method first searches for this pattern and, if found, removes it as a
+     * whole. If such a pattern is not found, then the '&' character is simply
+     * removed from the string. */
+
+    QRegExp accel("\\(&[a-zA-Z]\\)");
+    int iPos = accel.indexIn(strText);
+    if (iPos >= 0)
+        strText.remove(iPos, accel.cap().length());
+    else
+    {
+        iPos = strText.indexOf('&');
+        if (iPos >= 0)
+            strText.remove(iPos, 1);
+    }
+
+    return strText;
+}
+
+/* static */
+QString UICommon::insertKeyToActionText(const QString &strText, const QString &strKey)
+{
+#ifdef VBOX_WS_MAC
+    QString strPattern("%1 (Host+%2)");
+#else
+    QString strPattern("%1 \tHost+%2");
+#endif
+    if (   strKey.isEmpty()
+        || strKey.compare("None", Qt::CaseInsensitive) == 0)
+        return strText;
+    else
+        return strPattern.arg(strText).arg(QKeySequence(strKey).toString(QKeySequence::NativeText));
+}
+
+/* static */
+QString UICommon::helpFile()
+{
+#if defined(VBOX_WS_WIN)
+    const QString strName = "VirtualBox";
+    const QString strSuffix = "chm";
+#elif defined(VBOX_WS_MAC)
+    const QString strName = "UserManual";
+    const QString strSuffix = "pdf";
+#elif defined(VBOX_WS_X11)
+# if defined VBOX_OSE
+    const QString strName = "UserManual";
+    const QString strSuffix = "pdf";
+# else
+    const QString strName = "VirtualBox";
+    const QString strSuffix = "chm";
+# endif
+#endif
+
+    /* Where are the docs located? */
+    char szDocsPath[RTPATH_MAX];
+    int rc = RTPathAppDocs(szDocsPath, sizeof(szDocsPath));
+    AssertRC(rc);
+
+    /* Make sure that the language is in two letter code.
+     * Note: if languageId() returns an empty string lang.name() will
+     * return "C" which is an valid language code. */
+    QLocale lang(UICommon::languageId());
+
+    /* Construct the path and the filename: */
+    QString strManual = QString("%1/%2_%3.%4").arg(szDocsPath)
+                                              .arg(strName)
+                                              .arg(lang.name())
+                                              .arg(strSuffix);
+
+    /* Check if a help file with that name exists: */
+    QFileInfo fi(strManual);
+    if (fi.exists())
+        return strManual;
+
+    /* Fall back to the standard: */
+    strManual = QString("%1/%2.%4").arg(szDocsPath)
+                                   .arg(strName)
+                                   .arg(strSuffix);
+    return strManual;
+}
+
+/* static */
+QString UICommon::documentsPath()
+{
+    QString strPath = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
+    QDir dir(strPath);
+    if (dir.exists())
+        return QDir::cleanPath(dir.canonicalPath());
+    else
+    {
+        dir.setPath(QDir::homePath() + "/Documents");
+        if (dir.exists())
+            return QDir::cleanPath(dir.canonicalPath());
+        else
+            return QDir::homePath();
+    }
+}
+
+/* static */
+QRect UICommon::normalizeGeometry(const QRect &rectangle, const QRegion &boundRegion, bool fCanResize /* = true */)
+{
+    /* Perform direct and flipped search of position for @a rectangle to make sure it is fully contained
+     * inside @a boundRegion region by moving & resizing (if @a fCanResize is specified) @a rectangle if
+     * necessary. Selects the minimum shifted result between direct and flipped variants. */
+
+    /* Direct search for normalized rectangle: */
+    QRect var1(getNormalized(rectangle, boundRegion, fCanResize));
+
+    /* Flipped search for normalized rectangle: */
+    QRect var2(flip(getNormalized(flip(rectangle).boundingRect(),
+                                  flip(boundRegion), fCanResize)).boundingRect());
+
+    /* Calculate shift from starting position for both variants: */
+    double dLength1 = sqrt(pow((double)(var1.x() - rectangle.x()), (double)2) +
+                           pow((double)(var1.y() - rectangle.y()), (double)2));
+    double dLength2 = sqrt(pow((double)(var2.x() - rectangle.x()), (double)2) +
+                           pow((double)(var2.y() - rectangle.y()), (double)2));
+
+    /* Return minimum shifted variant: */
+    return dLength1 > dLength2 ? var2 : var1;
+}
+
+/* static */
+QRect UICommon::getNormalized(const QRect &rectangle, const QRegion &boundRegion, bool /* fCanResize = true */)
+{
+    /* Ensures that the given rectangle @a rectangle is fully contained within the region @a boundRegion
+     * by moving @a rectangle if necessary. If @a rectangle is larger than @a boundRegion, top left
+     * corner of @a rectangle is aligned with the top left corner of maximum available rectangle and,
+     * if @a fCanResize is true, @a rectangle is shrinked to become fully visible. */
+
+    /* Storing available horizontal sub-rectangles & vertical shifts: */
+    const int iWindowVertical = rectangle.center().y();
+    QList<QRect> rectanglesList;
+    QList<int> shiftsList;
+    foreach (QRect currentItem, boundRegion.rects())
+    {
+        const int iCurrentDelta = qAbs(iWindowVertical - currentItem.center().y());
+        const int iShift2Top = currentItem.top() - rectangle.top();
+        const int iShift2Bot = currentItem.bottom() - rectangle.bottom();
+
+        int iTtemPosition = 0;
+        foreach (QRect item, rectanglesList)
+        {
+            const int iDelta = qAbs(iWindowVertical - item.center().y());
+            if (iDelta > iCurrentDelta)
+                break;
+            else
+                ++iTtemPosition;
+        }
+        rectanglesList.insert(iTtemPosition, currentItem);
+
+        int iShift2TopPos = 0;
+        foreach (int iShift, shiftsList)
+            if (qAbs(iShift) > qAbs(iShift2Top))
+                break;
+            else
+                ++iShift2TopPos;
+        shiftsList.insert(iShift2TopPos, iShift2Top);
+
+        int iShift2BotPos = 0;
+        foreach (int iShift, shiftsList)
+            if (qAbs(iShift) > qAbs(iShift2Bot))
+                break;
+            else
+                ++iShift2BotPos;
+        shiftsList.insert(iShift2BotPos, iShift2Bot);
+    }
+
+    /* Trying to find the appropriate place for window: */
+    QRect result;
+    for (int i = -1; i < shiftsList.size(); ++i)
+    {
+        /* Move to appropriate vertical: */
+        QRect newRectangle(rectangle);
+        if (i >= 0)
+            newRectangle.translate(0, shiftsList[i]);
+
+        /* Search horizontal shift: */
+        int iMaxShift = 0;
+        foreach (QRect item, rectanglesList)
+        {
+            QRect trectangle(newRectangle.translated(item.left() - newRectangle.left(), 0));
+            if (!item.intersects(trectangle))
+                continue;
+
+            if (newRectangle.left() < item.left())
+            {
+                const int iShift = item.left() - newRectangle.left();
+                iMaxShift = qAbs(iShift) > qAbs(iMaxShift) ? iShift : iMaxShift;
+            }
+            else if (newRectangle.right() > item.right())
+            {
+                const int iShift = item.right() - newRectangle.right();
+                iMaxShift = qAbs(iShift) > qAbs(iMaxShift) ? iShift : iMaxShift;
+            }
+        }
+
+        /* Shift across the horizontal direction: */
+        newRectangle.translate(iMaxShift, 0);
+
+        /* Check the translated rectangle to feat the rules: */
+        if (boundRegion.united(newRectangle) == boundRegion)
+            result = newRectangle;
+
+        if (!result.isNull())
+            break;
+    }
+
+    if (result.isNull())
+    {
+        /* Resize window to feat desirable size
+         * using max of available rectangles: */
+        QRect maxRectangle;
+        quint64 uMaxSquare = 0;
+        foreach (QRect item, rectanglesList)
+        {
+            const quint64 uSquare = item.width() * item.height();
+            if (uSquare > uMaxSquare)
+            {
+                uMaxSquare = uSquare;
+                maxRectangle = item;
+            }
+        }
+
+        result = rectangle;
+        result.moveTo(maxRectangle.x(), maxRectangle.y());
+        if (maxRectangle.right() < result.right())
+            result.setRight(maxRectangle.right());
+        if (maxRectangle.bottom() < result.bottom())
+            result.setBottom(maxRectangle.bottom());
+    }
+
+    return result;
+}
+
+/* static */
+QRegion UICommon::flip(const QRegion &region)
+{
+    QRegion result;
+    QVector<QRect> rectangles(region.rects());
+    foreach (QRect rectangle, rectangles)
+        result += QRect(rectangle.y(), rectangle.x(),
+                        rectangle.height(), rectangle.width());
+    return result;
+}
+
+/* static */
+void UICommon::centerWidget(QWidget *pWidget, QWidget *pRelative, bool fCanResize /* = true */)
+{
+    /* If necessary, pWidget's position is adjusted to make it fully visible within
+     * the available desktop area. If pWidget is bigger then this area, it will also
+     * be resized unless fCanResize is false or there is an inappropriate minimum
+     * size limit (in which case the top left corner will be simply aligned with the top
+     * left corner of the available desktop area). pWidget must be a top-level widget.
+     * pRelative may be any widget, but if it's not top-level itself, its top-level
+     * widget will be used for calculations. pRelative can also be NULL, in which case
+     * pWidget will be centered relative to the available desktop area. */
+
+    AssertReturnVoid(pWidget);
+    AssertReturnVoid(pWidget->isTopLevel());
+
+    QRect deskGeo, parentGeo;
+    if (pRelative)
+    {
+        pRelative = pRelative->window();
+        deskGeo = gpDesktop->availableGeometry(pRelative);
+        parentGeo = pRelative->frameGeometry();
+        // WORKAROUND:
+        // On X11/Gnome, geo/frameGeo.x() and y() are always 0 for top level
+        // widgets with parents, what a shame. Use mapToGlobal() to workaround.
+        QPoint d = pRelative->mapToGlobal(QPoint(0, 0));
+        d.rx() -= pRelative->geometry().x() - pRelative->x();
+        d.ry() -= pRelative->geometry().y() - pRelative->y();
+        parentGeo.moveTopLeft(d);
+    }
+    else
+    {
+        deskGeo = gpDesktop->availableGeometry();
+        parentGeo = deskGeo;
+    }
+
+    // WORKAROUND:
+    // On X11, there is no way to determine frame geometry (including WM
+    // decorations) before the widget is shown for the first time. Stupidly
+    // enumerate other top level widgets to find the thickest frame. The code
+    // is based on the idea taken from QDialog::adjustPositionInternal().
+
+    int iExtraW = 0;
+    int iExtraH = 0;
+
+    QWidgetList list = QApplication::topLevelWidgets();
+    QListIterator<QWidget*> it(list);
+    while ((iExtraW == 0 || iExtraH == 0) && it.hasNext())
+    {
+        int iFrameW, iFrameH;
+        QWidget *pCurrent = it.next();
+        if (!pCurrent->isVisible())
+            continue;
+
+        iFrameW = pCurrent->frameGeometry().width() - pCurrent->width();
+        iFrameH = pCurrent->frameGeometry().height() - pCurrent->height();
+
+        iExtraW = qMax(iExtraW, iFrameW);
+        iExtraH = qMax(iExtraH, iFrameH);
+    }
+
+    /* On non-X11 platforms, the following would be enough instead of the above workaround: */
+    // QRect geo = frameGeometry();
+    QRect geo = QRect(0, 0, pWidget->width() + iExtraW,
+                            pWidget->height() + iExtraH);
+
+    geo.moveCenter(QPoint(parentGeo.x() + (parentGeo.width() - 1) / 2,
+                          parentGeo.y() + (parentGeo.height() - 1) / 2));
+
+    /* Ensure the widget is within the available desktop area: */
+    QRect newGeo = normalizeGeometry(geo, deskGeo, fCanResize);
+#ifdef VBOX_WS_MAC
+    // WORKAROUND:
+    // No idea why, but Qt doesn't respect if there is a unified toolbar on the
+    // ::move call. So manually add the height of the toolbar before setting
+    // the position.
+    if (pRelative)
+        newGeo.translate(0, ::darwinWindowToolBarHeight(pWidget));
+#endif /* VBOX_WS_MAC */
+
+    pWidget->move(newGeo.topLeft());
+
+    if (   fCanResize
+        && (geo.width() != newGeo.width() || geo.height() != newGeo.height()))
+        pWidget->resize(newGeo.width() - iExtraW, newGeo.height() - iExtraH);
+}
+
+#ifdef VBOX_WS_X11
+typedef struct {
+/** User specified flags */
+uint32_t flags;
+/** User-specified position */
+int32_t x, y;
+/** User-specified size */
+int32_t width, height;
+/** Program-specified minimum size */
+int32_t min_width, min_height;
+/** Program-specified maximum size */
+int32_t max_width, max_height;
+/** Program-specified resize increments */
+int32_t width_inc, height_inc;
+/** Program-specified minimum aspect ratios */
+int32_t min_aspect_num, min_aspect_den;
+/** Program-specified maximum aspect ratios */
+int32_t max_aspect_num, max_aspect_den;
+/** Program-specified base size */
+int32_t base_width, base_height;
+/** Program-specified window gravity */
+uint32_t win_gravity;
+} xcb_size_hints_t;
+#endif /* VBOX_WS_X11 */
+
+/* static */
+void UICommon::setTopLevelGeometry(QWidget *pWidget, int x, int y, int w, int h)
+{
+    AssertPtrReturnVoid(pWidget);
+#ifdef VBOX_WS_X11
+# define QWINDOWSIZE_MAX ((1<<24)-1)
+    if (pWidget->isWindow() && pWidget->isVisible())
+    {
+        // WORKAROUND:
+        // X11 window managers are not required to accept geometry changes on
+        // the top-level window.  Unfortunately, current at Qt 5.6 and 5.7, Qt
+        // assumes that the change will succeed, and resizes all sub-windows
+        // unconditionally.  By calling ConfigureWindow directly, Qt will see
+        // our change request as an externally triggered one on success and not
+        // at all if it is rejected.
+        const double dDPR = gpDesktop->devicePixelRatio(pWidget);
+        uint16_t fMask =   XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y
+                         | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT;
+        uint32_t values[] = { (uint32_t)(x * dDPR), (uint32_t)(y * dDPR), (uint32_t)(w * dDPR), (uint32_t)(h * dDPR) };
+        xcb_configure_window(QX11Info::connection(), (xcb_window_t)pWidget->winId(),
+                             fMask, values);
+        xcb_size_hints_t hints;
+        hints.flags =   1 /* XCB_ICCCM_SIZE_HINT_US_POSITION */
+                      | 2 /* XCB_ICCCM_SIZE_HINT_US_SIZE */
+                      | 512 /* XCB_ICCCM_SIZE_P_WIN_GRAVITY */;
+        hints.x           = x * dDPR;
+        hints.y           = y * dDPR;
+        hints.width       = w * dDPR;
+        hints.height      = h * dDPR;
+        hints.min_width   = pWidget->minimumSize().width() * dDPR;
+        hints.min_height  = pWidget->minimumSize().height() * dDPR;
+        hints.max_width   = pWidget->maximumSize().width() * dDPR;
+        hints.max_height  = pWidget->maximumSize().height() * dDPR;
+        hints.width_inc   = pWidget->sizeIncrement().width() * dDPR;
+        hints.height_inc  = pWidget->sizeIncrement().height() * dDPR;
+        hints.base_width  = pWidget->baseSize().width() * dDPR;
+        hints.base_height = pWidget->baseSize().height() * dDPR;
+        hints.win_gravity = XCB_GRAVITY_STATIC;
+        if (hints.min_width > 0 || hints.min_height > 0)
+            hints.flags |= 16 /* XCB_ICCCM_SIZE_HINT_P_MIN_SIZE */;
+        if (hints.max_width < QWINDOWSIZE_MAX || hints.max_height < QWINDOWSIZE_MAX)
+            hints.flags |= 32 /* XCB_ICCCM_SIZE_HINT_P_MAX_SIZE */;
+        if (hints.width_inc > 0 || hints.height_inc)
+            hints.flags |=   64 /* XCB_ICCCM_SIZE_HINT_P_MIN_SIZE */
+                           | 256 /* XCB_ICCCM_SIZE_HINT_BASE_SIZE */;
+        xcb_change_property(QX11Info::connection(), XCB_PROP_MODE_REPLACE,
+                            (xcb_window_t)pWidget->winId(), XCB_ATOM_WM_NORMAL_HINTS,
+                            XCB_ATOM_WM_SIZE_HINTS, 32, sizeof(hints) >> 2, &hints);
+        xcb_flush(QX11Info::connection());
+    }
+    else
+        // WORKAROUND:
+        // Call the Qt method if the window is not visible as otherwise no
+        // Configure event will arrive to tell Qt what geometry we want.
+        pWidget->setGeometry(x, y, w, h);
+# else /* !VBOX_WS_X11 */
+    pWidget->setGeometry(x, y, w, h);
+# endif /* !VBOX_WS_X11 */
+}
+
+/* static */
+void UICommon::setTopLevelGeometry(QWidget *pWidget, const QRect &rect)
+{
+    UICommon::setTopLevelGeometry(pWidget, rect.x(), rect.y(), rect.width(), rect.height());
+}
+
+#if defined(VBOX_WS_X11)
+
+static char *XXGetProperty(Display *pDpy, Window windowHandle, Atom propType, const char *pszPropName)
+{
+    Atom propNameAtom = XInternAtom(pDpy, pszPropName, True /* only_if_exists */);
+    if (propNameAtom == None)
+        return NULL;
+
+    Atom actTypeAtom = None;
+    int actFmt = 0;
+    unsigned long nItems = 0;
+    unsigned long nBytesAfter = 0;
+    unsigned char *propVal = NULL;
+    int rc = XGetWindowProperty(pDpy, windowHandle, propNameAtom,
+                                0, LONG_MAX, False /* delete */,
+                                propType, &actTypeAtom, &actFmt,
+                                &nItems, &nBytesAfter, &propVal);
+    if (rc != Success)
+        return NULL;
+
+    return reinterpret_cast<char*>(propVal);
+}
+
+static Bool XXSendClientMessage(Display *pDpy, Window windowHandle, const char *pszMsg,
+                                unsigned long aData0 = 0, unsigned long aData1 = 0,
+                                unsigned long aData2 = 0, unsigned long aData3 = 0,
+                                unsigned long aData4 = 0)
+{
+    Atom msgAtom = XInternAtom(pDpy, pszMsg, True /* only_if_exists */);
+    if (msgAtom == None)
+        return False;
+
+    XEvent ev;
+
+    ev.xclient.type = ClientMessage;
+    ev.xclient.serial = 0;
+    ev.xclient.send_event = True;
+    ev.xclient.display = pDpy;
+    ev.xclient.window = windowHandle;
+    ev.xclient.message_type = msgAtom;
+
+    /* Always send as 32 bit for now: */
+    ev.xclient.format = 32;
+    ev.xclient.data.l[0] = aData0;
+    ev.xclient.data.l[1] = aData1;
+    ev.xclient.data.l[2] = aData2;
+    ev.xclient.data.l[3] = aData3;
+    ev.xclient.data.l[4] = aData4;
+
+    return XSendEvent(pDpy, DefaultRootWindow(pDpy), False,
+                      SubstructureRedirectMask, &ev) != 0;
+}
+
+#endif
+
+/* static */
+bool UICommon::activateWindow(WId wId, bool fSwitchDesktop /* = true */)
+{
+    RT_NOREF(fSwitchDesktop);
+    bool fResult = true;
+
+#if defined(VBOX_WS_WIN)
+
+    HWND handle = (HWND)wId;
+
+    if (IsIconic(handle))
+        fResult &= !!ShowWindow(handle, SW_RESTORE);
+    else if (!IsWindowVisible(handle))
+        fResult &= !!ShowWindow(handle, SW_SHOW);
+
+    fResult &= !!SetForegroundWindow(handle);
+
+#elif defined(VBOX_WS_X11)
+
+    Display *pDisplay = QX11Info::display();
+
+    if (fSwitchDesktop)
+    {
+        /* try to find the desktop ID using the NetWM property */
+        CARD32 *pDesktop = (CARD32 *) XXGetProperty(pDisplay, wId, XA_CARDINAL,
+                                                    "_NET_WM_DESKTOP");
+        if (pDesktop == NULL)
+            // WORKAROUND:
+            // if the NetWM properly is not supported try to find
+            // the desktop ID using the GNOME WM property.
+            pDesktop = (CARD32 *) XXGetProperty(pDisplay, wId, XA_CARDINAL,
+                                                "_WIN_WORKSPACE");
+
+        if (pDesktop != NULL)
+        {
+            Bool ok = XXSendClientMessage(pDisplay, DefaultRootWindow(pDisplay),
+                                          "_NET_CURRENT_DESKTOP",
+                                          *pDesktop);
+            if (!ok)
+            {
+                Log1WarningFunc(("Couldn't switch to pDesktop=%08X\n", pDesktop));
+                fResult = false;
+            }
+            XFree(pDesktop);
+        }
+        else
+        {
+            Log1WarningFunc(("Couldn't find a pDesktop ID for wId=%08X\n", wId));
+            fResult = false;
+        }
+    }
+
+    Bool ok = XXSendClientMessage(pDisplay, wId, "_NET_ACTIVE_WINDOW");
+    fResult &= !!ok;
+
+    XRaiseWindow(pDisplay, wId);
+
+#else
+
+    NOREF(wId);
+    NOREF(fSwitchDesktop);
+    AssertFailed();
+    fResult = false;
+
+#endif
+
+    if (!fResult)
+        Log1WarningFunc(("Couldn't activate wId=%08X\n", wId));
+
+    return fResult;
+}
+
+/* static */
+void UICommon::setCursor(QWidget *pWidget, const QCursor &cursor)
+{
+    if (!pWidget)
+        return;
+
+#ifdef VBOX_WS_X11
+    /* As reported in https://www.virtualbox.org/ticket/16348,
+     * in X11 QWidget::setCursor(..) call uses RENDER
+     * extension. Qt (before 5.11) fails to handle the case where the mentioned extension
+     * is missing. Please see https://codereview.qt-project.org/#/c/225665/ for Qt patch: */
+    if ((UICommon::qtRTMajorVersion() < 5) ||
+        (UICommon::qtRTMajorVersion() == 5 && UICommon::qtRTMinorVersion() < 11))
+    {
+        if (X11CheckExtension("RENDER"))
+            pWidget->setCursor(cursor);
+    }
+    else
+    {
+        pWidget->setCursor(cursor);
+    }
+#else
+    pWidget->setCursor(cursor);
+#endif
+}
+
+/* static */
+void UICommon::setCursor(QGraphicsWidget *pWidget, const QCursor &cursor)
+{
+    if (!pWidget)
+        return;
+
+#ifdef VBOX_WS_X11
+    /* As reported in https://www.virtualbox.org/ticket/16348,
+     * in X11 QGraphicsWidget::setCursor(..) call uses RENDER
+     * extension. Qt (before 5.11) fails to handle the case where the mentioned extension
+     * is missing. Please see https://codereview.qt-project.org/#/c/225665/ for Qt patch: */
+    if ((UICommon::qtRTMajorVersion() < 5) ||
+        (UICommon::qtRTMajorVersion() == 5 && UICommon::qtRTMinorVersion() < 11))
+    {
+        if (X11CheckExtension("RENDER"))
+            pWidget->setCursor(cursor);
+    }
+    else
+    {
+        pWidget->setCursor(cursor);
+    }
+#else
+    pWidget->setCursor(cursor);
+#endif
+}
+
+/* static */
+void UICommon::unsetCursor(QWidget *pWidget)
+{
+    if (!pWidget)
+        return;
+
+#ifdef VBOX_WS_X11
+    /* As reported in https://www.virtualbox.org/ticket/16348,
+     * in X11 QWidget::unsetCursor(..) call uses RENDER
+     * extension. Qt (before 5.11) fails to handle the case where the mentioned extension
+     * is missing. Please see https://codereview.qt-project.org/#/c/225665/ for Qt patch: */
+    if ((UICommon::qtRTMajorVersion() < 5) ||
+        (UICommon::qtRTMajorVersion() == 5 && UICommon::qtRTMinorVersion() < 11))
+    {
+        if (X11CheckExtension("RENDER"))
+            pWidget->unsetCursor();
+    }
+    else
+    {
+        pWidget->unsetCursor();
+    }
+#else
+    pWidget->unsetCursor();
+#endif
+}
+
+/* static */
+void UICommon::unsetCursor(QGraphicsWidget *pWidget)
+{
+    if (!pWidget)
+        return;
+
+#ifdef VBOX_WS_X11
+    /* As reported in https://www.virtualbox.org/ticket/16348,
+     * in X11 QGraphicsWidget::unsetCursor(..) call uses RENDER
+     * extension. Qt (before 5.11) fails to handle the case where the mentioned extension
+     * is missing. Please see https://codereview.qt-project.org/#/c/225665/ for Qt patch: */
+    if ((UICommon::qtRTMajorVersion() < 5) ||
+        (UICommon::qtRTMajorVersion() == 5 && UICommon::qtRTMinorVersion() < 11))
+    {
+        if (X11CheckExtension("RENDER"))
+            pWidget->unsetCursor();
+    }
+    else
+    {
+        pWidget->unsetCursor();
+    }
+#else
+    pWidget->unsetCursor();
+#endif
+}
+
+
+#if defined(VBOX_WS_X11)
+
+/* static */
+bool UICommon::supportsFullScreenMonitorsProtocolX11()
+{
+    /* This method tests whether the current X11 window manager supports full-screen mode as we need it.
+     * Unfortunately the EWMH specification was not fully clear about whether we can expect to find
+     * all of these atoms on the _NET_SUPPORTED root window property, so we have to test with all
+     * interesting window managers. If this fails for a user when you think it should succeed
+     * they should try executing:
+     * xprop -root | egrep -w '_NET_WM_FULLSCREEN_MONITORS|_NET_WM_STATE|_NET_WM_STATE_FULLSCREEN'
+     * in an X11 terminal window.
+     * All three strings should be found under a property called "_NET_SUPPORTED(ATOM)". */
+
+    /* Using a global to get at the display does not feel right, but that is how it is done elsewhere in the code. */
+    Display *pDisplay = QX11Info::display();
+    Atom atomSupported            = XInternAtom(pDisplay, "_NET_SUPPORTED",
+                                                True /* only_if_exists */);
+    Atom atomWMFullScreenMonitors = XInternAtom(pDisplay,
+                                                "_NET_WM_FULLSCREEN_MONITORS",
+                                                True /* only_if_exists */);
+    Atom atomWMState              = XInternAtom(pDisplay,
+                                                "_NET_WM_STATE",
+                                                True /* only_if_exists */);
+    Atom atomWMStateFullScreen    = XInternAtom(pDisplay,
+                                                "_NET_WM_STATE_FULLSCREEN",
+                                                True /* only_if_exists */);
+    bool fFoundFullScreenMonitors = false;
+    bool fFoundState              = false;
+    bool fFoundStateFullScreen    = false;
+    Atom atomType;
+    int cFormat;
+    unsigned long cItems;
+    unsigned long cbLeft;
+    Atom *pAtomHints;
+    int rc;
+    unsigned i;
+
+    if (   atomSupported == None || atomWMFullScreenMonitors == None
+        || atomWMState == None || atomWMStateFullScreen == None)
+        return false;
+    /* Get atom value: */
+    rc = XGetWindowProperty(pDisplay, DefaultRootWindow(pDisplay),
+                            atomSupported, 0, 0x7fffffff /*LONG_MAX*/,
+                            False /* delete */, XA_ATOM, &atomType,
+                            &cFormat, &cItems, &cbLeft,
+                            (unsigned char **)&pAtomHints);
+    if (rc != Success)
+        return false;
+    if (pAtomHints == NULL)
+        return false;
+    if (atomType == XA_ATOM && cFormat == 32 && cbLeft == 0)
+        for (i = 0; i < cItems; ++i)
+        {
+            if (pAtomHints[i] == atomWMFullScreenMonitors)
+                fFoundFullScreenMonitors = true;
+            if (pAtomHints[i] == atomWMState)
+                fFoundState = true;
+            if (pAtomHints[i] == atomWMStateFullScreen)
+                fFoundStateFullScreen = true;
+        }
+    XFree(pAtomHints);
+    return fFoundFullScreenMonitors && fFoundState && fFoundStateFullScreen;
+}
+
+/* static */
+bool UICommon::setFullScreenMonitorX11(QWidget *pWidget, ulong uScreenId)
+{
+    return XXSendClientMessage(QX11Info::display(),
+                               pWidget->window()->winId(),
+                               "_NET_WM_FULLSCREEN_MONITORS",
+                               uScreenId, uScreenId, uScreenId, uScreenId,
+                               1 /* Source indication (1 = normal application) */);
+}
+
+/* static */
+QVector<Atom> UICommon::flagsNetWmState(QWidget *pWidget)
+{
+    /* Get display: */
+    Display *pDisplay = QX11Info::display();
+
+    /* Prepare atoms: */
+    QVector<Atom> resultNetWmState;
+    Atom net_wm_state = XInternAtom(pDisplay, "_NET_WM_STATE", True /* only if exists */);
+
+    /* Get the size of the property data: */
+    Atom actual_type;
+    int iActualFormat;
+    ulong uPropertyLength;
+    ulong uBytesLeft;
+    uchar *pPropertyData = 0;
+    if (XGetWindowProperty(pDisplay, pWidget->window()->winId(),
+                           net_wm_state, 0, 0, False, XA_ATOM, &actual_type, &iActualFormat,
+                           &uPropertyLength, &uBytesLeft, &pPropertyData) == Success &&
+        actual_type == XA_ATOM && iActualFormat == 32)
+    {
+        resultNetWmState.resize(uBytesLeft / 4);
+        XFree((char*)pPropertyData);
+        pPropertyData = 0;
+
+        /* Fetch all data: */
+        if (XGetWindowProperty(pDisplay, pWidget->window()->winId(),
+                               net_wm_state, 0, resultNetWmState.size(), False, XA_ATOM, &actual_type, &iActualFormat,
+                               &uPropertyLength, &uBytesLeft, &pPropertyData) != Success)
+            resultNetWmState.clear();
+        else if (uPropertyLength != (ulong)resultNetWmState.size())
+            resultNetWmState.resize(uPropertyLength);
+
+        /* Put it into resultNetWmState: */
+        if (!resultNetWmState.isEmpty())
+            memcpy(resultNetWmState.data(), pPropertyData, resultNetWmState.size() * sizeof(Atom));
+        if (pPropertyData)
+            XFree((char*)pPropertyData);
+    }
+
+    /* Return result: */
+    return resultNetWmState;
+}
+
+/* static */
+bool UICommon::isFullScreenFlagSet(QWidget *pWidget)
+{
+    /* Get display: */
+    Display *pDisplay = QX11Info::display();
+
+    /* Prepare atoms: */
+    Atom net_wm_state_fullscreen = XInternAtom(pDisplay, "_NET_WM_STATE_FULLSCREEN", True /* only if exists */);
+
+    /* Check if flagsNetWmState(pWidget) contains full-screen flag: */
+    return flagsNetWmState(pWidget).contains(net_wm_state_fullscreen);
+}
+
+/* static */
+void UICommon::setFullScreenFlag(QWidget *pWidget)
+{
+    /* Get display: */
+    Display *pDisplay = QX11Info::display();
+
+    /* Prepare atoms: */
+    QVector<Atom> resultNetWmState = flagsNetWmState(pWidget);
+    Atom net_wm_state = XInternAtom(pDisplay, "_NET_WM_STATE", True /* only if exists */);
+    Atom net_wm_state_fullscreen = XInternAtom(pDisplay, "_NET_WM_STATE_FULLSCREEN", True /* only if exists */);
+
+    /* Append resultNetWmState with fullscreen flag if necessary: */
+    if (!resultNetWmState.contains(net_wm_state_fullscreen))
+    {
+        resultNetWmState.append(net_wm_state_fullscreen);
+        /* Apply property to widget again: */
+        XChangeProperty(pDisplay, pWidget->window()->winId(),
+                        net_wm_state, XA_ATOM, 32, PropModeReplace,
+                        (unsigned char*)resultNetWmState.data(), resultNetWmState.size());
+    }
+}
+
+/* static */
+void UICommon::setSkipTaskBarFlag(QWidget *pWidget)
+{
+    /* Get display: */
+    Display *pDisplay = QX11Info::display();
+
+    /* Prepare atoms: */
+    QVector<Atom> resultNetWmState = flagsNetWmState(pWidget);
+    Atom net_wm_state = XInternAtom(pDisplay, "_NET_WM_STATE", True /* only if exists */);
+    Atom net_wm_state_skip_taskbar = XInternAtom(pDisplay, "_NET_WM_STATE_SKIP_TASKBAR", True /* only if exists */);
+
+    /* Append resultNetWmState with skip-taskbar flag if necessary: */
+    if (!resultNetWmState.contains(net_wm_state_skip_taskbar))
+    {
+        resultNetWmState.append(net_wm_state_skip_taskbar);
+        /* Apply property to widget again: */
+        XChangeProperty(pDisplay, pWidget->window()->winId(),
+                        net_wm_state, XA_ATOM, 32, PropModeReplace,
+                        (unsigned char*)resultNetWmState.data(), resultNetWmState.size());
+    }
+}
+
+/* static */
+void UICommon::setSkipPagerFlag(QWidget *pWidget)
+{
+    /* Get display: */
+    Display *pDisplay = QX11Info::display();
+
+    /* Prepare atoms: */
+    QVector<Atom> resultNetWmState = flagsNetWmState(pWidget);
+    Atom net_wm_state = XInternAtom(pDisplay, "_NET_WM_STATE", True /* only if exists */);
+    Atom net_wm_state_skip_pager = XInternAtom(pDisplay, "_NET_WM_STATE_SKIP_PAGER", True /* only if exists */);
+
+    /* Append resultNetWmState with skip-pager flag if necessary: */
+    if (!resultNetWmState.contains(net_wm_state_skip_pager))
+    {
+        resultNetWmState.append(net_wm_state_skip_pager);
+        /* Apply property to widget again: */
+        XChangeProperty(pDisplay, pWidget->window()->winId(),
+                        net_wm_state, XA_ATOM, 32, PropModeReplace,
+                        (unsigned char*)resultNetWmState.data(), resultNetWmState.size());
+    }
+}
+
+/* static */
+void UICommon::setWMClass(QWidget *pWidget, const QString &strNameString, const QString &strClassString)
+{
+    /* Make sure all arguments set: */
+    AssertReturnVoid(pWidget && !strNameString.isNull() && !strClassString.isNull());
+
+    /* Define QByteArray objects to make sure data is alive within the scope: */
+    QByteArray nameByteArray;
+    /* Check the existence of RESOURCE_NAME env. variable and override name string if necessary: */
+    const char resourceName[] = "RESOURCE_NAME";
+    if (qEnvironmentVariableIsSet(resourceName))
+        nameByteArray = qgetenv(resourceName);
+    else
+        nameByteArray = strNameString.toLatin1();
+    QByteArray classByteArray = strClassString.toLatin1();
+
+    AssertReturnVoid(nameByteArray.data() && classByteArray.data());
+
+    XClassHint windowClass;
+    windowClass.res_name = nameByteArray.data();
+    windowClass.res_class = classByteArray.data();
+    /* Set WM_CLASS of the window to passed name and class strings: */
+    XSetClassHint(QX11Info::display(), pWidget->window()->winId(), &windowClass);
+}
+
+#endif /* VBOX_WS_X11 */
+
+/* static */
+void UICommon::setMinimumWidthAccordingSymbolCount(QSpinBox *pSpinBox, int cCount)
+{
+    /* Shame on Qt it hasn't stuff for tuning
+     * widget size suitable for reflecting content of desired size.
+     * For example QLineEdit, QSpinBox and similar widgets should have a methods
+     * to strict the minimum width to reflect at least [n] symbols. */
+
+    /* Load options: */
+    QStyleOptionSpinBox option;
+    option.initFrom(pSpinBox);
+
+    /* Acquire edit-field rectangle: */
+    QRect rect = pSpinBox->style()->subControlRect(QStyle::CC_SpinBox,
+                                                   &option,
+                                                   QStyle::SC_SpinBoxEditField,
+                                                   pSpinBox);
+
+    /* Calculate minimum-width magic: */
+    const int iSpinBoxWidth = pSpinBox->width();
+    const int iSpinBoxEditFieldWidth = rect.width();
+    const int iSpinBoxDelta = qMax(0, iSpinBoxWidth - iSpinBoxEditFieldWidth);
+    QFontMetrics metrics(pSpinBox->font(), pSpinBox);
+    const QString strDummy(cCount, '0');
+    const int iTextWidth = metrics.width(strDummy);
+
+    /* Tune spin-box minimum-width: */
+    pSpinBox->setMinimumWidth(iTextWidth + iSpinBoxDelta);
+}
+
+QString UICommon::vmGuestOSFamilyDescription(const QString &strFamilyId) const
+{
+    AssertMsg(m_guestOSFamilyDescriptions.contains(strFamilyId),
+              ("Family ID incorrect: '%s'.", strFamilyId.toLatin1().constData()));
+    return m_guestOSFamilyDescriptions.value(strFamilyId);
+}
+
+QList<CGuestOSType> UICommon::vmGuestOSTypeList(const QString &strFamilyId) const
+{
+    AssertMsg(m_guestOSFamilyIDs.contains(strFamilyId),
+              ("Family ID incorrect: '%s'.", strFamilyId.toLatin1().constData()));
+    return m_guestOSFamilyIDs.contains(strFamilyId) ?
+           m_guestOSTypes[m_guestOSFamilyIDs.indexOf(strFamilyId)] : QList<CGuestOSType>();
+}
+
+CGuestOSType UICommon::vmGuestOSType(const QString &strTypeId,
+                                       const QString &strFamilyId /* = QString() */) const
+{
+    QList<CGuestOSType> list;
+    if (m_guestOSFamilyIDs.contains(strFamilyId))
+    {
+        list = m_guestOSTypes.at(m_guestOSFamilyIDs.indexOf(strFamilyId));
+    }
+    else
+    {
+        for (int i = 0; i < m_guestOSFamilyIDs.size(); ++i)
+            list += m_guestOSTypes.at(i);
+    }
+    for (int j = 0; j < list.size(); ++j)
+        if (!list.at(j).GetId().compare(strTypeId))
+            return list.at(j);
+    return CGuestOSType();
+}
+
+QString UICommon::vmGuestOSTypeDescription(const QString &strTypeId) const
+{
+    for (int i = 0; i < m_guestOSFamilyIDs.size(); ++i)
+    {
+        QList<CGuestOSType> list(m_guestOSTypes[i]);
+        for (int j = 0; j < list.size(); ++j)
+            if (!list.at(j).GetId().compare(strTypeId))
+                return list.at(j).GetDescription();
+    }
+    return QString();
+}
+
+/* static */
+bool UICommon::isDOSType(const QString &strOSTypeId)
+{
+    if (   strOSTypeId.left(3) == "dos"
+        || strOSTypeId.left(3) == "win"
+        || strOSTypeId.left(3) == "os2")
+        return true;
+
+    return false;
+}
+
+/* static */
+bool UICommon::switchToMachine(CMachine &comMachine)
+{
+#ifdef VBOX_WS_MAC
+    ULONG64 id = comMachine.ShowConsoleWindow();
+#else
+    WId id = (WId)comMachine.ShowConsoleWindow();
+#endif
+
+    AssertWrapperOk(comMachine);
+    if (!comMachine.isOk())
+        return false;
+
+    // WORKAROUND:
+    // winId = 0 it means the console window has already done everything
+    // necessary to implement the "show window" semantics.
+    if (id == 0)
+        return true;
+
+#if defined(VBOX_WS_WIN) || defined(VBOX_WS_X11)
+
+    return activateWindow(id, true);
+
+#elif defined(VBOX_WS_MAC)
+
+    // WORKAROUND:
+    // This is just for the case were the other process cannot steal
+    // the focus from us. It will send us a PSN so we can try.
+    ProcessSerialNumber psn;
+    psn.highLongOfPSN = id >> 32;
+    psn.lowLongOfPSN = (UInt32)id;
+# ifdef __clang__
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+    OSErr rc = ::SetFrontProcess(&psn);
+#  pragma GCC diagnostic pop
+# else
+    OSErr rc = ::SetFrontProcess(&psn);
+# endif
+    if (!rc)
+        Log(("GUI: %#RX64 couldn't do SetFrontProcess on itself, the selector (we) had to do it...\n", id));
+    else
+        Log(("GUI: Failed to bring %#RX64 to front. rc=%#x\n", id, rc));
+    return !rc;
+
+#else
+
+    return false;
+
+#endif
+}
+
+bool UICommon::launchMachine(CMachine &comMachine, LaunchMode enmLaunchMode /* = LaunchMode_Default */)
+{
+    /* Switch to machine window(s) if possible: */
+    if (   comMachine.GetSessionState() == KSessionState_Locked /* precondition for CanShowConsoleWindow() */
+        && comMachine.CanShowConsoleWindow())
+    {
+        switch (uiType())
+        {
+            /* For Selector UI: */
+            case UIType_SelectorUI:
+            {
+                /* Just switch to existing VM window: */
+                return switchToMachine(comMachine);
+            }
+            /* For Runtime UI: */
+            case UIType_RuntimeUI:
+            {
+                /* Only separate UI process can reach that place.
+                 * Switch to existing VM window and exit. */
+                switchToMachine(comMachine);
+                return false;
+            }
+        }
+    }
+
+    if (enmLaunchMode != LaunchMode_Separate)
+    {
+        /* Make sure machine-state is one of required: */
+        KMachineState enmState = comMachine.GetState(); NOREF(enmState);
+        AssertMsg(   enmState == KMachineState_PoweredOff
+                  || enmState == KMachineState_Saved
+                  || enmState == KMachineState_Teleported
+                  || enmState == KMachineState_Aborted
+                  , ("Machine must be PoweredOff/Saved/Teleported/Aborted (%d)", enmState));
+    }
+
+    /* Create empty session instance: */
+    CSession comSession;
+    comSession.createInstance(CLSID_Session);
+    if (comSession.isNull())
+    {
+        msgCenter().cannotOpenSession(comSession);
+        return false;
+    }
+
+    /* Configure environment: */
+    QString strEnv;
+#ifdef Q_OS_WIN
+    /* Allow started VM process to be foreground window: */
+    AllowSetForegroundWindow(ASFW_ANY);
+#endif
+#ifdef VBOX_WS_X11
+    /* Make sure VM process will start on the same display as the VM selector: */
+    const char *pDisplay = RTEnvGet("DISPLAY");
+    if (pDisplay)
+        strEnv.append(QString("DISPLAY=%1\n").arg(pDisplay));
+    const char *pXauth = RTEnvGet("XAUTHORITY");
+    if (pXauth)
+        strEnv.append(QString("XAUTHORITY=%1\n").arg(pXauth));
+#endif
+    QString strType;
+    switch (enmLaunchMode)
+    {
+        case LaunchMode_Default:  strType = ""; break;
+        case LaunchMode_Separate: strType = isSeparateProcess() ? "headless" : "separate"; break;
+        case LaunchMode_Headless: strType = "headless"; break;
+        default: AssertFailedReturn(false);
+    }
+
+    /* Prepare "VM spawning" progress: */
+    CProgress comProgress = comMachine.LaunchVMProcess(comSession, strType, strEnv);
+    if (!comMachine.isOk())
+    {
+        /* If the VM is started separately and the VM process is already running, then it is OK. */
+        if (enmLaunchMode == LaunchMode_Separate)
+        {
+            KMachineState enmState = comMachine.GetState();
+            if (   enmState >= KMachineState_FirstOnline
+                && enmState <= KMachineState_LastOnline)
+            {
+                /* Already running. */
+                return true;
+            }
+        }
+
+        msgCenter().cannotOpenSession(comMachine);
+        return false;
+    }
+
+    /* Postpone showing "VM spawning" progress.
+     * Hope 1 minute will be enough to spawn any running VM silently,
+     * otherwise we better show the progress...
+     * If starting separately, then show the progress now. */
+    int iSpawningDuration = enmLaunchMode == LaunchMode_Separate ? 0 : 60000;
+    msgCenter().showModalProgressDialog(comProgress, comMachine.GetName(),
+                                        ":/progress_start_90px.png", 0, iSpawningDuration);
+    if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
+        msgCenter().cannotOpenSession(comProgress, comMachine.GetName());
+
+    /* Unlock machine, close session: */
+    comSession.UnlockMachine();
+
+    /* True finally: */
+    return true;
+}
+
+CSession UICommon::openSession(const QUuid &uId, KLockType lockType /* = KLockType_Shared */)
+{
+    /* Prepare session: */
+    CSession comSession;
+
+    /* Simulate try-catch block: */
+    bool fSuccess = false;
+    do
+    {
+        /* Create empty session instance: */
+        comSession.createInstance(CLSID_Session);
+        if (comSession.isNull())
+        {
+            msgCenter().cannotOpenSession(comSession);
+            break;
+        }
+
+        /* Search for the corresponding machine: */
+        CMachine comMachine = m_comVBox.FindMachine(uId.toString());
+        if (comMachine.isNull())
+        {
+            msgCenter().cannotFindMachineById(m_comVBox, uId);
+            break;
+        }
+
+        if (lockType == KLockType_VM)
+            comSession.SetName("GUI/Qt");
+
+        /* Lock found machine to session: */
+        comMachine.LockMachine(comSession, lockType);
+        if (!comMachine.isOk())
+        {
+            msgCenter().cannotOpenSession(comMachine);
+            break;
+        }
+
+        /* Pass the language ID as the property to the guest: */
+        if (comSession.GetType() == KSessionType_Shared)
+        {
+            CMachine comStartedMachine = comSession.GetMachine();
+            /* Make sure that the language is in two letter code.
+             * Note: if languageId() returns an empty string lang.name() will
+             * return "C" which is an valid language code. */
+            QLocale lang(UICommon::languageId());
+            comStartedMachine.SetGuestPropertyValue("/VirtualBox/HostInfo/GUI/LanguageID", lang.name());
+        }
+
+        /* Success finally: */
+        fSuccess = true;
+    }
+    while (0);
+    /* Cleanup try-catch block: */
+    if (!fSuccess)
+        comSession.detach();
+
+    /* Return session: */
+    return comSession;
+}
+
+void UICommon::startMediumEnumeration(const CMediumVector &comMedia /* = CMediumVector() */)
+{
+    /* Make sure UICommon is already valid: */
+    AssertReturnVoid(m_fValid);
+    /* Ignore the request during UICommon cleanup: */
+    if (s_fCleaningUp)
+        return;
+    /* Ignore the request during startup snapshot restoring: */
+    if (shouldRestoreCurrentSnapshot())
+        return;
+
+    /* Make sure medium-enumerator is already created: */
+    if (!m_pMediumEnumerator)
+        return;
+    /* Make sure enumeration is not already started: */
+    if (m_pMediumEnumerator->isMediumEnumerationInProgress())
+        return;
+
+    /* Redirect request to medium-enumerator under proper lock: */
+    if (m_meCleanupProtectionToken.tryLockForRead())
+    {
+        if (m_pMediumEnumerator)
+            m_pMediumEnumerator->startMediumEnumeration(comMedia);
+        m_meCleanupProtectionToken.unlock();
+    }
+}
+
+void UICommon::enumerateAdditionalMedium(const CMedium &comMedium)
+{
+    /* Make sure UICommon is already valid: */
+    AssertReturnVoid(m_fValid);
+    /* Ignore the request during UICommon cleanup: */
+    if (s_fCleaningUp)
+        return;
+    /* Ignore the request during startup snapshot restoring: */
+    if (shouldRestoreCurrentSnapshot())
+        return;
+
+    /* Make sure medium-enumerator is already created: */
+    if (!m_pMediumEnumerator)
+        return;
+
+    /* Redirect request to medium-enumerator under proper lock: */
+    if (m_meCleanupProtectionToken.tryLockForRead())
+    {
+        if (m_pMediumEnumerator)
+            m_pMediumEnumerator->enumerateAdditionalMedium(comMedium);
+        m_meCleanupProtectionToken.unlock();
+    }
+}
+
+void UICommon::refreshMedia()
+{
+    /* Make sure UICommon is already valid: */
+    AssertReturnVoid(m_fValid);
+    /* Ignore the request during UICommon cleanup: */
+    if (s_fCleaningUp)
+        return;
+    /* Ignore the request during startup snapshot restoring: */
+    if (shouldRestoreCurrentSnapshot())
+        return;
+
+    /* Make sure medium-enumerator is already created: */
+    if (!m_pMediumEnumerator)
+        return;
+    /* Make sure enumeration is not already started: */
+    if (m_pMediumEnumerator->isMediumEnumerationInProgress())
+        return;
+
+    /* We assume it's safe to call it without locking,
+     * since we are performing blocking operation here. */
+    m_pMediumEnumerator->refreshMedia();
+}
+
+bool UICommon::isMediumEnumerationInProgress() const
+{
+    /* Redirect request to medium-enumerator: */
+    return    m_pMediumEnumerator
+           && m_pMediumEnumerator->isMediumEnumerationInProgress();
+}
+
+#ifdef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
+bool UICommon::isFullMediumEnumerationRequested() const
+{
+    /* Redirect request to medium-enumerator: */
+    return    m_pMediumEnumerator
+           && m_pMediumEnumerator->isFullMediumEnumerationRequested();
+}
+#endif
+
+UIMedium UICommon::medium(const QUuid &uMediumID) const
+{
+    if (m_meCleanupProtectionToken.tryLockForRead())
+    {
+        /* Redirect call to medium-enumerator: */
+        UIMedium guiMedium;
+        if (m_pMediumEnumerator)
+            guiMedium = m_pMediumEnumerator->medium(uMediumID);
+        m_meCleanupProtectionToken.unlock();
+        return guiMedium;
+    }
+    return UIMedium();
+}
+
+QList<QUuid> UICommon::mediumIDs() const
+{
+    if (m_meCleanupProtectionToken.tryLockForRead())
+    {
+        /* Redirect call to medium-enumerator: */
+        QList<QUuid> listOfMedia;
+        if (m_pMediumEnumerator)
+            listOfMedia = m_pMediumEnumerator->mediumIDs();
+        m_meCleanupProtectionToken.unlock();
+        return listOfMedia;
+    }
+    return QList<QUuid>();
+}
+
+void UICommon::createMedium(const UIMedium &guiMedium)
+{
+    if (m_meCleanupProtectionToken.tryLockForRead())
+    {
+        /* Create medium in medium-enumerator: */
+        if (m_pMediumEnumerator)
+            m_pMediumEnumerator->createMedium(guiMedium);
+        m_meCleanupProtectionToken.unlock();
+    }
+}
+
+#ifndef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
+void UICommon::deleteMedium(const QUuid &uMediumID)
+{
+    if (m_meCleanupProtectionToken.tryLockForRead())
+    {
+        /* Delete medium from medium-enumerator: */
+        if (m_pMediumEnumerator)
+            m_pMediumEnumerator->deleteMedium(uMediumID);
+        m_meCleanupProtectionToken.unlock();
+    }
+}
+#endif
+
+QUuid UICommon::openMedium(UIMediumDeviceType enmMediumType, QString strMediumLocation, QWidget *pParent /* = 0 */)
+{
+    /* Convert to native separators: */
+    strMediumLocation = QDir::toNativeSeparators(strMediumLocation);
+
+    /* Initialize variables: */
+    CVirtualBox comVBox = virtualBox();
+
+    /* Open corresponding medium: */
+    CMedium comMedium = comVBox.OpenMedium(strMediumLocation, mediumTypeToGlobal(enmMediumType), KAccessMode_ReadWrite, false);
+
+    if (comVBox.isOk())
+    {
+        /* Prepare vbox medium wrapper: */
+        UIMedium guiMedium = medium(comMedium.GetId());
+
+        /* First of all we should test if that medium already opened: */
+        if (guiMedium.isNull())
+        {
+            /* And create new otherwise: */
+            guiMedium = UIMedium(comMedium, enmMediumType, KMediumState_Created);
+            createMedium(guiMedium);
+        }
+
+        /* Return guiMedium id: */
+        return guiMedium.id();
+    }
+    else
+        msgCenter().cannotOpenMedium(comVBox, strMediumLocation, pParent);
+
+    return QUuid();
+}
+
+QUuid UICommon::openMediumWithFileOpenDialog(UIMediumDeviceType enmMediumType, QWidget *pParent,
+                                               const QString &strDefaultFolder /* = QString() */,
+                                               bool fUseLastFolder /* = false */)
+{
+    /* Initialize variables: */
+    QList<QPair <QString, QString> > filters;
+    QStringList backends;
+    QStringList prefixes;
+    QString strFilter;
+    QString strTitle;
+    QString allType;
+    QString strLastFolder = defaultFolderPathForType(enmMediumType);
+
+    /* For DVDs and Floppies always check first the last recently used medium folder. For hard disk use
+       the caller's setting: */
+    fUseLastFolder = (enmMediumType == UIMediumDeviceType_DVD) || (enmMediumType == UIMediumDeviceType_Floppy);
+
+    switch (enmMediumType)
+    {
+        case UIMediumDeviceType_HardDisk:
+        {
+            filters = HDDBackends(virtualBox());
+            strTitle = tr("Please choose a virtual hard disk file");
+            allType = tr("All virtual hard disk files (%1)");
+            break;
+        }
+        case UIMediumDeviceType_DVD:
+        {
+            filters = DVDBackends(virtualBox());
+            strTitle = tr("Please choose a virtual optical disk file");
+            allType = tr("All virtual optical disk files (%1)");
+            break;
+        }
+        case UIMediumDeviceType_Floppy:
+        {
+            filters = FloppyBackends(virtualBox());
+            strTitle = tr("Please choose a virtual floppy disk file");
+            allType = tr("All virtual floppy disk files (%1)");
+            break;
+        }
+        default:
+            break;
+    }
+    QString strHomeFolder = fUseLastFolder && !strLastFolder.isEmpty() ? strLastFolder :
+                            strDefaultFolder.isEmpty() ? homeFolder() : strDefaultFolder;
+
+    /* 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, 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 dialog has some result: */
+    if (!files.empty() && !files[0].isEmpty())
+    {
+        QUuid uMediumId = openMedium(enmMediumType, files[0], pParent);
+        if (enmMediumType == UIMediumDeviceType_DVD || enmMediumType == UIMediumDeviceType_Floppy ||
+            (enmMediumType == UIMediumDeviceType_HardDisk && fUseLastFolder))
+            updateRecentlyUsedMediumListAndFolder(enmMediumType, medium(uMediumId).location());
+        return uMediumId;
+    }
+    return QUuid();
+}
+
+
+/**
+ * Helper for createVisoMediumWithVisoCreator.
+ * @returns IPRT status code.
+ * @param   pStrmDst            Where to write the quoted string.
+ * @param   pszPrefix           Stuff to put in front of it.
+ * @param   rStr                The string to quote and write out.
+ * @param   pszPrefix           Stuff to put after it.
+ */
+DECLINLINE(int) visoWriteQuotedString(PRTSTREAM pStrmDst, const char *pszPrefix, QString const &rStr, const char *pszPostFix)
+{
+    QByteArray const utf8Array   = rStr.toUtf8();
+    const char      *apszArgv[2] = { utf8Array.constData(), NULL };
+    char            *pszQuoted;
+    int vrc = RTGetOptArgvToString(&pszQuoted, apszArgv, RTGETOPTARGV_CNV_QUOTE_BOURNE_SH);
+    if (RT_SUCCESS(vrc))
+    {
+        if (pszPrefix)
+            vrc = RTStrmPutStr(pStrmDst, pszPrefix);
+        if (RT_SUCCESS(vrc))
+        {
+            vrc = RTStrmPutStr(pStrmDst, pszQuoted);
+            if (pszPostFix && RT_SUCCESS(vrc))
+                vrc = RTStrmPutStr(pStrmDst, pszPostFix);
+        }
+        RTStrFree(pszQuoted);
+    }
+
+    return vrc;
+}
+
+
+QUuid UICommon::openMediumCreatorDialog(QWidget *pParent, UIMediumDeviceType  enmMediumType,
+                                          const QString &strDefaultFolder /* = QString() */, const QString &strMachineName /* = QString() */,
+                                          const QString &strMachineGuestOSTypeId /*= QString() */)
+{
+    QUuid uMediumId;
+
+    switch (enmMediumType)
+    {
+        case UIMediumDeviceType_Floppy:
+            uMediumId = showCreateFloppyDiskDialog(pParent, strDefaultFolder, strMachineName);
+            break;
+        case UIMediumDeviceType_HardDisk:
+            uMediumId = createHDWithNewHDWizard(pParent, strDefaultFolder, strMachineName, strMachineGuestOSTypeId);
+            break;
+        case UIMediumDeviceType_DVD:
+            uMediumId = createVisoMediumWithVisoCreator(pParent, strDefaultFolder, strMachineName);
+            break;
+        default:
+            break;
+    }
+    if (!uMediumId.isNull())
+    {
+        /* Update the recent medium list only if the mdium type is DVD or floppy. In case of hard disk
+           update those only if there is no vm context: */
+        if (enmMediumType == UIMediumDeviceType_DVD || enmMediumType == UIMediumDeviceType_Floppy ||
+            (enmMediumType == UIMediumDeviceType_HardDisk && strMachineName.isEmpty()))
+            updateRecentlyUsedMediumListAndFolder(enmMediumType, medium(uMediumId).location());
+    }
+    return uMediumId;
+}
+
+QUuid UICommon::createVisoMediumWithVisoCreator(QWidget *pParent, const QString &strDefaultFolder /* = QString */,
+                                                  const QString &strMachineName /* = QString */)
+{
+    QString strVisoSaveFolder(strDefaultFolder);
+    if (strVisoSaveFolder.isEmpty())
+        strVisoSaveFolder = defaultFolderPathForType(UIMediumDeviceType_DVD);
+
+    QWidget *pDialogParent = windowManager().realParentWindow(pParent);
+    UIVisoCreator *pVisoCreator = new UIVisoCreator(pDialogParent, strMachineName);
+
+    if (!pVisoCreator)
+        return QString();
+    windowManager().registerNewParent(pVisoCreator, pDialogParent);
+    pVisoCreator->setCurrentPath(gEDataManager->visoCreatorRecentFolder());
+
+    if (pVisoCreator->exec(false /* not application modal */))
+    {
+        QStringList files = pVisoCreator->entryList();
+        QString strVisoName = pVisoCreator->visoName();
+        if (strVisoName.isEmpty())
+            strVisoName = strMachineName;
+
+        if (files.empty() || files[0].isEmpty())
+        {
+            delete pVisoCreator;
+            return QUuid();
+        }
+
+        gEDataManager->setVISOCreatorRecentFolder(pVisoCreator->currentPath());
+
+        /* Produce the VISO. */
+        char szVisoPath[RTPATH_MAX];
+        QString strFileName = QString("%1%2").arg(strVisoName).arg(".viso");
+        int vrc = RTPathJoin(szVisoPath, sizeof(szVisoPath), strVisoSaveFolder.toUtf8().constData(), strFileName.toUtf8().constData());
+        if (RT_SUCCESS(vrc))
+        {
+            PRTSTREAM pStrmViso;
+            vrc = RTStrmOpen(szVisoPath, "w", &pStrmViso);
+            if (RT_SUCCESS(vrc))
+            {
+                RTUUID Uuid;
+                vrc = RTUuidCreate(&Uuid);
+                if (RT_SUCCESS(vrc))
+                {
+                    RTStrmPrintf(pStrmViso, "--iprt-iso-maker-file-marker-bourne-sh %RTuuid\n", &Uuid);
+                    vrc = visoWriteQuotedString(pStrmViso, "--volume-id=", strVisoName, "\n");
+
+                    for (int iFile = 0; iFile < files.size() && RT_SUCCESS(vrc); iFile++)
+                        vrc = visoWriteQuotedString(pStrmViso, NULL, files[iFile], "\n");
+
+                    /* Append custom options if any to the file: */
+                    const QStringList &customOptions = pVisoCreator->customOptions();
+                    foreach (QString strLine, customOptions)
+                        RTStrmPrintf(pStrmViso, "%s\n", strLine.toUtf8().constData());
+
+                    RTStrmFlush(pStrmViso);
+                    if (RT_SUCCESS(vrc))
+                        vrc = RTStrmError(pStrmViso);
+                }
+
+                RTStrmClose(pStrmViso);
+            }
+        }
+
+        /* Done. */
+        if (RT_SUCCESS(vrc))
+        {
+            delete pVisoCreator;
+            return openMedium(UIMediumDeviceType_DVD, QString(szVisoPath), pParent);
+        }
+        /** @todo error message. */
+        else
+        {
+            delete pVisoCreator;
+            return QUuid();
+        }
+    }
+    delete pVisoCreator;
+    return QUuid();
+}
+
+QUuid UICommon::showCreateFloppyDiskDialog(QWidget *pParent, const QString &strDefaultFolder /* QString() */,
+                                             const QString &strMachineName /* = QString() */ )
+{
+    QString strStartPath(strDefaultFolder);
+
+    if (strStartPath.isEmpty())
+        strStartPath = defaultFolderPathForType(UIMediumDeviceType_Floppy);
+
+    QWidget *pDialogParent = windowManager().realParentWindow(pParent);
+
+    UIFDCreationDialog *pDialog = new UIFDCreationDialog(pParent, strStartPath, strMachineName);
+    if (!pDialog)
+        return QUuid();
+    windowManager().registerNewParent(pDialog, pDialogParent);
+
+    if (pDialog->exec())
+    {
+        delete pDialog;
+        return pDialog->mediumID();
+    }
+    delete pDialog;
+    return QUuid();
+}
+
+int UICommon::openMediumSelectorDialog(QWidget *pParent, UIMediumDeviceType  enmMediumType, QUuid &outUuid,
+                                         const QString &strMachineFolder, const QString &strMachineName,
+                                         const QString &strMachineGuestOSTypeId, bool fEnableCreate)
+{
+    QWidget *pDialogParent = windowManager().realParentWindow(pParent);
+    QPointer<UIMediumSelector> pSelector = new UIMediumSelector(enmMediumType, strMachineName,
+                                                                strMachineFolder, strMachineGuestOSTypeId, pDialogParent);
+
+    if (!pSelector)
+        return static_cast<int>(UIMediumSelector::ReturnCode_Rejected);
+    pSelector->setEnableCreateAction(fEnableCreate);
+    windowManager().registerNewParent(pSelector, pDialogParent);
+
+    int iResult = pSelector->exec(false);
+    UIMediumSelector::ReturnCode returnCode;
+
+    if (iResult >= static_cast<int>(UIMediumSelector::ReturnCode_Max) || iResult < 0)
+        returnCode = UIMediumSelector::ReturnCode_Rejected;
+    else
+        returnCode = static_cast<UIMediumSelector::ReturnCode>(iResult);
+
+    if (returnCode == UIMediumSelector::ReturnCode_Accepted)
+    {
+        QList<QUuid> selectedMediumIds = pSelector->selectedMediumIds();
+
+        /* Currently we only care about the 0th since we support single selection by intention: */
+        if (selectedMediumIds.isEmpty())
+            returnCode = UIMediumSelector::ReturnCode_Rejected;
+        else
+        {
+            outUuid = selectedMediumIds[0];
+            updateRecentlyUsedMediumListAndFolder(enmMediumType, medium(outUuid).location());
+        }
+    }
+    delete pSelector;
+    return static_cast<int>(returnCode);
+}
+
+QUuid UICommon::createHDWithNewHDWizard(QWidget *pParent,  const QString &strMachineFolder /* = QString() */,
+                                          const QString &strMachineName /* = QString() */,
+                                          const QString &strMachineGuestOSTypeId  /* = QString() */)
+{
+    /* Initialize variables: */
+    QString strDefaultFolder(strMachineFolder);
+    if (strDefaultFolder.isEmpty())
+        strDefaultFolder = defaultFolderPathForType(UIMediumDeviceType_HardDisk);
+
+    /* In case we dont have a 'guest os type id' default back to 'Other': */
+    const CGuestOSType comGuestOSType = virtualBox().GetGuestOSType(!strMachineGuestOSTypeId.isEmpty() ? strMachineGuestOSTypeId : "Other");
+    QString strDiskName = findUniqueFileName(strDefaultFolder,
+                                             !strMachineName.isEmpty() ? strMachineName : "NewVirtualDisk");
+    /* Show New VD wizard: */
+    UISafePointerWizardNewVD pWizard = new UIWizardNewVD(pParent, strDiskName, strDefaultFolder, comGuestOSType.GetRecommendedHDD());
+
+    if (!pWizard)
+        return QUuid();
+    QWidget *pDialogParent = windowManager().realParentWindow(pParent);
+    windowManager().registerNewParent(pWizard, pDialogParent);
+    pWizard->prepare();
+
+    const QUuid uResult = pWizard->exec() == QDialog::Accepted ? pWizard->virtualDisk().GetId() : QUuid();
+    if (pWizard)
+        delete pWizard;
+    return uResult;
+}
+
+void UICommon::prepareStorageMenu(QMenu &menu,
+                                    QObject *pListener, const char *pszSlotName,
+                                    const CMachine &comMachine, const QString &strControllerName, const StorageSlot &storageSlot)
+{
+    /* Current attachment attributes: */
+    const CMediumAttachment comCurrentAttachment = comMachine.GetMediumAttachment(strControllerName,
+                                                                                  storageSlot.port,
+                                                                                  storageSlot.device);
+    const CMedium comCurrentMedium = comCurrentAttachment.GetMedium();
+    const QUuid uCurrentID = comCurrentMedium.isNull() ? QUuid() : comCurrentMedium.GetId();
+    const QString strCurrentLocation = comCurrentMedium.isNull() ? QString() : comCurrentMedium.GetLocation();
+
+    /* Other medium-attachments of same machine: */
+    const CMediumAttachmentVector comAttachments = comMachine.GetMediumAttachments();
+
+    /* Determine device & medium types: */
+    const UIMediumDeviceType enmMediumType = mediumTypeToLocal(comCurrentAttachment.GetType());
+    AssertMsgReturnVoid(enmMediumType != UIMediumDeviceType_Invalid, ("Incorrect storage medium type!\n"));
+
+    /* Prepare open-existing-medium action: */
+    QAction *pActionOpenExistingMedium = menu.addAction(UIIconPool::iconSet(":/select_file_16px.png"),
+                                                        QString(), pListener, pszSlotName);
+    pActionOpenExistingMedium->setData(QVariant::fromValue(UIMediumTarget(strControllerName, comCurrentAttachment.GetPort(),
+                                                                          comCurrentAttachment.GetDevice(), enmMediumType)));
+    pActionOpenExistingMedium->setText(QApplication::translate("UIMachineSettingsStorage", "Choose/Create a disk image...",
+                                                               "This is used for hard disks, optical media and floppies"));
+
+
+    /* Prepare open medium file action: */
+    QAction *pActionFileSelector = menu.addAction(UIIconPool::iconSet(":/select_file_16px.png"),
+                                                  QString(), pListener, pszSlotName);
+    pActionFileSelector->setData(QVariant::fromValue(UIMediumTarget(strControllerName, comCurrentAttachment.GetPort(),
+                                                                    comCurrentAttachment.GetDevice(), enmMediumType,
+                                                                    UIMediumTarget::UIMediumTargetType_WithFileDialog)));
+    pActionFileSelector->setText(QApplication::translate("UIMachineSettingsStorage", "Choose a disk file...",
+                                                         "This is used for selecting an existing disk file"));
+
+
+    /* Insert separator: */
+    menu.addSeparator();
+
+    /* Get existing-host-drive vector: */
+    CMediumVector comMedia;
+    switch (enmMediumType)
+    {
+        case UIMediumDeviceType_DVD:    comMedia = host().GetDVDDrives(); break;
+        case UIMediumDeviceType_Floppy: comMedia = host().GetFloppyDrives(); break;
+        default: break;
+    }
+    /* Prepare choose-existing-host-drive actions: */
+    foreach (const CMedium &comMedium, comMedia)
+    {
+        /* Make sure host-drive usage is unique: */
+        bool fIsHostDriveUsed = false;
+        foreach (const CMediumAttachment &comOtherAttachment, comAttachments)
+        {
+            if (comOtherAttachment != comCurrentAttachment)
+            {
+                const CMedium &comOtherMedium = comOtherAttachment.GetMedium();
+                if (!comOtherMedium.isNull() && comOtherMedium.GetId() == comMedium.GetId())
+                {
+                    fIsHostDriveUsed = true;
+                    break;
+                }
+            }
+        }
+        /* If host-drives usage is unique: */
+        if (!fIsHostDriveUsed)
+        {
+            QAction *pActionChooseHostDrive = menu.addAction(UIMedium(comMedium, enmMediumType).name(), pListener, pszSlotName);
+            pActionChooseHostDrive->setCheckable(true);
+            pActionChooseHostDrive->setChecked(!comCurrentMedium.isNull() && comMedium.GetId() == uCurrentID);
+            pActionChooseHostDrive->setData(QVariant::fromValue(UIMediumTarget(strControllerName,
+                                                                               comCurrentAttachment.GetPort(),
+                                                                               comCurrentAttachment.GetDevice(),
+                                                                               enmMediumType,
+                                                                               UIMediumTarget::UIMediumTargetType_WithID,
+                                                                               comMedium.GetId().toString())));
+        }
+    }
+
+    /* Get recent-medium list: */
+    QStringList recentMediumList;
+    QStringList recentMediumListUsed;
+    switch (enmMediumType)
+    {
+        case UIMediumDeviceType_HardDisk: recentMediumList = gEDataManager->recentListOfHardDrives(); break;
+        case UIMediumDeviceType_DVD:      recentMediumList = gEDataManager->recentListOfOpticalDisks(); break;
+        case UIMediumDeviceType_Floppy:   recentMediumList = gEDataManager->recentListOfFloppyDisks(); break;
+        default: break;
+    }
+    /* Prepare choose-recent-medium actions: */
+    foreach (const QString &strRecentMediumLocationBase, recentMediumList)
+    {
+        /* Confirm medium uniqueness: */
+        if (recentMediumListUsed.contains(strRecentMediumLocationBase))
+            continue;
+        /* Mark medium as known: */
+        recentMediumListUsed << strRecentMediumLocationBase;
+        /* Convert separators to native: */
+        const QString strRecentMediumLocation = QDir::toNativeSeparators(strRecentMediumLocationBase);
+        /* Confirm medium presence: */
+        if (!QFile::exists(strRecentMediumLocation))
+            continue;
+        /* Make sure recent-medium usage is unique: */
+        bool fIsRecentMediumUsed = false;
+        foreach (const CMediumAttachment &otherAttachment, comAttachments)
+        {
+            if (otherAttachment != comCurrentAttachment)
+            {
+                const CMedium &comOtherMedium = otherAttachment.GetMedium();
+                if (!comOtherMedium.isNull() && comOtherMedium.GetLocation() == strRecentMediumLocation)
+                {
+                    fIsRecentMediumUsed = true;
+                    break;
+                }
+            }
+        }
+        /* If recent-medium usage is unique: */
+        if (!fIsRecentMediumUsed)
+        {
+            QAction *pActionChooseRecentMedium = menu.addAction(QFileInfo(strRecentMediumLocation).fileName(),
+                                                                pListener, pszSlotName);
+            pActionChooseRecentMedium->setCheckable(true);
+            pActionChooseRecentMedium->setChecked(!comCurrentMedium.isNull() && strRecentMediumLocation == strCurrentLocation);
+            pActionChooseRecentMedium->setData(QVariant::fromValue(UIMediumTarget(strControllerName,
+                                                                                  comCurrentAttachment.GetPort(),
+                                                                                  comCurrentAttachment.GetDevice(),
+                                                                                  enmMediumType,
+                                                                                  UIMediumTarget::UIMediumTargetType_WithLocation,
+                                                                                  strRecentMediumLocation)));
+            pActionChooseRecentMedium->setToolTip(strRecentMediumLocation);
+        }
+    }
+
+    /* Last action for optical/floppy attachments only: */
+    if (enmMediumType == UIMediumDeviceType_DVD || enmMediumType == UIMediumDeviceType_Floppy)
+    {
+        /* Insert separator: */
+        menu.addSeparator();
+
+        /* Prepare unmount-current-medium action: */
+        QAction *pActionUnmountMedium = menu.addAction(QString(), pListener, pszSlotName);
+        pActionUnmountMedium->setEnabled(!comCurrentMedium.isNull());
+        pActionUnmountMedium->setData(QVariant::fromValue(UIMediumTarget(strControllerName, comCurrentAttachment.GetPort(),
+                                                                         comCurrentAttachment.GetDevice())));
+        pActionUnmountMedium->setText(QApplication::translate("UIMachineSettingsStorage", "Remove disk from virtual drive"));
+        if (enmMediumType == UIMediumDeviceType_DVD)
+            pActionUnmountMedium->setIcon(UIIconPool::iconSet(":/cd_unmount_16px.png", ":/cd_unmount_disabled_16px.png"));
+        else if (enmMediumType == UIMediumDeviceType_Floppy)
+            pActionUnmountMedium->setIcon(UIIconPool::iconSet(":/fd_unmount_16px.png", ":/fd_unmount_disabled_16px.png"));
+    }
+}
+
+void UICommon::updateMachineStorage(const CMachine &comConstMachine, const UIMediumTarget &target)
+{
+    /* Mount (by default): */
+    bool fMount = true;
+    /* Null medium (by default): */
+    CMedium comMedium;
+    /* With null ID (by default): */
+    QUuid uActualID;
+
+    /* Current mount-target attributes: */
+    const CStorageController comCurrentController = comConstMachine.GetStorageControllerByName(target.name);
+    const KStorageBus enmCurrentStorageBus = comCurrentController.GetBus();
+    const CMediumAttachment comCurrentAttachment = comConstMachine.GetMediumAttachment(target.name, target.port, target.device);
+    const CMedium comCurrentMedium = comCurrentAttachment.GetMedium();
+    const QUuid uCurrentID = comCurrentMedium.isNull() ? QUuid() : comCurrentMedium.GetId();
+    const QString strCurrentLocation = comCurrentMedium.isNull() ? QString() : comCurrentMedium.GetLocation();
+
+    /* Which additional info do we have? */
+    switch (target.type)
+    {
+        /* Do we have an exact ID or do we let the user open a medium? */
+        case UIMediumTarget::UIMediumTargetType_WithID:
+        case UIMediumTarget::UIMediumTargetType_WithFileDialog:
+        case UIMediumTarget::UIMediumTargetType_CreateAdHocVISO:
+        case UIMediumTarget::UIMediumTargetType_CreateFloppyDisk:
+        {
+            /* New mount-target attributes: */
+            QUuid uNewID;
+
+            /* Invoke file-open dialog to choose medium ID: */
+            if (target.mediumType != UIMediumDeviceType_Invalid && target.data.isNull())
+            {
+                /* Keyboard can be captured by machine-view.
+                 * So we should clear machine-view focus to let file-open dialog get it.
+                 * That way the keyboard will be released too.. */
+                QWidget *pLastFocusedWidget = 0;
+                if (QApplication::focusWidget())
+                {
+                    pLastFocusedWidget = QApplication::focusWidget();
+                    pLastFocusedWidget->clearFocus();
+                }
+                /* Call for file-open dialog: */
+                const QString strMachineFolder(QFileInfo(comConstMachine.GetSettingsFilePath()).absolutePath());
+                QUuid uMediumID;
+                if (target.type == UIMediumTarget::UIMediumTargetType_WithID)
+                {
+                    int iDialogReturn = openMediumSelectorDialog(windowManager().mainWindowShown(), target.mediumType, uMediumID,
+                                                                 strMachineFolder, comConstMachine.GetName(),
+                                                                 comConstMachine.GetOSTypeId(), true /*fEnableCreate */);
+                    if (iDialogReturn == UIMediumSelector::ReturnCode_LeftEmpty &&
+                        (target.mediumType == UIMediumDeviceType_DVD || target.mediumType == UIMediumDeviceType_Floppy))
+                        fMount = false;
+                }
+                else if (target.type == UIMediumTarget::UIMediumTargetType_WithFileDialog)
+                {
+                    uMediumID = openMediumWithFileOpenDialog(target.mediumType, windowManager().mainWindowShown(),
+                                                             strMachineFolder, false /* fUseLastFolder */);
+                }
+                else if(target.type == UIMediumTarget::UIMediumTargetType_CreateAdHocVISO)
+                    uMediumID = createVisoMediumWithVisoCreator(windowManager().mainWindowShown(), strMachineFolder, comConstMachine.GetName());
+
+                else if(target.type == UIMediumTarget::UIMediumTargetType_CreateFloppyDisk)
+                    uMediumID = showCreateFloppyDiskDialog(windowManager().mainWindowShown(), strMachineFolder, comConstMachine.GetName());
+
+                /* Return focus back: */
+                if (pLastFocusedWidget)
+                    pLastFocusedWidget->setFocus();
+                /* Accept new medium ID: */
+                if (!uMediumID.isNull())
+                    uNewID = uMediumID;
+                else
+                    /* Else just exit in case left empty is not chosen in medium selector dialog: */
+                    if (fMount)
+                        return;
+            }
+            /* Use medium ID which was passed: */
+            else if (!target.data.isNull() && target.data != uCurrentID.toString())
+                uNewID = target.data;
+
+            /* Should we mount or unmount? */
+            fMount = !uNewID.isNull();
+
+            /* Prepare target medium: */
+            const UIMedium guiMedium = medium(uNewID);
+            comMedium = guiMedium.medium();
+            uActualID = fMount ? uNewID : uCurrentID;
+            break;
+        }
+        /* Do we have a recent location? */
+        case UIMediumTarget::UIMediumTargetType_WithLocation:
+        {
+            /* Open medium by location and get new medium ID if any: */
+            const QUuid uNewID = openMedium(target.mediumType, target.data);
+            /* Else just exit: */
+            if (uNewID.isNull())
+                return;
+
+            /* Should we mount or unmount? */
+            fMount = uNewID != uCurrentID;
+
+            /* Prepare target medium: */
+            const UIMedium guiMedium = fMount ? medium(uNewID) : UIMedium();
+            comMedium = fMount ? guiMedium.medium() : CMedium();
+            uActualID = fMount ? uNewID : uCurrentID;
+            break;
+        }
+    }
+
+    /* Do not unmount hard-drives: */
+    if (target.mediumType == UIMediumDeviceType_HardDisk && !fMount)
+        return;
+
+    /* Get editable machine: */
+    CSession comSession;
+    CMachine comMachine = comConstMachine;
+    KSessionState enmSessionState = comMachine.GetSessionState();
+    /* Session state unlocked? */
+    if (enmSessionState == KSessionState_Unlocked)
+    {
+        /* Open own 'write' session: */
+        comSession = openSession(comMachine.GetId());
+        AssertReturnVoid(!comSession.isNull());
+        comMachine = comSession.GetMachine();
+    }
+    /* Is this a Selector UI call? */
+    else if (uiType() == UIType_SelectorUI)
+    {
+        /* Open existing 'shared' session: */
+        comSession = openExistingSession(comMachine.GetId());
+        AssertReturnVoid(!comSession.isNull());
+        comMachine = comSession.GetMachine();
+    }
+    /* Else this is Runtime UI call
+     * which has session locked for itself. */
+
+    /* Remount medium to the predefined port/device: */
+    bool fWasMounted = false;
+    /* Hard drive case: */
+    if (target.mediumType == UIMediumDeviceType_HardDisk)
+    {
+        /* Detaching: */
+        comMachine.DetachDevice(target.name, target.port, target.device);
+        fWasMounted = comMachine.isOk();
+        if (!fWasMounted)
+            msgCenter().cannotDetachDevice(comMachine, UIMediumDeviceType_HardDisk, strCurrentLocation,
+                                           StorageSlot(enmCurrentStorageBus, target.port, target.device));
+        else
+        {
+            /* Attaching: */
+            comMachine.AttachDevice(target.name, target.port, target.device, KDeviceType_HardDisk, comMedium);
+            fWasMounted = comMachine.isOk();
+            if (!fWasMounted)
+                msgCenter().cannotAttachDevice(comMachine, UIMediumDeviceType_HardDisk, strCurrentLocation,
+                                               StorageSlot(enmCurrentStorageBus, target.port, target.device));
+        }
+    }
+    /* Optical/floppy drive case: */
+    else
+    {
+        /* Remounting: */
+        comMachine.MountMedium(target.name, target.port, target.device, comMedium, false /* force? */);
+        fWasMounted = comMachine.isOk();
+        if (!fWasMounted)
+        {
+            /* Ask for force remounting: */
+            if (msgCenter().cannotRemountMedium(comMachine, medium(uActualID),
+                                                fMount, true /* retry? */))
+            {
+                /* Force remounting: */
+                comMachine.MountMedium(target.name, target.port, target.device, comMedium, true /* force? */);
+                fWasMounted = comMachine.isOk();
+                if (!fWasMounted)
+                    msgCenter().cannotRemountMedium(comMachine, medium(uActualID),
+                                                    fMount, false /* retry? */);
+            }
+        }
+        /* If mounting was successful: */
+        if (fWasMounted)
+        {
+            /* Disable First RUN Wizard: */
+            if (gEDataManager->machineFirstTimeStarted(comMachine.GetId()))
+                gEDataManager->setMachineFirstTimeStarted(false, comMachine.GetId());
+        }
+    }
+
+    /* Save settings: */
+    if (fWasMounted)
+    {
+        comMachine.SaveSettings();
+        if (!comMachine.isOk())
+            msgCenter().cannotSaveMachineSettings(comMachine, windowManager().mainWindowShown());
+    }
+
+    /* Close session to editable comMachine if necessary: */
+    if (!comSession.isNull())
+        comSession.UnlockMachine();
+}
+
+QString UICommon::details(const CMedium &comMedium, bool fPredictDiff, bool fUseHtml /* = true */)
+{
+    /* Search for corresponding UI medium: */
+    const QUuid uMediumID = comMedium.isNull() ? UIMedium::nullID() : comMedium.GetId();
+    UIMedium guiMedium = medium(uMediumID);
+    if (!comMedium.isNull() && guiMedium.isNull())
+    {
+        /* UI medium may be new and not among our media, request enumeration: */
+        enumerateAdditionalMedium(comMedium);
+
+        /* Search for corresponding UI medium again: */
+        guiMedium = medium(uMediumID);
+        if (guiMedium.isNull())
+        {
+            /* Medium might be deleted already, return null string: */
+            return QString();
+        }
+    }
+
+    /* Return UI medium details: */
+    return fUseHtml ? guiMedium.detailsHTML(true /* no diffs? */, fPredictDiff) :
+                      guiMedium.details(true /* no diffs? */, fPredictDiff);
+}
+
+void UICommon::updateRecentlyUsedMediumListAndFolder(UIMediumDeviceType enmMediumType, QString strMediumLocation)
+{
+    /** Don't add the medium to extra data if its name is in exclude list, m_recentMediaExcludeList: */
+    foreach (QString strExcludeName, m_recentMediaExcludeList)
+    {
+        if (strMediumLocation.contains(strExcludeName))
+            return;
+    }
+
+    /* Remember the path of the last chosen medium: */
+    switch (enmMediumType)
+    {
+        case UIMediumDeviceType_HardDisk: gEDataManager->setRecentFolderForHardDrives(QFileInfo(strMediumLocation).absolutePath()); break;
+        case UIMediumDeviceType_DVD:      gEDataManager->setRecentFolderForOpticalDisks(QFileInfo(strMediumLocation).absolutePath()); break;
+        case UIMediumDeviceType_Floppy:   gEDataManager->setRecentFolderForFloppyDisks(QFileInfo(strMediumLocation).absolutePath()); break;
+        default: break;
+    }
+
+    /* Update recently used list: */
+    QStringList recentMediumList;
+    switch (enmMediumType)
+    {
+        case UIMediumDeviceType_HardDisk: recentMediumList = gEDataManager->recentListOfHardDrives(); break;
+        case UIMediumDeviceType_DVD:      recentMediumList = gEDataManager->recentListOfOpticalDisks(); break;
+        case UIMediumDeviceType_Floppy:   recentMediumList = gEDataManager->recentListOfFloppyDisks(); break;
+        default: break;
+    }
+    if (recentMediumList.contains(strMediumLocation))
+        recentMediumList.removeAll(strMediumLocation);
+    recentMediumList.prepend(strMediumLocation);
+    while(recentMediumList.size() > 5)
+        recentMediumList.removeLast();
+    switch (enmMediumType)
+    {
+        case UIMediumDeviceType_HardDisk: gEDataManager->setRecentListOfHardDrives(recentMediumList); break;
+        case UIMediumDeviceType_DVD:      gEDataManager->setRecentListOfOpticalDisks(recentMediumList); break;
+        case UIMediumDeviceType_Floppy:   gEDataManager->setRecentListOfFloppyDisks(recentMediumList); break;
+        default: break;
+    }
+}
+
+QString UICommon::defaultFolderPathForType(UIMediumDeviceType enmMediumType)
+{
+    QString strLastFolder;
+    switch (enmMediumType)
+    {
+        case UIMediumDeviceType_HardDisk:
+            strLastFolder = gEDataManager->recentFolderForHardDrives();
+            if (strLastFolder.isEmpty())
+                strLastFolder = gEDataManager->recentFolderForOpticalDisks();
+            if (strLastFolder.isEmpty())
+                strLastFolder = gEDataManager->recentFolderForFloppyDisks();
+            break;
+        case UIMediumDeviceType_DVD:
+            strLastFolder = gEDataManager->recentFolderForOpticalDisks();
+            if (strLastFolder.isEmpty())
+                strLastFolder = gEDataManager->recentFolderForFloppyDisks();
+            if (strLastFolder.isEmpty())
+                strLastFolder = gEDataManager->recentFolderForHardDrives();
+            break;
+        case UIMediumDeviceType_Floppy:
+            strLastFolder = gEDataManager->recentFolderForFloppyDisks();
+            if (strLastFolder.isEmpty())
+                strLastFolder = gEDataManager->recentFolderForOpticalDisks();
+            if (strLastFolder.isEmpty())
+                strLastFolder = gEDataManager->recentFolderForHardDrives();
+            break;
+        default:
+            break;
+    }
+
+    if (strLastFolder.isEmpty())
+        return virtualBox().GetSystemProperties().GetDefaultMachineFolder();
+
+    return strLastFolder;
+}
+
+#ifdef RT_OS_LINUX
+/* static */
+void UICommon::checkForWrongUSBMounted()
+{
+    /* Make sure '/proc/mounts' exists and can be opened: */
+    QFile file("/proc/mounts");
+    if (!file.exists() || !file.open(QIODevice::ReadOnly | QIODevice::Text))
+        return;
+
+    /* Fetch contents: */
+    QStringList contents;
+    for (;;)
+    {
+        QByteArray line = file.readLine();
+        if (line.isEmpty())
+            break;
+        contents << line;
+    }
+    /* Grep contents for usbfs presence: */
+    QStringList grep1(contents.filter("/sys/bus/usb/drivers"));
+    QStringList grep2(grep1.filter("usbfs"));
+    if (grep2.isEmpty())
+        return;
+
+    /* Show corresponding warning: */
+    msgCenter().warnAboutWrongUSBMounted();
+}
+#endif /* RT_OS_LINUX */
+
+/* static */
+QString UICommon::details(const CUSBDevice &comDevice)
+{
+    QString strDetails;
+    if (comDevice.isNull())
+        strDetails = tr("Unknown device", "USB device details");
+    else
+    {
+        QVector<QString> devInfoVector = comDevice.GetDeviceInfo();
+        QString strManufacturer;
+        QString strProduct;
+
+        if (devInfoVector.size() >= 1)
+            strManufacturer = devInfoVector[0].trimmed();
+        if (devInfoVector.size() >= 2)
+            strProduct = devInfoVector[1].trimmed();
+
+        if (strManufacturer.isEmpty() && strProduct.isEmpty())
+        {
+            strDetails =
+                tr("Unknown device %1:%2", "USB device details")
+                   .arg(QString().sprintf("%04hX", comDevice.GetVendorId()))
+                   .arg(QString().sprintf("%04hX", comDevice.GetProductId()));
+        }
+        else
+        {
+            if (strProduct.toUpper().startsWith(strManufacturer.toUpper()))
+                strDetails = strProduct;
+            else
+                strDetails = strManufacturer + " " + strProduct;
+        }
+        ushort iRev = comDevice.GetRevision();
+        if (iRev != 0)
+            strDetails += QString().sprintf(" [%04hX]", iRev);
+    }
+
+    return strDetails.trimmed();
+}
+
+/* static */
+QString UICommon::toolTip(const CUSBDevice &comDevice)
+{
+    QString strTip =
+        tr("<nobr>Vendor ID: %1</nobr><br>"
+           "<nobr>Product ID: %2</nobr><br>"
+           "<nobr>Revision: %3</nobr>", "USB device tooltip")
+           .arg(QString().sprintf("%04hX", comDevice.GetVendorId()))
+           .arg(QString().sprintf("%04hX", comDevice.GetProductId()))
+           .arg(QString().sprintf("%04hX", comDevice.GetRevision()));
+
+    const QString strSerial = comDevice.GetSerialNumber();
+    if (!strSerial.isEmpty())
+        strTip += QString(tr("<br><nobr>Serial No. %1</nobr>", "USB device tooltip"))
+                             .arg(strSerial);
+
+    /* Add the state field if it's a host USB device: */
+    CHostUSBDevice hostDev(comDevice);
+    if (!hostDev.isNull())
+    {
+        strTip += QString(tr("<br><nobr>State: %1</nobr>", "USB device tooltip"))
+                             .arg(gpConverter->toString(hostDev.GetState()));
+    }
+
+    return strTip;
+}
+
+/* static */
+QString UICommon::toolTip(const CUSBDeviceFilter &comFilter)
+{
+    QString strTip;
+
+    const QString strVendorId = comFilter.GetVendorId();
+    if (!strVendorId.isEmpty())
+        strTip += tr("<nobr>Vendor ID: %1</nobr>", "USB filter tooltip")
+                     .arg(strVendorId);
+
+    const QString strProductId = comFilter.GetProductId();
+    if (!strProductId.isEmpty())
+        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>Product ID: %2</nobr>", "USB filter tooltip")
+                                                     .arg(strProductId);
+
+    const QString strRevision = comFilter.GetRevision();
+    if (!strRevision.isEmpty())
+        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>Revision: %3</nobr>", "USB filter tooltip")
+                                                     .arg(strRevision);
+
+    const QString strProduct = comFilter.GetProduct();
+    if (!strProduct.isEmpty())
+        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>Product: %4</nobr>", "USB filter tooltip")
+                                                     .arg(strProduct);
+
+    const QString strManufacturer = comFilter.GetManufacturer();
+    if (!strManufacturer.isEmpty())
+        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>Manufacturer: %5</nobr>", "USB filter tooltip")
+                                                     .arg(strManufacturer);
+
+    const QString strSerial = comFilter.GetSerialNumber();
+    if (!strSerial.isEmpty())
+        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>Serial No.: %1</nobr>", "USB filter tooltip")
+                                                     .arg(strSerial);
+
+    const QString strPort = comFilter.GetPort();
+    if (!strPort.isEmpty())
+        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>Port: %1</nobr>", "USB filter tooltip")
+                                                     .arg(strPort);
+
+    /* Add the state field if it's a host USB device: */
+    CHostUSBDevice hostDev(comFilter);
+    if (!hostDev.isNull())
+    {
+        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>State: %1</nobr>", "USB filter tooltip")
+                                                     .arg(gpConverter->toString(hostDev.GetState()));
+    }
+
+    return strTip;
+}
+
+/* static */
+QString UICommon::toolTip(const CHostVideoInputDevice &comWebcam)
+{
+    QStringList records;
+
+    const QString strName = comWebcam.GetName();
+    if (!strName.isEmpty())
+        records << strName;
+
+    const QString strPath = comWebcam.GetPath();
+    if (!strPath.isEmpty())
+        records << strPath;
+
+    return records.join("<br>");
+}
+
+/* static */
+void UICommon::doExtPackInstallation(QString const &strFilePath, QString const &strDigest,
+                                       QWidget *pParent, QString *pstrExtPackName) const
+{
+    /* Open the extpack tarball via IExtPackManager: */
+    CExtPackManager comManager = virtualBox().GetExtensionPackManager();
+    CExtPackFile comExtPackFile;
+    if (strDigest.isEmpty())
+        comExtPackFile = comManager.OpenExtPackFile(strFilePath);
+    else
+    {
+        QString strFileAndHash = QString("%1::SHA-256=%2").arg(strFilePath).arg(strDigest);
+        comExtPackFile = comManager.OpenExtPackFile(strFileAndHash);
+    }
+    if (!comManager.isOk())
+    {
+        msgCenter().cannotOpenExtPack(strFilePath, comManager, pParent);
+        return;
+    }
+
+    if (!comExtPackFile.GetUsable())
+    {
+        msgCenter().warnAboutBadExtPackFile(strFilePath, comExtPackFile, pParent);
+        return;
+    }
+
+    const QString strPackName = comExtPackFile.GetName();
+    const QString strPackDescription = comExtPackFile.GetDescription();
+    const QString strPackVersion = QString("%1r%2%3").arg(comExtPackFile.GetVersion()).arg(comExtPackFile.GetRevision()).arg(comExtPackFile.GetEdition());
+
+    /* Check if there is a version of the extension pack already
+     * installed on the system and let the user decide what to do about it. */
+    CExtPack comExtPackCur = comManager.Find(strPackName);
+    bool fReplaceIt = comExtPackCur.isOk();
+    if (fReplaceIt)
+    {
+        QString strPackVersionCur = QString("%1r%2%3").arg(comExtPackCur.GetVersion()).arg(comExtPackCur.GetRevision()).arg(comExtPackCur.GetEdition());
+        if (!msgCenter().confirmReplaceExtensionPack(strPackName, strPackVersion, strPackVersionCur, strPackDescription, pParent))
+            return;
+    }
+    /* If it's a new package just ask for general confirmation. */
+    else
+    {
+        if (!msgCenter().confirmInstallExtensionPack(strPackName, strPackVersion, strPackDescription, pParent))
+            return;
+    }
+
+    /* Display the license dialog if required by the extension pack. */
+    if (comExtPackFile.GetShowLicense())
+    {
+        QString strLicense = comExtPackFile.GetLicense();
+        VBoxLicenseViewer licenseViewer(pParent);
+        if (licenseViewer.showLicenseFromString(strLicense) != QDialog::Accepted)
+            return;
+    }
+
+    /* Install the selected package.
+     * Set the package name return value before doing
+     * this as the caller should do a refresh even on failure. */
+    QString strDisplayInfo;
+#ifdef VBOX_WS_WIN
+    if (pParent)
+        strDisplayInfo.sprintf("hwnd=%#llx", (uint64_t)(uintptr_t)pParent->winId());
+#endif
+    /* Prepare installation progress: */
+    CProgress comProgress = comExtPackFile.Install(fReplaceIt, strDisplayInfo);
+    if (comExtPackFile.isOk())
+    {
+        /* Show installation progress: */
+        /** @todo move this tr into UIUpdateManager context */
+        msgCenter().showModalProgressDialog(comProgress, QApplication::translate("UIGlobalSettingsExtension",
+                                                                              "Extensions"),
+                                            ":/progress_install_guest_additions_90px.png", pParent);
+        if (!comProgress.GetCanceled())
+        {
+            if (comProgress.isOk() && comProgress.GetResultCode() == 0)
+                msgCenter().warnAboutExtPackInstalled(strPackName, pParent);
+            else
+                msgCenter().cannotInstallExtPack(comProgress, strFilePath, pParent);
+        }
+    }
+    else
+        msgCenter().cannotInstallExtPack(comExtPackFile, strFilePath, pParent);
+
+    if (pstrExtPackName)
+        *pstrExtPackName = strPackName;
+}
+
+bool UICommon::is3DAvailableWorker() const
+{
+    /* Rational is that when starting a text mode guest (like DOS) that does not
+     * have 3D enabled, don't wast the developer's or user's time on launching the
+     * test application when starting the VM or editing it's settings.
+     *
+     * Keep in mind that if we ever end up checking this concurrently on multiple threads,
+     * use a RTONCE construct to serialize the efforts. */
+
+#ifdef VBOX_WITH_CROGL
+    bool fSupported = VBoxOglIs3DAccelerationSupported();
+#else
+    bool fSupported = false;
+#endif
+    m_i3DAvailable = fSupported;
+    return fSupported;
+}
+
+bool UICommon::is3DAvailable() const
+{
+    if (m_i3DAvailable < 0)
+        return is3DAvailableWorker();
+    return m_i3DAvailable != 0;
+}
+
+#ifdef VBOX_WITH_CRHGSMI
+/* static */
+bool UICommon::isWddmCompatibleOsType(const QString &strGuestOSTypeId)
+{
+    return    strGuestOSTypeId.startsWith("WindowsVista")
+           || strGuestOSTypeId.startsWith("Windows7")
+           || strGuestOSTypeId.startsWith("Windows8")
+           || strGuestOSTypeId.startsWith("Windows81")
+           || strGuestOSTypeId.startsWith("Windows10")
+           || strGuestOSTypeId.startsWith("Windows2008")
+           || strGuestOSTypeId.startsWith("Windows2012");
+}
+#endif /* VBOX_WITH_CRHGSMI */
+
+/* static */
+quint64 UICommon::requiredVideoMemory(const QString &strGuestOSTypeId, int cMonitors /* = 1 */)
+{
+    /* We create a list of the size of all available host monitors. This list
+     * is sorted by value and by starting with the biggest one, we calculate
+     * the memory requirements for every guest screen. This is of course not
+     * correct, but as we can't predict on which host screens the user will
+     * open the guest windows, this is the best assumption we can do, cause it
+     * is the worst case. */
+    const int cHostScreens = gpDesktop->screenCount();
+    QVector<int> screenSize(qMax(cMonitors, cHostScreens), 0);
+    for (int i = 0; i < cHostScreens; ++i)
+    {
+        QRect r = gpDesktop->screenGeometry(i);
+        screenSize[i] = r.width() * r.height();
+    }
+    /* Now sort the vector: */
+    qSort(screenSize.begin(), screenSize.end(), qGreater<int>());
+    /* For the case that there are more guest screens configured then host
+     * screens available, replace all zeros with the greatest value in the
+     * vector. */
+    for (int i = 0; i < screenSize.size(); ++i)
+        if (screenSize.at(i) == 0)
+            screenSize.replace(i, screenSize.at(0));
+
+    quint64 uNeedBits = 0;
+    for (int i = 0; i < cMonitors; ++i)
+    {
+        /* Calculate summary required memory amount in bits: */
+        uNeedBits += (screenSize.at(i) * /* with x height */
+                     32 + /* we will take the maximum possible bpp for now */
+                     8 * _1M) + /* current cache per screen - may be changed in future */
+                     8 * 4096; /* adapter info */
+    }
+    /* Translate value into megabytes with rounding to highest side: */
+    quint64 uNeedMBytes = uNeedBits % (8 * _1M)
+                        ? uNeedBits / (8 * _1M) + 1
+                        : uNeedBits / (8 * _1M) /* convert to megabytes */;
+
+    if (strGuestOSTypeId.startsWith("Windows"))
+    {
+        /* Windows guests need offscreen VRAM too for graphics acceleration features: */
+#ifdef VBOX_WITH_CRHGSMI
+        if (isWddmCompatibleOsType(strGuestOSTypeId))
+        {
+            /* WDDM mode, there are two surfaces for each screen: shadow & primary: */
+            uNeedMBytes *= 3;
+        }
+        else
+#endif /* VBOX_WITH_CRHGSMI */
+        {
+            uNeedMBytes *= 2;
+        }
+    }
+
+    return uNeedMBytes * _1M;
+}
+
+QIcon UICommon::vmUserIcon(const CMachine &comMachine) const
+{
+    /* Prepare fallback icon: */
+    static QIcon nullIcon;
+
+    /* Make sure general icon-pool initialized: */
+    AssertReturn(m_pIconPool, nullIcon);
+
+    /* Redirect to general icon-pool: */
+    return m_pIconPool->userMachineIcon(comMachine);
+}
+
+QPixmap UICommon::vmUserPixmap(const CMachine &comMachine, const QSize &size) const
+{
+    /* Prepare fallback pixmap: */
+    static QPixmap nullPixmap;
+
+    /* Make sure general icon-pool initialized: */
+    AssertReturn(m_pIconPool, nullPixmap);
+
+    /* Redirect to general icon-pool: */
+    return m_pIconPool->userMachinePixmap(comMachine, size);
+}
+
+QPixmap UICommon::vmUserPixmapDefault(const CMachine &comMachine, QSize *pLogicalSize /* = 0 */) const
+{
+    /* Prepare fallback pixmap: */
+    static QPixmap nullPixmap;
+
+    /* Make sure general icon-pool initialized: */
+    AssertReturn(m_pIconPool, nullPixmap);
+
+    /* Redirect to general icon-pool: */
+    return m_pIconPool->userMachinePixmapDefault(comMachine, pLogicalSize);
+}
+
+QIcon UICommon::vmGuestOSTypeIcon(const QString &strOSTypeID) const
+{
+    /* Prepare fallback icon: */
+    static QIcon nullIcon;
+
+    /* Make sure general icon-pool initialized: */
+    AssertReturn(m_pIconPool, nullIcon);
+
+    /* Redirect to general icon-pool: */
+    return m_pIconPool->guestOSTypeIcon(strOSTypeID);
+}
+
+QPixmap UICommon::vmGuestOSTypePixmap(const QString &strOSTypeID, const QSize &size) const
+{
+    /* Prepare fallback pixmap: */
+    static QPixmap nullPixmap;
+
+    /* Make sure general icon-pool initialized: */
+    AssertReturn(m_pIconPool, nullPixmap);
+
+    /* Redirect to general icon-pool: */
+    return m_pIconPool->guestOSTypePixmap(strOSTypeID, size);
+}
+
+QPixmap UICommon::vmGuestOSTypePixmapDefault(const QString &strOSTypeID, QSize *pLogicalSize /* = 0 */) const
+{
+    /* Prepare fallback pixmap: */
+    static QPixmap nullPixmap;
+
+    /* Make sure general icon-pool initialized: */
+    AssertReturn(m_pIconPool, nullPixmap);
+
+    /* Redirect to general icon-pool: */
+    return m_pIconPool->guestOSTypePixmapDefault(strOSTypeID, pLogicalSize);
+}
+
+/* static */
+QPixmap UICommon::joinPixmaps(const QPixmap &pixmap1, const QPixmap &pixmap2)
+{
+    if (pixmap1.isNull())
+        return pixmap2;
+    if (pixmap2.isNull())
+        return pixmap1;
+
+    QPixmap result(pixmap1.width() + pixmap2.width() + 2,
+                   qMax(pixmap1.height(), pixmap2.height()));
+    result.fill(Qt::transparent);
+
+    QPainter painter(&result);
+    painter.drawPixmap(0, 0, pixmap1);
+    painter.drawPixmap(pixmap1.width() + 2, result.height() - pixmap2.height(), pixmap2);
+    painter.end();
+
+    return result;
+}
+
+bool UICommon::openURL(const QString &strUrl) const
+{
+    /** Service event. */
+    class ServiceEvent : public QEvent
+    {
+    public:
+
+        /** Constructs service event on th basis of passed @a fResult. */
+        ServiceEvent(bool fResult)
+            : QEvent(QEvent::User)
+            , m_fResult(fResult)
+        {}
+
+        /** Returns the result which event brings. */
+        bool result() const { return m_fResult; }
+
+    private:
+
+        /** Holds the result which event brings. */
+        bool m_fResult;
+    };
+
+    /** Service client object. */
+    class ServiceClient : public QEventLoop
+    {
+    public:
+
+        /** Constructs service client on the basis of passed @a fResult. */
+        ServiceClient()
+            : m_fResult(false)
+        {}
+
+        /** Returns the result which event brings. */
+        bool result() const { return m_fResult; }
+
+    private:
+
+        /** Handles any Qt @a pEvent. */
+        bool event(QEvent *pEvent)
+        {
+            /* Handle service event: */
+            if (pEvent->type() == QEvent::User)
+            {
+                ServiceEvent *pServiceEvent = static_cast<ServiceEvent*>(pEvent);
+                m_fResult = pServiceEvent->result();
+                pServiceEvent->accept();
+                quit();
+                return true;
+            }
+            return false;
+        }
+
+        bool m_fResult;
+    };
+
+    /** Service server object. */
+    class ServiceServer : public QThread
+    {
+    public:
+
+        /** Constructs service server on the basis of passed @a client and @a strUrl. */
+        ServiceServer(ServiceClient &client, const QString &strUrl)
+            : m_client(client), m_strUrl(strUrl) {}
+
+    private:
+
+        /** Executes thread task. */
+        void run()
+        {
+            QApplication::postEvent(&m_client, new ServiceEvent(QDesktopServices::openUrl(m_strUrl)));
+        }
+
+        /** Holds the client reference. */
+        ServiceClient &m_client;
+        /** Holds the URL to be processed. */
+        const QString &m_strUrl;
+    };
+
+    /* Create client & server: */
+    ServiceClient client;
+    ServiceServer server(client, strUrl);
+    server.start();
+    client.exec();
+    server.wait();
+
+    /* Acquire client result: */
+    bool fResult = client.result();
+
+    if (!fResult)
+        msgCenter().cannotOpenURL(strUrl);
+
+    return fResult;
+}
+
+void UICommon::sltGUILanguageChange(QString strLanguage)
+{
+    /* Make sure medium-enumeration is not in progress! */
+    AssertReturnVoid(!isMediumEnumerationInProgress());
+    /* Load passed language: */
+    loadLanguage(strLanguage);
+}
+
+bool UICommon::eventFilter(QObject *pObject, QEvent *pEvent)
+{
+    /** @todo Just use the QIWithRetranslateUI3 template wrapper. */
+
+    if (   pEvent->type() == QEvent::LanguageChange
+        && pObject->isWidgetType()
+        && static_cast<QWidget*>(pObject)->isTopLevel())
+    {
+        /* Catch the language change event before any other widget gets it in
+         * order to invalidate cached string resources (like the details view
+         * templates) that may be used by other widgets. */
+        QWidgetList list = QApplication::topLevelWidgets();
+        if (list.first() == pObject)
+        {
+            /* Call this only once per every language change (see
+             * QApplication::installTranslator() for details): */
+            retranslateUi();
+        }
+    }
+
+    /* Call to base-class: */
+    return QObject::eventFilter(pObject, pEvent);
+}
+
+void UICommon::retranslateUi()
+{
+    s_strUserDefinedPortName = tr("User-defined", "serial port");
+
+    m_pixWarning = UIIconPool::defaultIcon(UIIconPool::UIDefaultIconType_MessageBoxWarning).pixmap(16, 16);
+    Assert(!m_pixWarning.isNull());
+
+    m_pixError = UIIconPool::defaultIcon(UIIconPool::UIDefaultIconType_MessageBoxCritical).pixmap(16, 16);
+    Assert(!m_pixError.isNull());
+
+    /* Re-enumerate uimedium since they contain some translations too: */
+    if (m_fValid)
+        refreshMedia();
+
+#ifdef VBOX_WS_X11
+    // WORKAROUND:
+    // As X11 do not have functionality for providing human readable key names,
+    // we keep a table of them, which must be updated when the language is changed.
+    UINativeHotKey::retranslateKeyNames();
+#endif
+}
+
+void UICommon::prepare()
+{
+    /* Make sure QApplication cleanup us on exit: */
+    connect(qApp, &QGuiApplication::aboutToQuit, this, &UICommon::cleanup);
+    /* Make sure we handle host OS session shutdown as well: */
+    connect(qApp, &QGuiApplication::commitDataRequest,
+            this, &UICommon::sltHandleCommitDataRequest);
+
+#ifdef VBOX_WS_MAC
+    /* Determine OS release early: */
+    m_enmMacOSVersion = determineOsRelease();
+#endif /* VBOX_WS_MAC */
+
+    /* Prepare converter: */
+    UIConverter::prepare();
+
+    /* Create desktop-widget watchdog: */
+    UIDesktopWidgetWatchdog::create();
+
+    /* Create message-center: */
+    UIMessageCenter::create();
+    /* Create popup-center: */
+    UIPopupCenter::create();
+
+    /* Prepare general icon-pool: */
+    m_pIconPool = new UIIconPoolGeneral;
+
+    /* Load translation based on the current locale: */
+    loadLanguage();
+
+    HRESULT rc = COMBase::InitializeCOM(true);
+    if (FAILED(rc))
+    {
+#ifdef VBOX_WITH_XPCOM
+        if (rc == NS_ERROR_FILE_ACCESS_DENIED)
+        {
+            char szHome[RTPATH_MAX] = "";
+            com::GetVBoxUserHomeDirectory(szHome, sizeof(szHome));
+            msgCenter().cannotInitUserHome(QString(szHome));
+        }
+        else
+#endif
+            msgCenter().cannotInitCOM(rc);
+        return;
+    }
+
+#ifdef VBOX_WITH_SDS
+    // setup Client COM Security to enable impersonation required by VBOX_SDS
+    HRESULT hrGUICoInitializeSecurity = CoInitializeSecurity(NULL,
+                                                             -1,
+                                                             NULL,
+                                                             NULL,
+                                                             RPC_C_AUTHN_LEVEL_DEFAULT,
+                                                             RPC_C_IMP_LEVEL_IMPERSONATE,
+                                                             NULL,
+                                                             EOAC_NONE,
+                                                             NULL);
+    NOREF(hrGUICoInitializeSecurity);
+    Assert(RPC_E_TOO_LATE != hrGUICoInitializeSecurity);
+    Assert(hrGUICoInitializeSecurity == S_OK);
+#endif
+
+    /* Make sure VirtualBoxClient instance created: */
+    m_comVBoxClient.createInstance(CLSID_VirtualBoxClient);
+    if (!m_comVBoxClient.isOk())
+    {
+        msgCenter().cannotCreateVirtualBoxClient(m_comVBoxClient);
+        return;
+    }
+    /* Make sure VirtualBox instance acquired: */
+    m_comVBox = m_comVBoxClient.GetVirtualBox();
+    if (!m_comVBoxClient.isOk())
+    {
+        msgCenter().cannotAcquireVirtualBox(m_comVBoxClient);
+        return;
+    }
+    /* Init wrappers: */
+    comWrappersReinit();
+
+    /* Watch for the VBoxSVC availability changes: */
+    connect(gVBoxEvents, &UIVirtualBoxEventHandler::sigVBoxSVCAvailabilityChange,
+            this, &UICommon::sltHandleVBoxSVCAvailabilityChange);
+
+    /* Prepare thread-pool instance: */
+    m_pThreadPool = new UIThreadPool(3 /* worker count */, 5000 /* worker timeout */);
+
+    /* Load translation based on the user settings: */
+    QString sLanguageId = gEDataManager->languageId();
+    if (!sLanguageId.isNull())
+        loadLanguage(sLanguageId);
+
+    retranslateUi();
+
+    connect(gEDataManager, &UIExtraDataManager::sigLanguageChange,
+            this, &UICommon::sltGUILanguageChange);
+
+    qApp->installEventFilter(this);
+
+    /* process command line */
+
+    UIVisualStateType visualStateType = UIVisualStateType_Invalid;
+
+#ifdef VBOX_WS_X11
+    /* Check whether we have compositing manager running: */
+    m_fCompositingManagerRunning = X11IsCompositingManagerRunning();
+
+    /* Acquire current Window Manager type: */
+    m_enmWindowManagerType = X11WindowManagerType();
+#endif /* VBOX_WS_X11 */
+
+#ifdef VBOX_WITH_DEBUGGER_GUI
+# ifdef VBOX_WITH_DEBUGGER_GUI_MENU
+    initDebuggerVar(&m_fDbgEnabled, "VBOX_GUI_DBG_ENABLED", GUI_Dbg_Enabled, true);
+# else
+    initDebuggerVar(&m_fDbgEnabled, "VBOX_GUI_DBG_ENABLED", GUI_Dbg_Enabled, false);
+# endif
+    initDebuggerVar(&m_fDbgAutoShow, "VBOX_GUI_DBG_AUTO_SHOW", GUI_Dbg_AutoShow, false);
+    m_fDbgAutoShowCommandLine = m_fDbgAutoShowStatistics = m_fDbgAutoShow;
+#endif
+
+    /*
+     * Parse the command line options.
+     *
+     * This is a little sloppy but we're trying to tighten it up.  Unfortuately,
+     * both on X11 and darwin (IIRC) there might be additional arguments aimed
+     * for client libraries with GUI processes.  So, using RTGetOpt or similar
+     * is a bit hard since we have to cope with unknown options.
+     */
+    m_fShowStartVMErrors = true;
+    bool startVM = false;
+    bool fSeparateProcess = false;
+    QString vmNameOrUuid;
+
+    const QStringList &arguments = QCoreApplication::arguments();
+    const int argc = arguments.size();
+    int i = 1;
+    while (i < argc)
+    {
+        const QByteArray &argBytes = arguments.at(i).toUtf8();
+        const char *arg = argBytes.constData();
+        enum { OptType_Unknown, OptType_VMRunner, OptType_VMSelector, OptType_MaybeBoth } enmOptType = OptType_Unknown;
+        /* NOTE: the check here must match the corresponding check for the
+         * options to start a VM in main.cpp and hardenedmain.cpp exactly,
+         * otherwise there will be weird error messages. */
+        if (   !::strcmp(arg, "--startvm")
+            || !::strcmp(arg, "-startvm"))
+        {
+            enmOptType = OptType_VMRunner;
+            if (++i < argc)
+            {
+                vmNameOrUuid = arguments.at(i);
+                startVM = true;
+            }
+        }
+        else if (!::strcmp(arg, "-separate") || !::strcmp(arg, "--separate"))
+        {
+            enmOptType = OptType_VMRunner;
+            fSeparateProcess = true;
+        }
+#ifdef VBOX_GUI_WITH_PIDFILE
+        else if (!::strcmp(arg, "-pidfile") || !::strcmp(arg, "--pidfile"))
+        {
+            enmOptType = OptType_MaybeBoth;
+            if (++i < argc)
+                m_strPidFile = arguments.at(i);
+        }
+#endif /* VBOX_GUI_WITH_PIDFILE */
+        /* Visual state type options: */
+        else if (!::strcmp(arg, "-normal") || !::strcmp(arg, "--normal"))
+        {
+            enmOptType = OptType_MaybeBoth;
+            visualStateType = UIVisualStateType_Normal;
+        }
+        else if (!::strcmp(arg, "-fullscreen") || !::strcmp(arg, "--fullscreen"))
+        {
+            enmOptType = OptType_MaybeBoth;
+            visualStateType = UIVisualStateType_Fullscreen;
+        }
+        else if (!::strcmp(arg, "-seamless") || !::strcmp(arg, "--seamless"))
+        {
+            enmOptType = OptType_MaybeBoth;
+            visualStateType = UIVisualStateType_Seamless;
+        }
+        else if (!::strcmp(arg, "-scale") || !::strcmp(arg, "--scale"))
+        {
+            enmOptType = OptType_MaybeBoth;
+            visualStateType = UIVisualStateType_Scale;
+        }
+        /* Passwords: */
+        else if (!::strcmp(arg, "--settingspw"))
+        {
+            enmOptType = OptType_MaybeBoth;
+            if (++i < argc)
+            {
+                RTStrCopy(m_astrSettingsPw, sizeof(m_astrSettingsPw), arguments.at(i).toLocal8Bit().constData());
+                m_fSettingsPwSet = true;
+            }
+        }
+        else if (!::strcmp(arg, "--settingspwfile"))
+        {
+            enmOptType = OptType_MaybeBoth;
+            if (++i < argc)
+            {
+                const QByteArray &argFileBytes = arguments.at(i).toLocal8Bit();
+                const char *pszFile = argFileBytes.constData();
+                bool fStdIn = !::strcmp(pszFile, "stdin");
+                int vrc = VINF_SUCCESS;
+                PRTSTREAM pStrm;
+                if (!fStdIn)
+                    vrc = RTStrmOpen(pszFile, "r", &pStrm);
+                else
+                    pStrm = g_pStdIn;
+                if (RT_SUCCESS(vrc))
+                {
+                    size_t cbFile;
+                    vrc = RTStrmReadEx(pStrm, m_astrSettingsPw, sizeof(m_astrSettingsPw) - 1, &cbFile);
+                    if (RT_SUCCESS(vrc))
+                    {
+                        if (cbFile >= sizeof(m_astrSettingsPw) - 1)
+                            cbFile = sizeof(m_astrSettingsPw) - 1;
+                        unsigned i;
+                        for (i = 0; i < cbFile && !RT_C_IS_CNTRL(m_astrSettingsPw[i]); i++)
+                            ;
+                        m_astrSettingsPw[i] = '\0';
+                        m_fSettingsPwSet = true;
+                    }
+                    if (!fStdIn)
+                        RTStrmClose(pStrm);
+                }
+            }
+        }
+        /* Misc options: */
+        else if (!::strcmp(arg, "-comment") || !::strcmp(arg, "--comment"))
+        {
+            enmOptType = OptType_MaybeBoth;
+            ++i;
+        }
+        else if (!::strcmp(arg, "--no-startvm-errormsgbox"))
+        {
+            enmOptType = OptType_VMRunner;
+            m_fShowStartVMErrors = false;
+        }
+        else if (!::strcmp(arg, "--aggressive-caching"))
+        {
+            enmOptType = OptType_MaybeBoth;
+            m_fAgressiveCaching = true;
+        }
+        else if (!::strcmp(arg, "--no-aggressive-caching"))
+        {
+            enmOptType = OptType_MaybeBoth;
+            m_fAgressiveCaching = false;
+        }
+        else if (!::strcmp(arg, "--restore-current"))
+        {
+            enmOptType = OptType_VMRunner;
+            m_fRestoreCurrentSnapshot = true;
+        }
+        /* Ad hoc VM reconfig options: */
+        else if (!::strcmp(arg, "--fda"))
+        {
+            enmOptType = OptType_VMRunner;
+            if (++i < argc)
+                m_strFloppyImage = arguments.at(i);
+        }
+        else if (!::strcmp(arg, "--dvd") || !::strcmp(arg, "--cdrom"))
+        {
+            enmOptType = OptType_VMRunner;
+            if (++i < argc)
+                m_strDvdImage = arguments.at(i);
+        }
+        /* VMM Options: */
+        else if (!::strcmp(arg, "--disable-patm"))
+        {
+            enmOptType = OptType_VMRunner;
+            m_fDisablePatm = true;
+        }
+        else if (!::strcmp(arg, "--disable-csam"))
+        {
+            enmOptType = OptType_VMRunner;
+            m_fDisableCsam = true;
+        }
+        else if (!::strcmp(arg, "--recompile-supervisor"))
+        {
+            enmOptType = OptType_VMRunner;
+            m_fRecompileSupervisor = true;
+        }
+        else if (!::strcmp(arg, "--recompile-user"))
+        {
+            enmOptType = OptType_VMRunner;
+            m_fRecompileUser = true;
+        }
+        else if (!::strcmp(arg, "--recompile-all"))
+        {
+            enmOptType = OptType_VMRunner;
+            m_fDisablePatm = m_fDisableCsam = m_fRecompileSupervisor = m_fRecompileUser = true;
+        }
+        else if (!::strcmp(arg, "--execute-all-in-iem"))
+        {
+            enmOptType = OptType_VMRunner;
+            m_fDisablePatm = m_fDisableCsam = m_fExecuteAllInIem = true;
+        }
+        else if (!::strcmp(arg, "--warp-pct"))
+        {
+            enmOptType = OptType_VMRunner;
+            if (++i < argc)
+                m_uWarpPct = RTStrToUInt32(arguments.at(i).toLocal8Bit().constData());
+        }
+#ifdef VBOX_WITH_DEBUGGER_GUI
+        /* Debugger/Debugging options: */
+        else if (!::strcmp(arg, "-dbg") || !::strcmp(arg, "--dbg"))
+        {
+            enmOptType = OptType_VMRunner;
+            setDebuggerVar(&m_fDbgEnabled, true);
+        }
+        else if (!::strcmp( arg, "-debug") || !::strcmp(arg, "--debug"))
+        {
+            enmOptType = OptType_VMRunner;
+            setDebuggerVar(&m_fDbgEnabled, true);
+            setDebuggerVar(&m_fDbgAutoShow, true);
+            setDebuggerVar(&m_fDbgAutoShowCommandLine, true);
+            setDebuggerVar(&m_fDbgAutoShowStatistics, true);
+        }
+        else if (!::strcmp(arg, "--debug-command-line"))
+        {
+            enmOptType = OptType_VMRunner;
+            setDebuggerVar(&m_fDbgEnabled, true);
+            setDebuggerVar(&m_fDbgAutoShow, true);
+            setDebuggerVar(&m_fDbgAutoShowCommandLine, true);
+        }
+        else if (!::strcmp(arg, "--debug-statistics"))
+        {
+            enmOptType = OptType_VMRunner;
+            setDebuggerVar(&m_fDbgEnabled, true);
+            setDebuggerVar(&m_fDbgAutoShow, true);
+            setDebuggerVar(&m_fDbgAutoShowStatistics, true);
+        }
+        else if (!::strcmp(arg, "-no-debug") || !::strcmp(arg, "--no-debug"))
+        {
+            enmOptType = OptType_VMRunner;
+            setDebuggerVar(&m_fDbgEnabled, false);
+            setDebuggerVar(&m_fDbgAutoShow, false);
+            setDebuggerVar(&m_fDbgAutoShowCommandLine, false);
+            setDebuggerVar(&m_fDbgAutoShowStatistics, false);
+        }
+        /* Not quite debug options, but they're only useful with the debugger bits. */
+        else if (!::strcmp(arg, "--start-paused"))
+        {
+            enmOptType = OptType_VMRunner;
+            m_enmLaunchRunning = LaunchRunning_No;
+        }
+        else if (!::strcmp(arg, "--start-running"))
+        {
+            enmOptType = OptType_VMRunner;
+            m_enmLaunchRunning = LaunchRunning_Yes;
+        }
+#endif
+        if (enmOptType == OptType_VMRunner && m_enmType != UIType_RuntimeUI)
+            msgCenter().warnAboutUnrelatedOptionType(arg);
+
+        i++;
+    }
+
+    if (m_enmType == UIType_RuntimeUI && startVM)
+    {
+        /* m_fSeparateProcess makes sense only if a VM is started. */
+        m_fSeparateProcess = fSeparateProcess;
+
+        /* Search for corresponding VM: */
+        QUuid uuid = QUuid(vmNameOrUuid);
+        const CMachine machine = m_comVBox.FindMachine(vmNameOrUuid);
+        if (!uuid.isNull())
+        {
+            if (machine.isNull() && showStartVMErrors())
+                return msgCenter().cannotFindMachineById(m_comVBox, vmNameOrUuid);
+        }
+        else
+        {
+            if (machine.isNull() && showStartVMErrors())
+                return msgCenter().cannotFindMachineByName(m_comVBox, vmNameOrUuid);
+        }
+        m_strManagedVMId = machine.GetId();
+    }
+
+    /* For Selector UI: */
+    if (uiType() == UIType_SelectorUI)
+    {
+        /* We should create separate logging file for VM selector: */
+        char szLogFile[RTPATH_MAX];
+        const char *pszLogFile = NULL;
+        com::GetVBoxUserHomeDirectory(szLogFile, sizeof(szLogFile));
+        RTPathAppend(szLogFile, sizeof(szLogFile), "selectorwindow.log");
+        pszLogFile = szLogFile;
+        /* Create release logger, to file: */
+        com::VBoxLogRelCreate("GUI VM Selector Window",
+                              pszLogFile,
+                              RTLOGFLAGS_PREFIX_TIME_PROG,
+                              "all",
+                              "VBOX_GUI_SELECTORWINDOW_RELEASE_LOG",
+                              RTLOGDEST_FILE | RTLOGDEST_F_NO_DENY,
+                              UINT32_MAX,
+                              10,
+                              60 * 60,
+                              _1M,
+                              NULL /*pErrInfo*/);
+
+        LogRel(("Qt version: %s\n", qtRTVersionString().toUtf8().constData()));
+    }
+
+    if (m_fSettingsPwSet)
+        m_comVBox.SetSettingsSecret(m_astrSettingsPw);
+
+    if (visualStateType != UIVisualStateType_Invalid && !m_strManagedVMId.isNull())
+        gEDataManager->setRequestedVisualState(visualStateType, m_strManagedVMId);
+
+#ifdef VBOX_WITH_DEBUGGER_GUI
+    /* For Runtime UI: */
+    if (uiType() == UIType_RuntimeUI)
+    {
+        /* Setup the debugger GUI: */
+        if (RTEnvExist("VBOX_GUI_NO_DEBUGGER"))
+            m_fDbgEnabled = m_fDbgAutoShow =  m_fDbgAutoShowCommandLine = m_fDbgAutoShowStatistics = false;
+        if (m_fDbgEnabled)
+        {
+            RTERRINFOSTATIC ErrInfo;
+            RTErrInfoInitStatic(&ErrInfo);
+            int vrc = SUPR3HardenedLdrLoadAppPriv("VBoxDbg", &m_hVBoxDbg, RTLDRLOAD_FLAGS_LOCAL, &ErrInfo.Core);
+            if (RT_FAILURE(vrc))
+            {
+                m_hVBoxDbg = NIL_RTLDRMOD;
+                m_fDbgAutoShow = m_fDbgAutoShowCommandLine = m_fDbgAutoShowStatistics = false;
+                LogRel(("Failed to load VBoxDbg, rc=%Rrc - %s\n", vrc, ErrInfo.Core.pszMsg));
+            }
+        }
+    }
+#endif
+
+    m_fValid = true;
+
+    /* Create medium-enumerator but don't do any immediate caching: */
+    m_pMediumEnumerator = new UIMediumEnumerator;
+    {
+        /* Prepare medium-enumerator: */
+        connect(m_pMediumEnumerator, &UIMediumEnumerator::sigMediumCreated,
+                this, &UICommon::sigMediumCreated);
+        connect(m_pMediumEnumerator, &UIMediumEnumerator::sigMediumDeleted,
+                this, &UICommon::sigMediumDeleted);
+        connect(m_pMediumEnumerator, &UIMediumEnumerator::sigMediumEnumerationStarted,
+                this, &UICommon::sigMediumEnumerationStarted);
+        connect(m_pMediumEnumerator, &UIMediumEnumerator::sigMediumEnumerated,
+                this, &UICommon::sigMediumEnumerated);
+        connect(m_pMediumEnumerator, &UIMediumEnumerator::sigMediumEnumerationFinished,
+                this, &UICommon::sigMediumEnumerationFinished);
+    }
+
+    /* Create shortcut pool: */
+    UIShortcutPool::create();
+
+#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
+    /* Create network manager: */
+    UINetworkManager::create();
+
+    /* Schedule update manager: */
+    UIUpdateManager::schedule();
+#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
+
+#ifdef RT_OS_LINUX
+    /* Make sure no wrong USB mounted: */
+    checkForWrongUSBMounted();
+#endif /* RT_OS_LINUX */
+
+    /* Populate the list of medium names to be excluded from the
+       recently used media extra data: */
+#if 0 /* bird: This is counter productive as it is _frequently_ necessary to re-insert the
+               viso to refresh the files (like after you rebuilt them on the host).
+               The guest caches ISOs aggressively and files sizes may change. */
+    m_recentMediaExcludeList << "ad-hoc.viso";
+#endif
+}
+
+void UICommon::cleanup()
+{
+    /// @todo Shouldn't that be protected with a mutex or something?
+    /* Remember that the cleanup is in progress preventing any unwanted
+     * stuff which could be called from the other threads: */
+    s_fCleaningUp = true;
+
+#ifdef VBOX_WITH_DEBUGGER_GUI
+    /* For Runtime UI: */
+    if (   uiType() == UIType_RuntimeUI
+        && m_hVBoxDbg != NIL_RTLDRMOD)
+    {
+        RTLdrClose(m_hVBoxDbg);
+        m_hVBoxDbg = NIL_RTLDRMOD;
+    }
+#endif
+
+#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
+    /* Shutdown update manager: */
+    UIUpdateManager::shutdown();
+
+    /* Destroy network manager: */
+    UINetworkManager::destroy();
+#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
+
+    /* Destroy shortcut pool: */
+    UIShortcutPool::destroy();
+
+#ifdef VBOX_GUI_WITH_PIDFILE
+    deletePidfile();
+#endif /* VBOX_GUI_WITH_PIDFILE */
+
+    /* Starting medium-enumerator cleanup: */
+    m_meCleanupProtectionToken.lockForWrite();
+    {
+        /* Destroy medium-enumerator: */
+        delete m_pMediumEnumerator;
+        m_pMediumEnumerator = 0;
+    }
+    /* Finishing medium-enumerator cleanup: */
+    m_meCleanupProtectionToken.unlock();
+
+    /* Destroy the global (VirtualBox) Main event handler
+     * which is used in both Selector and Runtime UI. */
+    UIVirtualBoxEventHandler::destroy();
+
+    /* Destroy the extra-data manager finally after everything
+     * above which could use it already destroyed: */
+    UIExtraDataManager::destroy();
+
+    /* Cleanup converter: */
+    UIConverter::cleanup();
+
+    /* Cleanup thread-pool: */
+    delete m_pThreadPool;
+    m_pThreadPool = 0;
+    /* Cleanup general icon-pool: */
+    delete m_pIconPool;
+    m_pIconPool = 0;
+
+    /* Ensure CGuestOSType objects are no longer used: */
+    m_guestOSFamilyIDs.clear();
+    m_guestOSTypes.clear();
+
+    /* Starting COM cleanup: */
+    m_comCleanupProtectionToken.lockForWrite();
+    {
+        /* First, make sure we don't use COM any more: */
+        m_comHost.detach();
+        m_comVBox.detach();
+        m_comVBoxClient.detach();
+
+        /* There may be UIMedium(s)EnumeratedEvent instances still in the message
+         * queue which reference COM objects. Remove them to release those objects
+         * before uninitializing the COM subsystem. */
+        QApplication::removePostedEvents(this);
+
+        /* Finally cleanup COM itself: */
+        COMBase::CleanupCOM();
+    }
+    /* Finishing COM cleanup: */
+    m_comCleanupProtectionToken.unlock();
+
+    /* Destroy popup-center: */
+    UIPopupCenter::destroy();
+    /* Destroy message-center: */
+    UIMessageCenter::destroy();
+
+    /* Destroy desktop-widget watchdog: */
+    UIDesktopWidgetWatchdog::destroy();
+
+    m_fValid = false;
+}
+
+void UICommon::sltHandleCommitDataRequest(QSessionManager &manager)
+{
+    LogRel(("GUI: UICommon::sltHandleCommitDataRequest: Emergency shutdown initiated\n"));
+
+    /* Ask listener to commit data: */
+    emit sigAskToCommitData();
+
+    /* Ask session manager to postpone shutdown until we done: */
+    manager.cancel();
+
+#ifdef VBOX_WS_WIN
+    // WORKAROUND:
+    // In theory that's Qt5 who should allow us to provide postponing reason as well,
+    // but that functionality seems missed in Windows platform plugin, so we are making that ourselves.
+    // That also implies that since we had postponed a shutdown process, host will send us WM_QUIT to
+    // allow to properly do an application cleanup first. That signal will cause QApplication to quit().
+    ShutdownBlockReasonCreateAPI((HWND)windowManager().mainWindowShown()->winId(), L"Shutdown in progress...");
+#endif
+}
+
+void UICommon::sltHandleVBoxSVCAvailabilityChange(bool fAvailable)
+{
+    /* Make sure the VBoxSVC availability changed: */
+    if (m_fVBoxSVCAvailable == fAvailable)
+        return;
+
+    /* Cache the new VBoxSVC availability value: */
+    m_fVBoxSVCAvailable = fAvailable;
+
+    /* If VBoxSVC is not available: */
+    if (!m_fVBoxSVCAvailable)
+    {
+        /* Mark wrappers invalid: */
+        m_fWrappersValid = false;
+        /* Re-fetch corresponding CVirtualBox to restart VBoxSVC: */
+        m_comVBox = m_comVBoxClient.GetVirtualBox();
+        if (!m_comVBoxClient.isOk())
+        {
+            // The proper behavior would be to show the message and to exit the app, e.g.:
+            // msgCenter().cannotAcquireVirtualBox(m_comVBoxClient);
+            // return QApplication::quit();
+            // But CVirtualBox is still NULL in current Main implementation,
+            // and this call do not restart anything, so we are waiting
+            // for subsequent event about VBoxSVC is available again.
+        }
+    }
+    /* If VBoxSVC is available: */
+    else
+    {
+        if (!m_fWrappersValid)
+        {
+            /* Re-fetch corresponding CVirtualBox: */
+            m_comVBox = m_comVBoxClient.GetVirtualBox();
+            if (!m_comVBoxClient.isOk())
+            {
+                msgCenter().cannotAcquireVirtualBox(m_comVBoxClient);
+                return QApplication::quit();
+            }
+            /* Re-init wrappers: */
+            comWrappersReinit();
+
+            /* For Selector UI: */
+            if (uiType() == UIType_SelectorUI)
+            {
+                /* Recreate Main event listeners: */
+                UIVirtualBoxEventHandler::destroy();
+                UIExtraDataManager::destroy();
+                UIExtraDataManager::instance();
+                UIVirtualBoxEventHandler::instance();
+                /* Ask UIStarter to restart UI: */
+                emit sigAskToRestartUI();
+            }
+        }
+    }
+
+    /* Notify listeners about the VBoxSVC availability change: */
+    emit sigVBoxSVCAvailabilityChange();
+}
+
+#ifdef VBOX_WS_WIN
+/* static */
+BOOL UICommon::ShutdownBlockReasonCreateAPI(HWND hWnd, LPCWSTR pwszReason)
+{
+    BOOL fResult = FALSE;
+    typedef BOOL(WINAPI *PFNSHUTDOWNBLOCKREASONCREATE)(HWND hWnd, LPCWSTR pwszReason);
+
+    PFNSHUTDOWNBLOCKREASONCREATE pfn = (PFNSHUTDOWNBLOCKREASONCREATE)GetProcAddress(
+        GetModuleHandle(L"User32.dll"), "ShutdownBlockReasonCreate");
+    _ASSERTE(pfn);
+    if (pfn)
+        fResult = pfn(hWnd, pwszReason);
+    return fResult;
+}
+#endif
+
+#ifdef VBOX_WITH_DEBUGGER_GUI
+
+# define UICOMMON_DBG_CFG_VAR_FALSE       (0)
+# define UICOMMON_DBG_CFG_VAR_TRUE        (1)
+# define UICOMMON_DBG_CFG_VAR_MASK        (1)
+# define UICOMMON_DBG_CFG_VAR_CMD_LINE    RT_BIT(3)
+# define UICOMMON_DBG_CFG_VAR_DONE        RT_BIT(4)
+
+void UICommon::initDebuggerVar(int *piDbgCfgVar, const char *pszEnvVar, const char *pszExtraDataName, bool fDefault)
+{
+    QString strEnvValue;
+    char    szEnvValue[256];
+    int rc = RTEnvGetEx(RTENV_DEFAULT, pszEnvVar, szEnvValue, sizeof(szEnvValue), NULL);
+    if (RT_SUCCESS(rc))
+    {
+        strEnvValue = QString::fromUtf8(&szEnvValue[0]).toLower().trimmed();
+        if (strEnvValue.isEmpty())
+            strEnvValue = "yes";
+    }
+    else if (rc != VERR_ENV_VAR_NOT_FOUND)
+        strEnvValue = "veto";
+
+    QString strExtraValue = m_comVBox.GetExtraData(pszExtraDataName).toLower().trimmed();
+    if (strExtraValue.isEmpty())
+        strExtraValue = QString();
+
+    if ( strEnvValue.contains("veto") || strExtraValue.contains("veto"))
+        *piDbgCfgVar = UICOMMON_DBG_CFG_VAR_DONE | UICOMMON_DBG_CFG_VAR_FALSE;
+    else if (strEnvValue.isNull() && strExtraValue.isNull())
+        *piDbgCfgVar = fDefault ? UICOMMON_DBG_CFG_VAR_TRUE : UICOMMON_DBG_CFG_VAR_FALSE;
+    else
+    {
+        QString *pStr = !strEnvValue.isEmpty() ? &strEnvValue : &strExtraValue;
+        if (   pStr->startsWith("y")  // yes
+            || pStr->startsWith("e")  // enabled
+            || pStr->startsWith("t")  // true
+            || pStr->startsWith("on")
+            || pStr->toLongLong() != 0)
+            *piDbgCfgVar = UICOMMON_DBG_CFG_VAR_TRUE;
+        else if (   pStr->startsWith("n")  // o
+                 || pStr->startsWith("d")  // disable
+                 || pStr->startsWith("f")  // false
+                 || pStr->startsWith("off")
+                 || pStr->contains("veto") /* paranoia */
+                 || pStr->toLongLong() == 0)
+            *piDbgCfgVar = UICOMMON_DBG_CFG_VAR_FALSE;
+        else
+        {
+            LogFunc(("Ignoring unknown value '%s' for '%s'\n", pStr->toUtf8().constData(), pStr == &strEnvValue ? pszEnvVar : pszExtraDataName));
+            *piDbgCfgVar = fDefault ? UICOMMON_DBG_CFG_VAR_TRUE : UICOMMON_DBG_CFG_VAR_FALSE;
+        }
+    }
+}
+
+void UICommon::setDebuggerVar(int *piDbgCfgVar, bool fState)
+{
+    if (!(*piDbgCfgVar & UICOMMON_DBG_CFG_VAR_DONE))
+        *piDbgCfgVar = (fState ? UICOMMON_DBG_CFG_VAR_TRUE : UICOMMON_DBG_CFG_VAR_FALSE)
+                     | UICOMMON_DBG_CFG_VAR_CMD_LINE;
+}
+
+bool UICommon::isDebuggerWorker(int *piDbgCfgVar, const char *pszExtraDataName) const
+{
+    if (!(*piDbgCfgVar & UICOMMON_DBG_CFG_VAR_DONE))
+    {
+        const QString str = gEDataManager->debugFlagValue(pszExtraDataName);
+        if (str.contains("veto"))
+            *piDbgCfgVar = UICOMMON_DBG_CFG_VAR_DONE | UICOMMON_DBG_CFG_VAR_FALSE;
+        else if (str.isEmpty() || (*piDbgCfgVar & UICOMMON_DBG_CFG_VAR_CMD_LINE))
+            *piDbgCfgVar |= UICOMMON_DBG_CFG_VAR_DONE;
+        else if (   str.startsWith("y")  // yes
+                 || str.startsWith("e")  // enabled
+                 || str.startsWith("t")  // true
+                 || str.startsWith("on")
+                 || str.toLongLong() != 0)
+            *piDbgCfgVar = UICOMMON_DBG_CFG_VAR_DONE | UICOMMON_DBG_CFG_VAR_TRUE;
+        else if (   str.startsWith("n")  // no
+                 || str.startsWith("d")  // disable
+                 || str.startsWith("f")  // false
+                 || str.toLongLong() == 0)
+            *piDbgCfgVar = UICOMMON_DBG_CFG_VAR_DONE | UICOMMON_DBG_CFG_VAR_FALSE;
+        else
+            *piDbgCfgVar |= UICOMMON_DBG_CFG_VAR_DONE;
+    }
+
+    return (*piDbgCfgVar & UICOMMON_DBG_CFG_VAR_MASK) == UICOMMON_DBG_CFG_VAR_TRUE;
+}
+
+#endif /* VBOX_WITH_DEBUGGER_GUI */
+
+void UICommon::comWrappersReinit()
+{
+    /* Re-fetch corresponding objects/values: */
+    m_comHost = virtualBox().GetHost();
+    m_strHomeFolder = virtualBox().GetHomeFolder();
+
+    /* Re-initialize guest OS Type list: */
+    m_guestOSFamilyIDs.clear();
+    m_guestOSTypes.clear();
+    const CGuestOSTypeVector guestOSTypes = m_comVBox.GetGuestOSTypes();
+    const int cGuestOSTypeCount = guestOSTypes.size();
+    AssertMsg(cGuestOSTypeCount > 0, ("Number of OS types must not be zero"));
+    if (cGuestOSTypeCount > 0)
+    {
+        /* Here we ASSUME the 'Other' types are always the first,
+         * so we remember them and will append them to the list when finished.
+         * We do a two pass, first adding the specific types, then the two 'Other' types. */
+        for (int j = 0; j < 2; ++j)
+        {
+            int cMax = j == 0 ? cGuestOSTypeCount : RT_MIN(2, cGuestOSTypeCount);
+            for (int i = j == 0 ? 2 : 0; i < cMax; ++i)
+            {
+                const CGuestOSType os = guestOSTypes.at(i);
+                const QString strFamilyID = os.GetFamilyId();
+                const QString strFamilyDescription = os.GetFamilyDescription();
+                if (!m_guestOSFamilyIDs.contains(strFamilyID))
+                {
+                    m_guestOSFamilyIDs << strFamilyID;
+                    m_guestOSFamilyDescriptions[strFamilyID] = strFamilyDescription;
+                    m_guestOSTypes << QList<CGuestOSType>();
+                }
+                m_guestOSTypes[m_guestOSFamilyIDs.indexOf(strFamilyID)].append(os);
+            }
+        }
+    }
+
+    /* Mark wrappers valid: */
+    m_fWrappersValid = true;
+}
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.h	(revision 79365)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.h	(revision 79365)
@@ -0,0 +1,947 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UICommon class declaration.
+ */
+
+/*
+ * Copyright (C) 2006-2019 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 FEQT_INCLUDED_SRC_globals_UICommon_h
+#define FEQT_INCLUDED_SRC_globals_UICommon_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+/* Qt includes: */
+#include <QFileIconProvider>
+#include <QMap>
+#include <QReadWriteLock>
+
+/* GUI includes: */
+#include "UIDefs.h"
+#include "UILibraryDefs.h"
+#include "UIMediumDefs.h"
+#ifdef VBOX_WS_X11
+# include "VBoxX11Helper.h"
+#endif
+
+/* COM includes: */
+#include "VBox/com/Guid.h"
+#include "CGuestOSType.h"
+#include "CHost.h"
+#include "CMedium.h"
+#include "CSession.h"
+#include "CVirtualBoxClient.h"
+#include "CVirtualBox.h"
+
+/* Other includes: */
+#ifdef VBOX_WS_X11
+# include <X11/Xdefs.h>
+#endif
+
+/* Forward declarations: */
+class QGraphicsWidget;
+class QMenu;
+class QSessionManager;
+class QSpinBox;
+class QToolButton;
+class CHostVideoInputDevice;
+class CMachine;
+class CUSBDevice;
+class UIMedium;
+class UIMediumEnumerator;
+class UIIconPoolGeneral;
+class UIThreadPool;
+
+/** QObject subclass containing common GUI functionality. */
+class SHARED_LIBRARY_STUFF UICommon : public QObject
+{
+    Q_OBJECT;
+
+signals:
+
+    /** @name Common stuff.
+     * @{ */
+        /** Asks #UIStarter listener to commit data. */
+        void sigAskToCommitData();
+    /** @} */
+
+    /** @name COM stuff.
+     * @{ */
+        /** Asks #UIStarter listener to restart UI. */
+        void sigAskToRestartUI();
+
+        /** Notifies listeners about the VBoxSVC availability change. */
+        void sigVBoxSVCAvailabilityChange();
+    /** @} */
+
+    /** @name COM: Virtual Media stuff.
+     * @{ */
+        /** Notifies listeners about medium with certain @a uMediumID created. */
+        void sigMediumCreated(const QUuid &uMediumID);
+        /** Notifies listeners about medium with certain @a uMediumID deleted. */
+        void sigMediumDeleted(const QUuid &uMediumID);
+
+        /** Notifies listeners about medium-enumeration started. */
+        void sigMediumEnumerationStarted();
+        /** Notifies listeners about medium with certain @a uMediumID enumerated. */
+        void sigMediumEnumerated(const QUuid &uMediumID);
+        /** Notifies listeners about medium-enumeration finished. */
+        void sigMediumEnumerationFinished();
+    /** @} */
+
+public:
+
+    /** UI types. */
+    enum UIType
+    {
+        UIType_SelectorUI,
+        UIType_RuntimeUI
+    };
+
+    /** VM launch modes. */
+    enum LaunchMode
+    {
+        LaunchMode_Invalid,
+        LaunchMode_Default,
+        LaunchMode_Headless,
+        LaunchMode_Separate
+    };
+
+    /** VM launch running options. */
+    enum LaunchRunning
+    {
+        LaunchRunning_Default, /**< Default (depends on debug settings). */
+        LaunchRunning_No,      /**< Start the VM paused. */
+        LaunchRunning_Yes      /**< Start the VM running. */
+    };
+
+    /** Returns UICommon instance. */
+    static UICommon *instance() { return s_pInstance; }
+    /** Creates UICommon instance of passed @a enmType. */
+    static void create(UIType enmType);
+    /** Destroys UICommon instance. */
+    static void destroy();
+
+    /** @name Common stuff.
+     * @{ */
+        /** Returns whether UICommon cleanup is in progress. */
+        static bool isCleaningUp() { return s_fCleaningUp; }
+
+        /** Returns Qt runtime version string. */
+        static QString qtRTVersionString();
+        /** Returns Qt runtime version. */
+        static uint qtRTVersion();
+        /** Returns Qt runtime major version. */
+        static uint qtRTMajorVersion();
+        /** Returns Qt runtime minor version. */
+        static uint qtRTMinorVersion();
+        /** Returns Qt runtime revision number. */
+        static uint qtRTRevisionNumber();
+
+        /** Returns Qt compiled version string. */
+        static QString qtCTVersionString();
+        /** Returns Qt compiled version. */
+        static uint qtCTVersion();
+
+        /** Returns whether UICommon instance is properly initialized. */
+        bool isValid() const { return m_fValid; }
+
+        /** Returns the UI type. */
+        UIType uiType() const { return m_enmType; }
+
+        /** Returns VBox version string. */
+        QString vboxVersionString() const;
+        /** Returns normalized VBox version string. */
+        QString vboxVersionStringNormalized() const;
+        /** Returns whether VBox version string contains BETA word. */
+        bool isBeta() const;
+
+#ifdef VBOX_WS_MAC
+        /** Mac OS X: Returns #MacOSXRelease determined by <i>uname</i> call. */
+        static MacOSXRelease determineOsRelease();
+        /** Mac OS X: Returns #MacOSXRelease determined during UICommon prepare routine. */
+        MacOSXRelease osRelease() const { return m_enmMacOSVersion; }
+#endif
+
+#ifdef VBOX_WS_X11
+        /** X11: Returns whether the Window Manager we are running under is composition one. */
+        bool isCompositingManagerRunning() const { return m_fCompositingManagerRunning; }
+        /** X11: Returns the type of the Window Manager we are running under. */
+        X11WMType typeOfWindowManager() const { return m_enmWindowManagerType; }
+#endif
+
+        /** Returns whether branding is active. */
+        bool brandingIsActive(bool fForce = false);
+        /** Returns value for certain branding @a strKey from custom.ini file. */
+        QString brandingGetKey(QString strKey);
+        /** Returns a file name (unique up to extension) wrt. @a strFullFolderPath folder content. Starts
+          * searching strBaseFileName and adds suffixes until a unique file name is found. */
+        static QString findUniqueFileName(const QString &strFullFolderPath, const QString &strBaseFileName);
+    /** @} */
+
+    /** @name Process arguments stuff.
+     * @{ */
+        /** Returns whether passed @a strExt ends with one of allowed extension in the @a extList. */
+        static bool hasAllowedExtension(const QString &strExt, const QStringList &extList);
+
+        /** Process application args. */
+        bool processArgs();
+
+        /** Returns whether there are unhandled URL arguments present. */
+        bool argumentUrlsPresent() const;
+        /** Takes and returns the URL argument list while clearing the source. */
+        QList<QUrl> takeArgumentUrls();
+
+        /** Returns the --startvm option value (managed VM id). */
+        QUuid managedVMUuid() const { return m_strManagedVMId; }
+        /** Returns the --separate option value (whether GUI process is separate from VM process). */
+        bool isSeparateProcess() const { return m_fSeparateProcess; }
+        /** Returns the --no-startvm-errormsgbox option value (whether startup VM errors are disabled). */
+        bool showStartVMErrors() const { return m_fShowStartVMErrors; }
+
+        /** Returns the --aggressive-caching / --no-aggressive-caching option value (whether medium-enumeration is required). */
+        bool agressiveCaching() const { return m_fAgressiveCaching; }
+
+        /** Returns the --restore-current option value (whether we should restore current snapshot before VM started). */
+        bool shouldRestoreCurrentSnapshot() const { return m_fRestoreCurrentSnapshot; }
+        /** Defines whether we should fRestore current snapshot before VM started. */
+        void setShouldRestoreCurrentSnapshot(bool fRestore) { m_fRestoreCurrentSnapshot = fRestore; }
+
+        /** Returns the --fda option value (whether we have floppy image). */
+        bool hasFloppyImageToMount() const { return !m_strFloppyImage.isNull(); }
+        /** Returns the --dvd | --cdrom option value (whether we have DVD image). */
+        bool hasDvdImageToMount() const { return !m_strDvdImage.isNull(); }
+        /** Returns floppy image name. */
+        QUuid const &getFloppyImage() const { return m_strFloppyImage; }
+        /** Returns DVD image name. */
+        QUuid const &getDvdImage() const { return m_strDvdImage; }
+
+        /** Returns the --disable-patm option value. */
+        bool isPatmDisabled() const { return m_fDisablePatm; }
+        /** Returns the --disable-csam option value. */
+        bool isCsamDisabled() const { return m_fDisableCsam; }
+        /** Returns the --recompile-supervisor option value. */
+        bool isSupervisorCodeExecedRecompiled() const { return m_fRecompileSupervisor; }
+        /** Returns the --recompile-user option value. */
+        bool isUserCodeExecedRecompiled() const { return m_fRecompileUser; }
+        /** Returns the --execute-all-in-iem option value. */
+        bool areWeToExecuteAllInIem() const { return m_fExecuteAllInIem; }
+        /** Returns whether --warp-factor option value is equal to 100. */
+        bool isDefaultWarpPct() const { return m_uWarpPct == 100; }
+        /** Returns the --warp-factor option value. */
+        uint32_t getWarpPct() const { return m_uWarpPct; }
+
+#ifdef VBOX_WITH_DEBUGGER_GUI
+        /** Holds whether the debugger should be accessible. */
+        bool isDebuggerEnabled() const;
+        /** Holds whether to show the debugger automatically with the console. */
+        bool isDebuggerAutoShowEnabled() const;
+        /** Holds whether to show the command line window when m_fDbgAutoShow is set. */
+        bool isDebuggerAutoShowCommandLineEnabled() const;
+        /** Holds whether to show the statistics window when m_fDbgAutoShow is set. */
+        bool isDebuggerAutoShowStatisticsEnabled() const;
+
+        /** VBoxDbg module handle. */
+        RTLDRMOD getDebuggerModule() const { return m_hVBoxDbg; }
+#endif
+
+        /** Returns whether VM should start paused. */
+        bool shouldStartPaused() const;
+
+#ifdef VBOX_GUI_WITH_PIDFILE
+        /** Creates PID file. */
+        void createPidfile();
+        /** Deletes PID file. */
+        void deletePidfile();
+#endif
+    /** @} */
+
+    /** @name Localization stuff.
+     * @{ */
+        /** Native language name of the currently installed translation. */
+        static QString languageName();
+        /** Native language country name of the currently installed translation. */
+        static QString languageCountry();
+        /** Language name of the currently installed translation, in English. */
+        static QString languageNameEnglish();
+        /** Language country name of the currently installed translation, in English. */
+        static QString languageCountryEnglish();
+        /** Comma-separated list of authors of the currently installed translation. */
+        static QString languageTranslators();
+
+        /** Returns VBox language sub-directory. */
+        static QString vboxLanguageSubDirectory();
+        /** Returns VBox language file-base. */
+        static QString vboxLanguageFileBase();
+        /** Returns VBox language file-extension. */
+        static QString vboxLanguageFileExtension();
+        /** Returns VBox language ID reg-exp. */
+        static QString vboxLanguageIdRegExp();
+        /** Returns built in language name. */
+        static QString vboxBuiltInLanguageName();
+
+        /** Returns the loaded (active) language ID. */
+        static QString languageId();
+        /** Returns the system language ID. */
+        static QString systemLanguageId();
+
+        /** Loads the language by language ID.
+          * @param  strLangId  Brings the language ID in in form of xx_YY.
+          *                    QString() means the system default language. */
+        static void loadLanguage(const QString &strLangId = QString());
+
+        /** Returns tr("%n year(s)"). */
+        static QString yearsToString(uint32_t cVal);
+        /** Returns tr("%n month(s)"). */
+        static QString monthsToString(uint32_t cVal);
+        /** Returns tr("%n day(s)"). */
+        static QString daysToString(uint32_t cVal);
+        /** Returns tr("%n hour(s)"). */
+        static QString hoursToString(uint32_t cVal);
+        /** Returns tr("%n minute(s)"). */
+        static QString minutesToString(uint32_t cVal);
+        /** Returns tr("%n second(s)"). */
+        static QString secondsToString(uint32_t cVal);
+
+        /** Returns the decimal separator for the current locale. */
+        static QChar decimalSep();
+        /** Returns the regexp string that defines the format of the human-readable size representation. */
+        static QString sizeRegexp();
+        /** Parses the given size strText and returns the size value in bytes. */
+        static quint64 parseSize(const QString &strText);
+        /** Parses the given size strText and returns the size suffix. */
+        static SizeSuffix parseSizeSuffix(const QString &strText);
+        /** Parses the given string @a strText and returns true if it includes a size suffix. */
+        static bool hasSizeSuffix(const QString &strText);
+        /** Formats the given @a uSize value in bytes to a human readable string.
+          * @param  uSize     Brings the size value in bytes.
+          * @param  enmMode   Brings the conversion mode.
+          * @param  cDecimal  Brings the number of decimal digits in result. */
+        static QString formatSize(quint64 uSize, uint cDecimal = 2, FormatSize enmMode = FormatSize_Round);
+
+        /** Returns the list of the standard COM port names (i.e. "COMx"). */
+        static QStringList COMPortNames();
+        /** Returns the name of the standard COM port corresponding to the given parameters,
+          * or "User-defined" (which is also returned when both @a uIRQ and @a uIOBase are 0). */
+        static QString toCOMPortName(ulong uIRQ, ulong uIOBase);
+        /** Returns port parameters corresponding to the given standard COM name.
+          * Returns @c true on success, or @c false if the given port name is not one of the standard names (i.e. "COMx"). */
+        static bool toCOMPortNumbers(const QString &strName, ulong &uIRQ, ulong &uIOBase);
+        /** Returns the list of the standard LPT port names (i.e. "LPTx"). */
+        static QStringList LPTPortNames();
+        /** Returns the name of the standard LPT port corresponding to the given parameters,
+          * or "User-defined" (which is also returned when both @a uIRQ and @a uIOBase are 0). */
+        static QString toLPTPortName(ulong uIRQ, ulong uIOBase);
+        /** Returns port parameters corresponding to the given standard LPT name.
+          * Returns @c true on success, or @c false if the given port name is not one of the standard names (i.e. "LPTx"). */
+        static bool toLPTPortNumbers(const QString &strName, ulong &uIRQ, ulong &uIOBase);
+
+        /** Reformats the input @a strText to highlight it. */
+        static QString highlight(QString strText, bool fToolTip = false);
+        /** Reformats the input @a strText to emphasize it. */
+        static QString emphasize(QString strText);
+        /** Removes the first occurrence of the accelerator mark (the ampersand symbol) from the given @a strText. */
+        static QString removeAccelMark(QString strText);
+        /** Inserts a passed @a strKey into action @a strText. */
+        static QString insertKeyToActionText (const QString &strText, const QString &strKey);
+    /** @} */
+
+    /** @name File-system stuff.
+     * @{ */
+        /** Returns full help file name. */
+        static QString helpFile();
+
+        /** Returns documents path. */
+        static QString documentsPath();
+    /** @} */
+
+    /** @name Window/widget stuff.
+     * @{ */
+        /** Search position for @a rectangle to make sure it is fully contained @a boundRegion. */
+        static QRect normalizeGeometry(const QRect &rectangle, const QRegion &boundRegion,
+                                       bool fCanResize = true);
+        /** Ensures that the given rectangle @a rectangle is fully contained within the region @a boundRegion. */
+        static QRect getNormalized(const QRect &rectangle, const QRegion &boundRegion,
+                                   bool fCanResize = true);
+        /** Returns the flipped (transposed) @a region. */
+        static QRegion flip(const QRegion &region);
+
+        /** Aligns the center of @a pWidget with the center of @a pRelative. */
+        static void centerWidget(QWidget *pWidget, QWidget *pRelative, bool fCanResize = true);
+
+        /** Assigns top-level @a pWidget geometry passed as QRect coordinates.
+          * @note  Take into account that this request may fail on X11. */
+        static void setTopLevelGeometry(QWidget *pWidget, int x, int y, int w, int h);
+        /** Assigns top-level @a pWidget geometry passed as @a rect.
+          * @note  Take into account that this request may fail on X11. */
+        static void setTopLevelGeometry(QWidget *pWidget, const QRect &rect);
+
+        /** Activates the specified window with given @a wId. Can @a fSwitchDesktop if requested. */
+        static bool activateWindow(WId wId, bool fSwitchDesktop = true);
+
+        /** Does some checks on certain platforms before calling QWidget::setCursor(...). */
+        static void setCursor(QWidget *pWidget, const QCursor &cursor);
+        static void setCursor(QGraphicsWidget *pWidget, const QCursor &cursor);
+        static void unsetCursor(QWidget *pWidget);
+        static void unsetCursor(QGraphicsWidget *pWidget);
+
+#ifdef VBOX_WS_X11
+        /** X11: Test whether the current window manager supports full screen mode. */
+        static bool supportsFullScreenMonitorsProtocolX11();
+        /** X11: Performs mapping of the passed @a pWidget to host-screen with passed @a uScreenId. */
+        static bool setFullScreenMonitorX11(QWidget *pWidget, ulong uScreenId);
+
+        /** X11: Returns a list of current _NET_WM_STATE flags for passed @a pWidget. */
+        static QVector<Atom> flagsNetWmState(QWidget *pWidget);
+        /** X11: Check whether _NET_WM_STATE_FULLSCREEN flag is set for passed @a pWidget. */
+        static bool isFullScreenFlagSet(QWidget *pWidget);
+        /** X11: Sets _NET_WM_STATE_FULLSCREEN flag for passed @a pWidget. */
+        static void setFullScreenFlag(QWidget *pWidget);
+        /** X11: Sets _NET_WM_STATE_SKIP_TASKBAR flag for passed @a pWidget. */
+        static void setSkipTaskBarFlag(QWidget *pWidget);
+        /** X11: Sets _NET_WM_STATE_SKIP_PAGER flag for passed @a pWidget. */
+        static void setSkipPagerFlag(QWidget *pWidget);
+
+        /** Assigns WM_CLASS property for passed @a pWidget. */
+        static void setWMClass(QWidget *pWidget, const QString &strNameString, const QString &strClassString);
+#endif /* VBOX_WS_X11 */
+
+        /** Assigns minimum @a pSpinBox to correspond to @a cCount digits. */
+        static void setMinimumWidthAccordingSymbolCount(QSpinBox *pSpinBox, int cCount);
+    /** @} */
+
+    /** @name COM stuff.
+     * @{ */
+        /** Try to acquire COM cleanup protection token for reading. */
+        bool comTokenTryLockForRead() { return m_comCleanupProtectionToken.tryLockForRead(); }
+        /** Unlock previously acquired COM cleanup protection token. */
+        void comTokenUnlock() { return m_comCleanupProtectionToken.unlock(); }
+
+        /** Returns the copy of VirtualBox client wrapper. */
+        CVirtualBoxClient virtualBoxClient() const { return m_comVBoxClient; }
+        /** Returns the copy of VirtualBox object wrapper. */
+        CVirtualBox virtualBox() const { return m_comVBox; }
+        /** Returns the copy of VirtualBox host-object wrapper. */
+        CHost host() const { return m_comHost; }
+        /** Returns the symbolic VirtualBox home-folder representation. */
+        QString homeFolder() const { return m_strHomeFolder; }
+
+        /** Returns the VBoxSVC availability value. */
+        bool isVBoxSVCAvailable() const { return m_fVBoxSVCAvailable; }
+    /** @} */
+
+    /** @name COM: Guest OS Type.
+     * @{ */
+        /** Returns the list of family IDs. */
+        QList<QString> vmGuestOSFamilyIDs() const { return m_guestOSFamilyIDs; }
+
+        /** Returns a family description with passed @a strFamilyId. */
+        QString vmGuestOSFamilyDescription(const QString &strFamilyId) const;
+        /** Returns a list of all guest OS types with passed @a strFamilyId. */
+        QList<CGuestOSType> vmGuestOSTypeList(const QString &strFamilyId) const;
+
+        /** Returns the guest OS type for passed @a strTypeId.
+          * It is being serached through the list of family with passed @a strFamilyId if specified. */
+        CGuestOSType vmGuestOSType(const QString &strTypeId, const QString &strFamilyId = QString()) const;
+        /** Returns a type description with passed @a strTypeId. */
+        QString vmGuestOSTypeDescription(const QString &strTypeId) const;
+
+        /** Returns whether guest type with passed @a strOSTypeId is one of DOS types. */
+        static bool isDOSType(const QString &strOSTypeId);
+    /** @} */
+
+    /** @name COM: Virtual Machine stuff.
+     * @{ */
+        /** Switches to certain @a comMachine. */
+        static bool switchToMachine(CMachine &comMachine);
+        /** Launches certain @a comMachine in specified @a enmLaunchMode. */
+        bool launchMachine(CMachine &comMachine, LaunchMode enmLaunchMode = LaunchMode_Default);
+
+        /** Opens session of certain @a enmLockType for VM with certain @a uId. */
+        CSession openSession(const QUuid &uId, KLockType enmLockType = KLockType_Write);
+        /** Opens session of KLockType_Shared type for VM with certain @a uId. */
+        CSession openExistingSession(const QUuid &uId) { return openSession(uId, KLockType_Shared); }
+    /** @} */
+
+    /** @name COM: Virtual Media stuff.
+     * @{ */
+        /** Starts medium-enumeration. */
+        void startMediumEnumeration(const CMediumVector &mediaList = CMediumVector());
+        /** Enumerates additional medium. */
+        void enumerateAdditionalMedium(const CMedium &comMedium);
+        /** Calls refresh for each medium which has been already enumerated. */
+        void refreshMedia();
+        /** Returns whether medium-enumeration is in progress. */
+        bool isMediumEnumerationInProgress() const;
+#ifdef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
+        /** Returns whether full medium-enumeration is requested. */
+        bool isFullMediumEnumerationRequested() const;
+#endif
+        /** Returns enumerated medium with certain @a uMediumID. */
+        UIMedium medium(const QUuid &uMediumID) const;
+        /** Returns enumerated medium IDs. */
+        QList<QUuid> mediumIDs() const;
+        /** Creates medium on the basis of passed @a guiMedium description. */
+        void createMedium(const UIMedium &guiMedium);
+#ifndef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
+        /** Deletes medium with certain @a uMediumID. */
+        void deleteMedium(const QUuid &uMediumID);
+#endif
+
+        /** Opens external medium by passed @a strMediumLocation.
+          * @param  enmMediumType      Brings the medium type.
+          * @param  pParent            Brings the dialog parent.
+          * @param  strMediumLocation  Brings the file path to load medium from.
+          * @param  pParent            Brings the dialog parent. */
+        QUuid openMedium(UIMediumDeviceType enmMediumType, QString strMediumLocation, QWidget *pParent = 0);
+
+        /** Opens external medium using file-open dialog.
+          * @param  enmMediumType     Brings the medium type.
+          * @param  pParent           Brings the dialog parent.
+          * @param  strDefaultFolder  Brings the folder to browse for medium.
+          * @param  fUseLastFolder    Brings whether we should propose to use last used folder. */
+        QUuid openMediumWithFileOpenDialog(UIMediumDeviceType enmMediumType, QWidget *pParent = 0,
+                                             const QString &strDefaultFolder = QString(), bool fUseLastFolder = false);
+
+
+        /** Creates and shows a UIMediumSelector dialog.
+          * @param  parent                   Passes the parent of the dialog,
+          * @param  enmMediumType            Passes the medium type.
+          * @param  strMachineName           Passes the name of the machine,
+          * @param  strMachineFolder         Passes the machine folder,
+          * @param  strMachineGuestOSTypeId  Passes the type ID of machine's guest os,
+          * @param  fEnableCreate            Passes whether to show/enable create action in the medium selector dialog,
+          * returns the return code of the UIMediumSelector::ReturnCode as int. In case of a medium selection
+          *         UUID of the selected medium is stored in @param outUuid.*/
+        int openMediumSelectorDialog(QWidget *pParent, UIMediumDeviceType  enmMediumType, QUuid &outUuid,
+                                     const QString &strMachineFolder, const QString &strMachineName,
+                                     const QString &strMachineGuestOSTypeId, bool fEnableCreate);
+
+        /** Creates and shows a dialog (wizard) to create a medium of type @a enmMediumType.
+          * @param  parent                   Passes the parent of the dialog,
+          * @param  enmMediumType            Passes the medium type.
+          * @param  strMachineName           Passes the name of the machine,
+          * @param  strMachineFolder         Passes the machine folder,
+          * @param  strMachineGuestOSTypeId  Passes the type ID of machine's guest os,
+          * @param  fEnableCreate            Passes whether to show/enable create action in the medium selector dialog,
+          * returns the return code of the UIMediumSelector::ReturnCode as int. In case of a medium selection
+          *         UUID of the selected medium is stored in @param outUuid.*/
+        QUuid openMediumCreatorDialog(QWidget *pParent, UIMediumDeviceType  enmMediumType,
+                                      const QString &strMachineFolder = QString(), const QString &strMachineName = QString(),
+                                      const QString &strMachineGuestOSTypeId = QString());
+
+
+        /** Prepares storage menu according passed parameters.
+          * @param  menu               Brings the #QMenu to be prepared.
+          * @param  pListener          Brings the listener #QObject, this @a menu being prepared for.
+          * @param  pszSlotName        Brings the name of the SLOT in the @a pListener above, this menu will be handled with.
+          * @param  comMachine         Brings the #CMachine object, this @a menu being prepared for.
+          * @param  strControllerName  Brings the name of the #CStorageController in the @a machine above.
+          * @param  storageSlot        Brings the #StorageSlot of the storage controller with @a strControllerName above. */
+        void prepareStorageMenu(QMenu &menu,
+                                QObject *pListener, const char *pszSlotName,
+                                const CMachine &comMachine, const QString &strControllerName, const StorageSlot &storageSlot);
+        /** Updates @a comConstMachine storage with data described by @a target. */
+        void updateMachineStorage(const CMachine &comConstMachine, const UIMediumTarget &target);
+
+        /** Generates details for passed @a comMedium.
+          * @param  fPredictDiff  Brings whether medium will be marked differencing on attaching.
+          * @param  fUseHtml      Brings whether HTML subsets should be used in the generated output. */
+        QString details(const CMedium &comMedium, bool fPredictDiff, bool fUseHtml = true);
+
+        /** Update extra data related to recently used/referred media.
+          * @param  enmMediumType       Passes the medium type.
+          * @param  strMediumLocation   Passes the medium location. */
+        void updateRecentlyUsedMediumListAndFolder(UIMediumDeviceType enmMediumType, QString strMediumLocation);
+
+        /** Searches extra data for the recently used folder path which corresponds to @a enmMediumType. When that search fails
+            it looks for recent folder extra data for other medium types. As the last resort returns default vm folder path.
+          * @param  enmMediumType       Passes the medium type. */
+        QString defaultFolderPathForType(UIMediumDeviceType enmMediumType);
+    /** @} */
+
+    /** @name COM: USB stuff.
+     * @{ */
+#ifdef RT_OS_LINUX
+        /** Verifies that USB drivers are properly configured on Linux. */
+        static void checkForWrongUSBMounted();
+#endif
+
+        /** Generates details for passed USB @a comDevice. */
+        static QString details(const CUSBDevice &comDevice);
+        /** Generates tool-tip for passed USB @a comDevice. */
+        static QString toolTip(const CUSBDevice &comDevice);
+        /** Generates tool-tip for passed USB @a comFilter. */
+        static QString toolTip(const CUSBDeviceFilter &comFilter);
+        /** Generates tool-tip for passed USB @a comWebcam. */
+        static QString toolTip(const CHostVideoInputDevice &comWebcam);
+    /** @} */
+
+    /** @name COM: Extension Pack stuff.
+     * @{ */
+        /** Initiates the extension pack installation process.
+          * @param  strFilePath      Brings the extension pack file path.
+          * @param  strDigest        Brings the extension pack file digest.
+          * @param  pParent          Brings the parent dialog reference.
+          * @param  pstrExtPackName  Brings the extension pack name. */
+        void doExtPackInstallation(QString const &strFilePath,
+                                   QString const &strDigest,
+                                   QWidget *pParent,
+                                   QString *pstrExtPackName) const;
+    /** @} */
+
+    /** @name Display stuff.
+     * @{ */
+        /** Inner worker for lazily querying for 3D support. */
+        bool is3DAvailableWorker() const;
+        /** Returns whether 3D is available, runs worker above if necessary. */
+        bool is3DAvailable() const;
+
+#ifdef VBOX_WITH_CRHGSMI
+        /** Returns whether guest OS type with passed @a strGuestOSTypeId is WDDM compatible. */
+        static bool isWddmCompatibleOsType(const QString &strGuestOSTypeId);
+#endif
+        /** Returns the required video memory in bytes for the current desktop
+          * resolution at maximum possible screen depth in bpp. */
+        static quint64 requiredVideoMemory(const QString &strGuestOSTypeId, int cMonitors = 1);
+    /** @} */
+
+    /** @name Thread stuff.
+     * @{ */
+        /** Returns the thread-pool instance. */
+        UIThreadPool *threadPool() const { return m_pThreadPool; }
+    /** @} */
+
+    /** @name Icon/Pixmap stuff.
+     * @{ */
+        /** Returns icon defined for a passed @a comMachine. */
+        QIcon vmUserIcon(const CMachine &comMachine) const;
+        /** Returns pixmap of a passed @a size defined for a passed @a comMachine. */
+        QPixmap vmUserPixmap(const CMachine &comMachine, const QSize &size) const;
+        /** Returns pixmap defined for a passed @a comMachine.
+          * In case if non-null @a pLogicalSize pointer provided, it will be updated properly. */
+        QPixmap vmUserPixmapDefault(const CMachine &comMachine, QSize *pLogicalSize = 0) const;
+
+        /** Returns pixmap corresponding to passed @a strOSTypeID. */
+        QIcon vmGuestOSTypeIcon(const QString &strOSTypeID) const;
+        /** Returns pixmap corresponding to passed @a strOSTypeID and @a size. */
+        QPixmap vmGuestOSTypePixmap(const QString &strOSTypeID, const QSize &size) const;
+        /** Returns pixmap corresponding to passed @a strOSTypeID.
+          * In case if non-null @a pLogicalSize pointer provided, it will be updated properly. */
+        QPixmap vmGuestOSTypePixmapDefault(const QString &strOSTypeID, QSize *pLogicalSize = 0) const;
+
+        /** Returns default icon of certain @a enmType. */
+        QIcon icon(QFileIconProvider::IconType enmType) { return m_fileIconProvider.icon(enmType); }
+        /** Returns file icon fetched from passed file @a info. */
+        QIcon icon(const QFileInfo &info) { return m_fileIconProvider.icon(info); }
+
+        /** Returns cached default warning pixmap. */
+        QPixmap warningIcon() const { return m_pixWarning; }
+        /** Returns cached default error pixmap. */
+        QPixmap errorIcon() const { return m_pixError; }
+
+        /** Joins two pixmaps horizontally with 2px space between them and returns the result. */
+        static QPixmap joinPixmaps(const QPixmap &pixmap1, const QPixmap &pixmap2);
+    /** @} */
+
+public slots:
+
+    /** @name Process arguments stuff.
+     * @{ */
+        /** Opens the specified URL using OS/Desktop capabilities. */
+        bool openURL(const QString &strURL) const;
+    /** @} */
+
+    /** @name Localization stuff.
+     * @{ */
+        /** Handles language change to new @a strLanguage. */
+        void sltGUILanguageChange(QString strLanguage);
+    /** @} */
+
+protected:
+
+    /** Preprocesses any Qt @a pEvent for passed @a pObject. */
+    virtual bool eventFilter(QObject *pObject, QEvent *pEvent) /* override */;
+
+    /** Handles translation event. */
+    virtual void retranslateUi() /* override */;
+
+protected slots:
+
+    /** Prepares all. */
+    void prepare();
+    /** Cleanups all. */
+    void cleanup();
+
+    /** @name Common stuff.
+     * @{ */
+        /** Handles @a manager request for emergency session shutdown. */
+        void sltHandleCommitDataRequest(QSessionManager &manager);
+    /** @} */
+
+    /** @name COM stuff.
+     * @{ */
+        /** Handles the VBoxSVC availability change. */
+        void sltHandleVBoxSVCAvailabilityChange(bool fAvailable);
+    /** @} */
+
+private:
+
+    /** Construcs global VirtualBox object of passed @a enmType. */
+    UICommon(UIType enmType);
+
+    /** Destrucs global VirtualBox object. */
+    virtual ~UICommon() /* override */;
+
+
+    /** @name COM: Virtual Media create functions.
+     * @{ */
+
+        /** Creates a VISO by using the VISO creator dialog.
+          * @param  pParent           Passes the dialog parent.
+          * @param  strDefaultFolder  Passes the folder to save the VISO file.
+          * @param  strMachineName    Passes the name of the machine, */
+        QUuid createVisoMediumWithVisoCreator(QWidget *pParent, const QString &strDefaultFolder = QString(), const QString &strMachineName = QString());
+
+        /** Creates and shows a dialog thru which user can create a new floppy disk a VISO using the file-open dialog.
+          * @param  parent            Passes the parent of the dialog,
+          * @param  strDefaultFolder  Passes the default folder,
+          * @param  strMachineName    Passes the name of the machine,
+          * returns the ID of the newly created medium if successful, a null QUuid otherwise.*/
+        QUuid showCreateFloppyDiskDialog(QWidget *pParent, const QString &strDefaultFolder = QString(),
+                                         const QString &strMachineName = QString());
+
+        /** Creates and shows a UIWizardNewVD wizard.
+          * @param  parent                    Passes the parent of the wizard,
+          * @param  strMachineFolder          Passes the machine folder,
+          * @param  strMachineName            Passes the name of the machine,
+          * @param  strMachineGuestOSTypeId   Passes the string of machine's guest OS type ID,
+          * returns the ID of the  created hard disk if successful, a null QUuid otherwise.*/
+        QUuid createHDWithNewHDWizard(QWidget *pParent, const QString &strMachineFolder = QString(),
+                                      const QString &strMachineName = QString(), const QString &strMachineGuestOSTypeId = QString());
+    /** @} */
+
+    /** @name Common stuff.
+     * @{ */
+#ifdef VBOX_WS_WIN
+        /** Wraps WinAPI ShutdownBlockReasonCreate function. */
+        static BOOL ShutdownBlockReasonCreateAPI(HWND hWnd, LPCWSTR pwszReason);
+#endif
+    /** @} */
+
+    /** @name Process arguments stuff.
+     * @{ */
+#ifdef VBOX_WITH_DEBUGGER_GUI
+        /** Initializes a debugger config variable.
+          * @param  piDbgCfgVar       Brings the debugger config variable to init.
+          * @param  pszEnvVar         Brings the environment variable name relating to this variable.
+          * @param  pszExtraDataName  Brings the extra data name relating to this variable.
+          * @param  fDefault          Brings the default value. */
+        void initDebuggerVar(int *piDbgCfgVar, const char *pszEnvVar, const char *pszExtraDataName, bool fDefault = false);
+        /** Set a debugger config variable according according to start up argument.
+          * @param  piDbgCfgVar  Brings the debugger config variable to set.
+          * @param  fState       Brings the value from the command line. */
+        void setDebuggerVar(int *piDbgCfgVar, bool fState);
+        /** Checks the state of a debugger config variable, updating it with the machine settings on the first invocation.
+          * @param  piDbgCfgVar       Brings the debugger config variable to consult.
+          * @param  pszExtraDataName  Brings the extra data name relating to this variable. */
+        bool isDebuggerWorker(int *piDbgCfgVar, const char *pszExtraDataName) const;
+#endif
+    /** @} */
+
+    /** @name COM stuff.
+     * @{ */
+        /** Re-initializes COM wrappers and containers. */
+        void comWrappersReinit();
+    /** @} */
+
+    /** Holds the singleton UICommon instance. */
+    static UICommon *s_pInstance;
+
+    /** @name Common stuff.
+     * @{ */
+        /** Holds whether UICommon cleanup is in progress. */
+        static bool  s_fCleaningUp;
+
+        /** Holds the currently loaded language ID. */
+        static QString  s_strLoadedLanguageId;
+
+        /** Holds the tr("User Defined") port name. */
+        static QString  s_strUserDefinedPortName;
+
+        /** Holds the UI type. */
+        UIType  m_enmType;
+
+        /** Holds whether UICommon instance is properly initialized. */
+        bool  m_fValid;
+
+#ifdef VBOX_WS_MAC
+        /** Mac OS X: Holds the #MacOSXRelease determined using <i>uname</i> call. */
+        MacOSXRelease  m_enmMacOSVersion;
+#endif
+
+#ifdef VBOX_WS_X11
+        /** X11: Holds the #X11WMType of the Window Manager we are running under. */
+        X11WMType  m_enmWindowManagerType;
+        /** X11: Holds whether the Window Manager we are running at is composition one. */
+        bool       m_fCompositingManagerRunning;
+#endif
+
+        /** Holds the VBox branding config file path. */
+        QString  m_strBrandingConfigFilePath;
+    /** @} */
+
+    /** @name Process arguments stuff.
+     * @{ */
+        /** Holds the URL arguments list. */
+        QList<QUrl>  m_listArgUrls;
+
+        /** Holds the --startvm option value (managed VM id). */
+        QUuid  m_strManagedVMId;
+        /** Holds the --separate option value (whether GUI process is separate from VM process). */
+        bool     m_fSeparateProcess;
+        /** Holds the --no-startvm-errormsgbox option value (whether startup VM errors are disabled). */
+        bool     m_fShowStartVMErrors;
+
+        /** Holds the --aggressive-caching / --no-aggressive-caching option value (whether medium-enumeration is required). */
+        bool  m_fAgressiveCaching;
+
+        /** Holds the --restore-current option value. */
+        bool  m_fRestoreCurrentSnapshot;
+
+        /** Holds the --fda option value (floppy image). */
+        QUuid  m_strFloppyImage;
+        /** Holds the --dvd | --cdrom option value (DVD image). */
+        QUuid  m_strDvdImage;
+
+        /** Holds the --disable-patm option value. */
+        bool      m_fDisablePatm;
+        /** Holds the --disable-csam option value. */
+        bool      m_fDisableCsam;
+        /** Holds the --recompile-supervisor option value. */
+        bool      m_fRecompileSupervisor;
+        /** Holds the --recompile-user option value. */
+        bool      m_fRecompileUser;
+        /** Holds the --execute-all-in-iem option value. */
+        bool      m_fExecuteAllInIem;
+        /** Holds the --warp-factor option value. */
+        uint32_t  m_uWarpPct;
+
+#ifdef VBOX_WITH_DEBUGGER_GUI
+        /** Holds whether the debugger should be accessible. */
+        mutable int  m_fDbgEnabled;
+        /** Holds whether to show the debugger automatically with the console. */
+        mutable int  m_fDbgAutoShow;
+        /** Holds whether to show the command line window when m_fDbgAutoShow is set. */
+        mutable int  m_fDbgAutoShowCommandLine;
+        /** Holds whether to show the statistics window when m_fDbgAutoShow is set. */
+        mutable int  m_fDbgAutoShowStatistics;
+        /** VBoxDbg module handle. */
+        RTLDRMOD     m_hVBoxDbg;
+
+        /** Holds whether --start-running, --start-paused or nothing was given. */
+        enum LaunchRunning  m_enmLaunchRunning;
+#endif
+
+        /** Holds the --settingspw option value or the content of --settingspwfile. */
+        char  m_astrSettingsPw[256];
+        /** Holds the --settingspwfile option value. */
+        bool  m_fSettingsPwSet;
+
+#ifdef VBOX_GUI_WITH_PIDFILE
+        /** Holds the --pidfile option value (application PID file path). */
+        QString m_strPidFile;
+#endif
+    /** @} */
+
+    /** @name COM stuff.
+     * @{ */
+        /** Holds the COM cleanup protection token. */
+        QReadWriteLock  m_comCleanupProtectionToken;
+
+        /** Holds the instance of VirtualBox client wrapper. */
+        CVirtualBoxClient  m_comVBoxClient;
+        /** Holds the copy of VirtualBox object wrapper. */
+        CVirtualBox        m_comVBox;
+        /** Holds the copy of VirtualBox host-object wrapper. */
+        CHost              m_comHost;
+        /** Holds the symbolic VirtualBox home-folder representation. */
+        QString            m_strHomeFolder;
+
+        /** Holds whether acquired COM wrappers are currently valid. */
+        bool  m_fWrappersValid;
+        /** Holds whether VBoxSVC is currently available. */
+        bool  m_fVBoxSVCAvailable;
+
+        /** Holds the guest OS family IDs. */
+        QList<QString>               m_guestOSFamilyIDs;
+        /** Holds the guest OS family descriptions. */
+        QMap<QString, QString>       m_guestOSFamilyDescriptions;
+        /** Holds the guest OS types for each family ID. */
+        QList<QList<CGuestOSType> >  m_guestOSTypes;
+    /** @} */
+
+    /** @name Display stuff.
+     * @{ */
+        /** Holds whether 3D is available. */
+        mutable int  m_i3DAvailable;
+    /** @} */
+
+    /** @name Thread stuff.
+     * @{ */
+        /** Holds the thread-pool instance. */
+        UIThreadPool *m_pThreadPool;
+    /** @} */
+
+    /** @name Icon/Pixmap stuff.
+     * @{ */
+        /** Holds the general icon-pool instance. */
+        UIIconPoolGeneral *m_pIconPool;
+
+        /** Holds the global file icon provider instance. */
+        QFileIconProvider  m_fileIconProvider;
+
+        /** Holds the warning pixmap. */
+        QPixmap  m_pixWarning;
+        /** Holds the error pixmap. */
+        QPixmap  m_pixError;
+    /** @} */
+
+    /** @name Media related stuff.
+     * @{ */
+        /** Holds the medium enumerator cleanup protection token. */
+        mutable QReadWriteLock  m_meCleanupProtectionToken;
+
+        /** Holds the medium enumerator. */
+        UIMediumEnumerator *m_pMediumEnumerator;
+        /** List of medium names that should not appears in the recently used media extra data. */
+        QStringList         m_recentMediaExcludeList;
+    /** @} */
+
+#if defined(VBOX_WS_WIN)
+    /** @name ATL stuff.
+     * @{ */
+        /** Holds the ATL module instance (for use with UICommon shared library only).
+          * @note  Required internally by ATL (constructor records instance in global variable). */
+        ATL::CComModule _Module;
+    /** @} */
+#endif
+
+    /** Allows for shortcut access. */
+    friend UICommon &uiCommon();
+};
+
+/** Singleton UICommon 'official' name. */
+inline UICommon &uiCommon() { return *UICommon::instance(); }
+
+#endif /* !FEQT_INCLUDED_SRC_globals_UICommon_h */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICustomFileSystemModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICustomFileSystemModel.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICustomFileSystemModel.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 #include "UICustomFileSystemModel.h"
 #include "UIPathOperations.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 const char *UICustomFileSystemModel::strUpDirectoryString = "..";
@@ -440,5 +440,5 @@
             {
                 qulonglong size = item->data(index.column()).toULongLong();
-                return vboxGlobal().formatSize(size);
+                return uiCommon().formatSize(size);
             }
             else
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp	(revision 79365)
@@ -30,5 +30,5 @@
 #include "UIDesktopWidgetWatchdog.h"
 #ifdef VBOX_WS_X11
-# include "VBoxGlobal.h"
+# include "UICommon.h"
 #endif /* VBOX_WS_X11 */
 
@@ -153,5 +153,5 @@
     setMask(QRect(0, 0, 1, 1));
     /* For composite WMs make this 1 pixel transparent: */
-    if (vboxGlobal().isCompositingManagerRunning())
+    if (uiCommon().isCompositingManagerRunning())
         setAttribute(Qt::WA_TranslucentBackground);
     /* Install fallback handler: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp	(revision 79365)
@@ -24,5 +24,5 @@
 #include "UIDetailsGenerator.h"
 #include "UIErrorString.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -64,5 +64,5 @@
     if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_OS)
         table << UITextTableLine(QApplication::translate("UIDetails", "Operating System", "details (general)"),
-                                 vboxGlobal().vmGuestOSTypeDescription(comMachine.GetOSTypeId()));
+                                 uiCommon().vmGuestOSTypeDescription(comMachine.GetOSTypeId()));
 
     /* Settings file location: */
@@ -137,5 +137,5 @@
     {
         QStringList bootOrder;
-        for (ulong i = 1; i <= vboxGlobal().virtualBox().GetSystemProperties().GetMaxBootPosition(); ++i)
+        for (ulong i = 1; i <= uiCommon().virtualBox().GetSystemProperties().GetMaxBootPosition(); ++i)
         {
             const KDeviceType enmDeviceType = comMachine.GetBootOrder(i);
@@ -185,5 +185,5 @@
     {
         QStringList acceleration;
-        if (vboxGlobal().virtualBox().GetHost().GetProcessorFeature(KProcessorFeature_HWVirtEx))
+        if (uiCommon().virtualBox().GetHost().GetProcessorFeature(KProcessorFeature_HWVirtEx))
         {
             /* VT-x/AMD-V: */
@@ -372,8 +372,8 @@
 
             /* Prepare attachment information: */
-            QString strAttachmentInfo = vboxGlobal().details(attachment.GetMedium(), false, false);
+            QString strAttachmentInfo = uiCommon().details(attachment.GetMedium(), false, false);
             /* That hack makes sure 'Inaccessible' word is always bold: */
             { // hack
-                const QString strInaccessibleString(VBoxGlobal::tr("Inaccessible", "medium"));
+                const QString strInaccessibleString(UICommon::tr("Inaccessible", "medium"));
                 const QString strBoldInaccessibleString(QString("<b>%1</b>").arg(strInaccessibleString));
                 strAttachmentInfo.replace(strInaccessibleString, strBoldInaccessibleString);
@@ -502,5 +502,5 @@
 
     /* Iterate over all the adapters: */
-    const ulong uCount = vboxGlobal().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(comMachine.GetChipsetType());
+    const ulong uCount = uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(comMachine.GetChipsetType());
     for (ulong uSlot = 0; uSlot < uCount; ++uSlot)
     {
@@ -595,5 +595,5 @@
 
     /* Iterate over all the ports: */
-    const ulong uCount = vboxGlobal().virtualBox().GetSystemProperties().GetSerialPortCount();
+    const ulong uCount = uiCommon().virtualBox().GetSystemProperties().GetSerialPortCount();
     for (ulong uSlot = 0; uSlot < uCount; ++uSlot)
     {
@@ -606,5 +606,5 @@
         /* Gather port information: */
         const KPortMode enmMode = comPort.GetHostMode();
-        const QString strModeTemplate = vboxGlobal().toCOMPortName(comPort.GetIRQ(), comPort.GetIOBase()) + ", ";
+        const QString strModeTemplate = uiCommon().toCOMPortName(comPort.GetIRQ(), comPort.GetIOBase()) + ", ";
         QString strModeType;
         switch (enmMode)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIErrorString.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIErrorString.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIErrorString.cpp	(revision 79365)
@@ -21,5 +21,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIErrorString.h"
 
@@ -165,7 +165,7 @@
         if (   strDetailsInfo == QString::fromLatin1(strDetailsInfo.toLatin1())
             && strDetailsInfo != QObject::tr(strDetailsInfo.toLatin1().constData()))
-            strFormatted += QString("<p>%1.</p>").arg(vboxGlobal().emphasize(QObject::tr(strDetailsInfo.toLatin1().constData())));
+            strFormatted += QString("<p>%1.</p>").arg(uiCommon().emphasize(QObject::tr(strDetailsInfo.toLatin1().constData())));
         else
-            strFormatted += QString("<p>%1.</p>").arg(vboxGlobal().emphasize(strDetailsInfo));
+            strFormatted += QString("<p>%1.</p>").arg(uiCommon().emphasize(strDetailsInfo));
     }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.cpp	(revision 79365)
@@ -21,5 +21,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMainEventListener.h"
 
@@ -222,5 +222,5 @@
 {
     /* Try to acquire COM cleanup protection token first: */
-    if (!vboxGlobal().comTokenTryLockForRead())
+    if (!uiCommon().comTokenTryLockForRead())
         return S_OK;
 
@@ -528,5 +528,5 @@
 
     /* Unlock COM cleanup protection token: */
-    vboxGlobal().comTokenUnlock();
+    uiCommon().comTokenUnlock();
 
     return S_OK;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 79365)
@@ -28,5 +28,5 @@
 /* GUI includes: */
 #include "QIMessageBox.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIConverter.h"
 #include "UIMessageCenter.h"
@@ -696,5 +696,5 @@
             /* Compose machine name: */
             QFileInfo fi(machine.GetSettingsFilePath());
-            strMachineName = VBoxGlobal::hasAllowedExtension(fi.completeSuffix(), VBoxFileExts) ? fi.completeBaseName() : fi.fileName();
+            strMachineName = UICommon::hasAllowedExtension(fi.completeSuffix(), VBoxFileExts) ? fi.completeBaseName() : fi.fileName();
             /* Increment inacessible machine count: */
             ++cInacessibleMachineCount;
@@ -1270,5 +1270,5 @@
     /* Prepare the usage: */
     QStringList usage;
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
     foreach (const QUuid &uMachineID, medium.curStateMachineIds())
     {
@@ -2113,5 +2113,5 @@
     QString formatted("<!--EOM-->");
     if (!strErrorMsg.isEmpty())
-        formatted.prepend(QString("<p>%1.</p>").arg(vboxGlobal().emphasize(strErrorMsg)));
+        formatted.prepend(QString("<p>%1.</p>").arg(uiCommon().emphasize(strErrorMsg)));
     if (!strErrorId.isEmpty())
         formatted += QString("<table bgcolor=#EEEEEE border=0 cellspacing=5 "
@@ -2337,5 +2337,5 @@
                              "<p>You should configure the virtual machine to have at least <b>%1</b> of video memory.</p>"
                              "<p>Press <b>Ignore</b> to switch to full-screen mode anyway or press <b>Cancel</b> to cancel the operation.</p>")
-                             .arg(VBoxGlobal::formatSize(uMinVRAM)),
+                             .arg(UICommon::formatSize(uMinVRAM)),
                           0 /* auto-confirm id */,
                           tr("Ignore"));
@@ -2349,5 +2349,5 @@
              "<p>You should configure the virtual machine to have at "
              "least <b>%1</b> of video memory.</p>")
-             .arg(VBoxGlobal::formatSize(uMinVRAM)));
+             .arg(UICommon::formatSize(uMinVRAM)));
 }
 
@@ -2358,5 +2358,5 @@
                              "<p>You should configure the virtual machine to have at least <b>%1</b> of video memory.</p>"
                              "<p>Press <b>Ignore</b> to switch the screen anyway or press <b>Cancel</b> to cancel the operation.</p>")
-                             .arg(VBoxGlobal::formatSize(uMinVRAM)),
+                             .arg(UICommon::formatSize(uMinVRAM)),
                           0 /* auto-confirm id */,
                           tr("Ignore"));
@@ -2370,5 +2370,5 @@
              "<p>You should configure the virtual machine to have at "
              "least <b>%1</b> of video memory.</p>")
-             .arg(VBoxGlobal::formatSize(uMinVRAM)));
+             .arg(UICommon::formatSize(uMinVRAM)));
 }
 
@@ -2425,5 +2425,5 @@
                           tr("<p>Are you sure you want to download the <b>VirtualBox Guest Additions</b> disk image file "
                              "from <nobr><a href=\"%1\">%1</a></nobr> (size %2 bytes)?</p>")
-                             .arg(strUrl, QLocale(VBoxGlobal::languageId()).toString(uSize)),
+                             .arg(strUrl, QLocale(UICommon::languageId()).toString(uSize)),
                           0 /* auto-confirm id */,
                           tr("Download"));
@@ -2486,5 +2486,5 @@
                           tr("<p>Are you sure you want to download the <b>VirtualBox User Manual</b> "
                              "from <nobr><a href=\"%1\">%1</a></nobr> (size %2 bytes)?</p>")
-                             .arg(strURL, QLocale(VBoxGlobal::languageId()).toString(uSize)),
+                             .arg(strURL, QLocale(UICommon::languageId()).toString(uSize)),
                           0 /* auto-confirm id */,
                           tr("Download"));
@@ -2525,5 +2525,5 @@
                           tr("<p>Are you sure you want to download the <b><nobr>%1</nobr></b> "
                              "from <nobr><a href=\"%2\">%2</a></nobr> (size %3 bytes)?</p>")
-                             .arg(strExtPackName, strURL, QLocale(VBoxGlobal::languageId()).toString(uSize)),
+                             .arg(strExtPackName, strURL, QLocale(UICommon::languageId()).toString(uSize)),
                           0 /* auto-confirm id */,
                           tr("Download"));
@@ -2828,31 +2828,31 @@
 void UIMessageCenter::sltShowHelpWebDialog()
 {
-    vboxGlobal().openURL("https://www.virtualbox.org");
+    uiCommon().openURL("https://www.virtualbox.org");
 }
 
 void UIMessageCenter::sltShowBugTracker()
 {
-    vboxGlobal().openURL("https://www.virtualbox.org/wiki/Bugtracker");
+    uiCommon().openURL("https://www.virtualbox.org/wiki/Bugtracker");
 }
 
 void UIMessageCenter::sltShowForums()
 {
-    vboxGlobal().openURL("https://forums.virtualbox.org/");
+    uiCommon().openURL("https://forums.virtualbox.org/");
 }
 
 void UIMessageCenter::sltShowOracle()
 {
-    vboxGlobal().openURL("http://www.oracle.com/us/technologies/virtualization/virtualbox/overview/index.html");
+    uiCommon().openURL("http://www.oracle.com/us/technologies/virtualization/virtualbox/overview/index.html");
 }
 
 void UIMessageCenter::sltShowHelpAboutDialog()
 {
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
     QString strFullVersion;
-    if (vboxGlobal().brandingIsActive())
+    if (uiCommon().brandingIsActive())
     {
         strFullVersion = QString("%1 r%2 - %3").arg(vbox.GetVersion())
                                                .arg(vbox.GetRevision())
-                                               .arg(vboxGlobal().brandingGetKey("Name"));
+                                               .arg(uiCommon().brandingGetKey("Name"));
     }
     else
@@ -2870,10 +2870,10 @@
 #ifndef VBOX_OSE
     /* For non-OSE version we just open it: */
-    sltShowUserManual(vboxGlobal().helpFile());
+    sltShowUserManual(uiCommon().helpFile());
 #else /* #ifndef VBOX_OSE */
     /* For OSE version we have to check if it present first: */
-    QString strUserManualFileName1 = vboxGlobal().helpFile();
+    QString strUserManualFileName1 = uiCommon().helpFile();
     QString strShortFileName = QFileInfo(strUserManualFileName1).fileName();
-    QString strUserManualFileName2 = QDir(vboxGlobal().homeFolder()).absoluteFilePath(strShortFileName);
+    QString strUserManualFileName2 = QDir(uiCommon().homeFolder()).absoluteFilePath(strShortFileName);
     /* Show if user manual already present: */
     if (QFile::exists(strUserManualFileName1))
@@ -2918,8 +2918,8 @@
     QProcess::startDetached(QString(szViewerPath) + "/kchmviewer", QStringList(strLocation));
 # else /* #ifndef VBOX_OSE */
-    vboxGlobal().openURL("file://" + strLocation);
+    uiCommon().openURL("file://" + strLocation);
 # endif /* #ifdef VBOX_OSE */
 #elif defined (VBOX_WS_MAC)
-    vboxGlobal().openURL("file://" + strLocation);
+    uiCommon().openURL("file://" + strLocation);
 #endif
 }
@@ -3007,6 +3007,6 @@
     if (!strAutoConfirmId.isEmpty())
     {
-        const QUuid uID = vboxGlobal().uiType() == VBoxGlobal::UIType_RuntimeUI
-                        ? vboxGlobal().managedVMUuid()
+        const QUuid uID = uiCommon().uiType() == UICommon::UIType_RuntimeUI
+                        ? uiCommon().managedVMUuid()
                         : UIExtraDataManager::GlobalID;
         confirmedMessageList = gEDataManager->suppressedMessages(uID);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIPopupCenter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIPopupCenter.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIPopupCenter.cpp	(revision 79365)
@@ -18,5 +18,5 @@
 /* GUI includes: */
 #include "QIMessageBox.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIErrorString.h"
 #include "UIExtraDataManager.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIProgressEventHandler.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIProgressEventHandler.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIProgressEventHandler.cpp	(revision 79365)
@@ -20,5 +20,5 @@
 #include "UIMainEventListener.h"
 #include "UIProgressEventHandler.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #ifdef VBOX_WS_MAC
 # include "VBoxUtils-darwin.h"
@@ -102,5 +102,5 @@
 
     /* Make sure VBoxSVC is available: */
-    if (!vboxGlobal().isVBoxSVCAvailable())
+    if (!uiCommon().isVBoxSVCAvailable())
         return;
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIShortcutPool.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIShortcutPool.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIShortcutPool.cpp	(revision 79365)
@@ -17,5 +17,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPool.h"
 #include "UIExtraDataManager.h"
@@ -377,5 +377,5 @@
     }
     /* Save overrides into the extra-data: */
-    vboxGlobal().virtualBox().SetExtraDataStringList(strPoolExtraDataID, overrides);
+    uiCommon().virtualBox().SetExtraDataStringList(strPoolExtraDataID, overrides);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIStarter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIStarter.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIStarter.cpp	(revision 79365)
@@ -20,5 +20,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIExtraDataManager.h"
 #include "UIMessageCenter.h"
@@ -77,8 +77,8 @@
 void UIStarter::init()
 {
-    /* Listen for VBoxGlobal signals: */
-    connect(&vboxGlobal(), &VBoxGlobal::sigAskToRestartUI,
+    /* Listen for UICommon signals: */
+    connect(&uiCommon(), &UICommon::sigAskToRestartUI,
             this, &UIStarter::sltRestartUI);
-    connect(&vboxGlobal(), &VBoxGlobal::sigAskToCommitData,
+    connect(&uiCommon(), &UICommon::sigAskToCommitData,
             this, &UIStarter::sltHandleCommitDataRequest);
 }
@@ -86,8 +86,8 @@
 void UIStarter::deinit()
 {
-    /* Listen for VBoxGlobal signals no more: */
-    disconnect(&vboxGlobal(), &VBoxGlobal::sigAskToRestartUI,
+    /* Listen for UICommon signals no more: */
+    disconnect(&uiCommon(), &UICommon::sigAskToRestartUI,
                this, &UIStarter::sltRestartUI);
-    disconnect(&vboxGlobal(), &VBoxGlobal::sigAskToCommitData,
+    disconnect(&uiCommon(), &UICommon::sigAskToCommitData,
                this, &UIStarter::sltHandleCommitDataRequest);
 }
@@ -102,6 +102,6 @@
 void UIStarter::sltStartUI()
 {
-    /* Exit if VBoxGlobal is not valid: */
-    if (!vboxGlobal().isValid())
+    /* Exit if UICommon is not valid: */
+    if (!uiCommon().isValid())
         return;
 
@@ -124,5 +124,5 @@
 #  ifndef DEBUG
     /* Show BETA warning if necessary: */
-    const QString vboxVersion(vboxGlobal().virtualBox().GetVersion());
+    const QString vboxVersion(uiCommon().virtualBox().GetVersion());
     if (   vboxVersion.contains("BETA")
         && gEDataManager->preventBetaBuildWarningForVersion() != vboxVersion)
@@ -134,5 +134,5 @@
 
     /* Make sure Runtime UI is even possible, quit if not: */
-    if (vboxGlobal().managedVMUuid().isNull())
+    if (uiCommon().managedVMUuid().isNull())
     {
         msgCenter().cannotStartRuntime();
@@ -141,5 +141,5 @@
 
     /* Make sure machine is started, quit if not: */
-    if (!UIMachine::startMachine(vboxGlobal().managedVMUuid()))
+    if (!UIMachine::startMachine(uiCommon().managedVMUuid()))
         return QApplication::quit();
 
@@ -171,6 +171,6 @@
 void UIStarter::sltHandleCommitDataRequest()
 {
-    /* Exit if VBoxGlobal is not valid: */
-    if (!vboxGlobal().isValid())
+    /* Exit if UICommon is not valid: */
+    if (!uiCommon().isValid())
         return;
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIStarter.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIStarter.h	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIStarter.h	(revision 79365)
@@ -46,7 +46,7 @@
     static void destroy();
 
-    /** Init VBoxGlobal connections. */
+    /** Init UICommon connections. */
     void init();
-    /** Deinit VBoxGlobal connections. */
+    /** Deinit UICommon connections. */
     void deinit();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIVirtualBoxEventHandler.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIVirtualBoxEventHandler.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIVirtualBoxEventHandler.cpp	(revision 79365)
@@ -17,5 +17,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIExtraDataManager.h"
 #include "UIMainEventListener.h"
@@ -146,5 +146,5 @@
 
     /* Get VirtualBoxClient: */
-    const CVirtualBoxClient comVBoxClient = vboxGlobal().virtualBoxClient();
+    const CVirtualBoxClient comVBoxClient = uiCommon().virtualBoxClient();
     AssertWrapperOk(comVBoxClient);
     /* Get VirtualBoxClient event source: */
@@ -153,5 +153,5 @@
 
     /* Get VirtualBox: */
-    const CVirtualBox comVBox = vboxGlobal().virtualBox();
+    const CVirtualBox comVBox = uiCommon().virtualBox();
     AssertWrapperOk(comVBox);
     /* Get VirtualBox event source: */
Index: unk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 79364)
+++ 	(revision )
@@ -1,4816 +1,0 @@
-/* $Id$ */
-/** @file
- * VBox Qt GUI - VBoxGlobal class implementation.
- */
-
-/*
- * Copyright (C) 2006-2019 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.
- */
-
-/* Qt includes: */
-#include <QDesktopServices>
-#include <QDir>
-#include <QFileDialog>
-#include <QGraphicsWidget>
-#include <QLocale>
-#include <QMenu>
-#include <QMutex>
-#include <QPainter>
-#include <QProcess>
-#include <QSpinBox>
-#include <QStandardPaths>
-#include <QThread>
-#include <QTimer>
-#include <QToolButton>
-#include <QToolTip>
-#include <QTranslator>
-#include <QLibraryInfo>
-#include <QProgressDialog>
-#include <QSettings>
-#include <QStyleOptionSpinBox>
-#include <QSessionManager>
-#ifdef VBOX_WS_WIN
-# include <QEventLoop>
-#endif /* VBOX_WS_WIN */
-#ifdef VBOX_WS_X11
-# include <QScrollBar>
-# include <QTextBrowser>
-# include <QX11Info>
-#endif /* VBOX_WS_X11 */
-#ifdef VBOX_GUI_WITH_PIDFILE
-# include <QTextStream>
-#endif /* VBOX_GUI_WITH_PIDFILE */
-#ifdef VBOX_WS_X11
-# include <QScreen>
-#endif
-
-/* GUI includes: */
-#include "VBoxGlobal.h"
-#include "VBoxLicenseViewer.h"
-#include "UIMessageCenter.h"
-#include "UIPopupCenter.h"
-#include "QIMessageBox.h"
-#include "QIDialogButtonBox.h"
-#include "UIFDCreationDialog.h"
-#include "UIIconPool.h"
-#include "UIThreadPool.h"
-#include "UIShortcutPool.h"
-#include "UIExtraDataManager.h"
-#include "QIFileDialog.h"
-#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
-# include "UINetworkManager.h"
-# include "UIUpdateManager.h"
-#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
-#include "UIConverter.h"
-#include "UIMediumEnumerator.h"
-#include "UIMedium.h"
-#include "UIMediumSelector.h"
-#include "UIModalWindowManager.h"
-#include "UIIconPool.h"
-#include "UIVirtualBoxEventHandler.h"
-#include "UIDesktopWidgetWatchdog.h"
-#include "UIVisoCreator.h"
-#include "UIWizardNewVD.h"
-#ifdef VBOX_WS_X11
-# include "UIHostComboEditor.h"
-# include "VBoxX11Helper.h"
-#endif
-#ifdef VBOX_WS_MAC
-# include "VBoxUtils-darwin.h"
-# include "UIMachineWindowFullscreen.h"
-# include "UIMachineWindowSeamless.h"
-#endif /* VBOX_WS_MAC */
-
-/* COM includes: */
-#include "CAudioAdapter.h"
-#include "CBIOSSettings.h"
-#include "CConsole.h"
-#include "CExtPack.h"
-#include "CExtPackFile.h"
-#include "CExtPackManager.h"
-#include "CHostUSBDevice.h"
-#include "CHostVideoInputDevice.h"
-#include "CMachine.h"
-#include "CMediumAttachment.h"
-#include "CNetworkAdapter.h"
-#include "CSerialPort.h"
-#include "CSharedFolder.h"
-#include "CSnapshot.h"
-#include "CStorageController.h"
-#include "CSystemProperties.h"
-#include "CUSBController.h"
-#include "CUSBDevice.h"
-#include "CUSBDeviceFilter.h"
-#include "CUSBDeviceFilters.h"
-#include "CVRDEServer.h"
-
-/* Other VBox includes: */
-#include <iprt/asm.h>
-#include <iprt/ctype.h>
-#include <iprt/err.h>
-#include <iprt/env.h>
-#include <iprt/file.h>
-#include <iprt/getopt.h>
-#include <iprt/ldr.h>
-#include <iprt/param.h>
-#include <iprt/path.h>
-#include <iprt/system.h>
-#include <iprt/stream.h>
-#ifdef VBOX_WS_X11
-# include <iprt/mem.h>
-#endif /* VBOX_WS_X11 */
-#include <VBox/sup.h>
-#include <VBox/VBoxOGL.h>
-#include <VBox/vd.h>
-#include <VBox/com/Guid.h>
-
-/* VirtualBox interface declarations: */
-#include <VBox/com/VirtualBox.h>
-
-/* External includes: */
-#ifdef VBOX_WS_WIN
-# include <iprt/win/shlobj.h>
-#endif
-#ifdef VBOX_WS_X11
-# include <xcb/xcb.h>
-#endif
-
-/* External includes: */
-# include <math.h>
-#ifdef VBOX_WS_MAC
-# include <sys/utsname.h>
-#endif /* VBOX_WS_MAC */
-#ifdef VBOX_WS_X11
-// WORKAROUND:
-// typedef CARD8 BOOL in Xmd.h conflicts with #define BOOL PRBool
-// in COMDefs.h. A better fix would be to isolate X11-specific
-// stuff by placing XX* helpers below to a separate source file.
-# undef BOOL
-# include <X11/X.h>
-# include <X11/Xmd.h>
-# include <X11/Xlib.h>
-# include <X11/Xatom.h>
-# include <X11/Xutil.h>
-# include <X11/extensions/Xinerama.h>
-# define BOOL PRBool
-#endif /* VBOX_WS_X11 */
-
-//#define VBOX_WITH_FULL_DETAILS_REPORT /* hidden for now */
-
-/* Namespaces: */
-using namespace UIExtraDataDefs;
-using namespace UIMediumDefs;
-
-
-/** QTranslator subclass for VBox needs. */
-class VBoxTranslator : public QTranslator
-{
-public:
-
-    /** Constructs translator passing @a pParent to the base-class. */
-    VBoxTranslator(QObject *pParent = 0)
-        : QTranslator(pParent)
-    {}
-
-    /** Loads language file with gained @a strFileName. */
-    bool loadFile(const QString &strFileName)
-    {
-        QFile file(strFileName);
-        if (!file.open(QIODevice::ReadOnly))
-            return false;
-        m_data = file.readAll();
-        return load((uchar*)m_data.data(), m_data.size());
-    }
-
-private:
-
-    /** Holds the loaded data. */
-    QByteArray m_data;
-};
-
-/** Holds the static #VBoxTranslator instance. */
-static VBoxTranslator *sTranslator = 0;
-
-
-/** Port config cache. */
-struct PortConfig
-{
-    const char *name;
-    const ulong IRQ;
-    const ulong IOBase;
-};
-
-/** Known port config COM ports. */
-static const PortConfig kComKnownPorts[] =
-{
-    { "COM1", 4, 0x3F8 },
-    { "COM2", 3, 0x2F8 },
-    { "COM3", 4, 0x3E8 },
-    { "COM4", 3, 0x2E8 },
-    /* Must not contain an element with IRQ=0 and IOBase=0 used to cause
-     * toCOMPortName() to return the "User-defined" string for these values. */
-};
-
-/** Known port config LPT ports. */
-static const PortConfig kLptKnownPorts[] =
-{
-    { "LPT1", 7, 0x378 },
-    { "LPT2", 5, 0x278 },
-    { "LPT1", 2, 0x3BC },
-    /* Must not contain an element with IRQ=0 and IOBase=0 used to cause
-     * toLPTPortName() to return the "User-defined" string for these values. */
-};
-
-
-/* static */
-VBoxGlobal *VBoxGlobal::s_pInstance = 0;
-bool        VBoxGlobal::s_fCleaningUp = false;
-QString     VBoxGlobal::s_strLoadedLanguageId = vboxBuiltInLanguageName();
-QString     VBoxGlobal::s_strUserDefinedPortName = QString();
-
-/* static */
-void VBoxGlobal::create(UIType enmType)
-{
-    /* Make sure instance is NOT created yet: */
-    if (s_pInstance)
-    {
-        AssertMsgFailed(("VBoxGlobal instance is already created!"));
-        return;
-    }
-
-    /* Create instance: */
-    new VBoxGlobal(enmType);
-    /* Prepare instance: */
-    s_pInstance->prepare();
-}
-
-/* static */
-void VBoxGlobal::destroy()
-{
-    /* Make sure instance is NOT destroyed yet: */
-    if (!s_pInstance)
-    {
-        AssertMsgFailed(("VBoxGlobal instance is already destroyed!"));
-        return;
-    }
-
-    /* Cleanup instance:
-     * 1. By default, automatically on QApplication::aboutToQuit() signal.
-     * 2. But if QApplication was not started at all and we perform
-     *    early shutdown, we should do cleanup ourselves. */
-    if (s_pInstance->isValid())
-        s_pInstance->cleanup();
-    /* Destroy instance: */
-    delete s_pInstance;
-}
-
-VBoxGlobal::VBoxGlobal(UIType enmType)
-    : m_enmType(enmType)
-    , m_fValid(false)
-#ifdef VBOX_WS_MAC
-    , m_enmMacOSVersion(MacOSXRelease_Old)
-#endif
-#ifdef VBOX_WS_X11
-    , m_enmWindowManagerType(X11WMType_Unknown)
-    , m_fCompositingManagerRunning(false)
-#endif
-    , m_fSeparateProcess(false)
-    , m_fShowStartVMErrors(true)
-#if defined(DEBUG_bird)
-    , m_fAgressiveCaching(false)
-#else
-    , m_fAgressiveCaching(true)
-#endif
-    , m_fRestoreCurrentSnapshot(false)
-    , m_fDisablePatm(false)
-    , m_fDisableCsam(false)
-    , m_fRecompileSupervisor(false)
-    , m_fRecompileUser(false)
-    , m_fExecuteAllInIem(false)
-    , m_uWarpPct(100)
-#ifdef VBOX_WITH_DEBUGGER_GUI
-    , m_fDbgEnabled(0)
-    , m_fDbgAutoShow(0)
-    , m_fDbgAutoShowCommandLine(0)
-    , m_fDbgAutoShowStatistics(0)
-    , m_hVBoxDbg(NIL_RTLDRMOD)
-    , m_enmLaunchRunning(LaunchRunning_Default)
-#endif
-    , m_fSettingsPwSet(false)
-    , m_fWrappersValid(false)
-    , m_fVBoxSVCAvailable(true)
-    , m_i3DAvailable(-1)
-    , m_pThreadPool(0)
-    , m_pIconPool(0)
-    , m_pMediumEnumerator(0)
-{
-    /* Assign instance: */
-    s_pInstance = this;
-}
-
-VBoxGlobal::~VBoxGlobal()
-{
-    /* Unassign instance: */
-    s_pInstance = 0;
-}
-
-/* static */
-QString VBoxGlobal::qtRTVersionString()
-{
-    return QString::fromLatin1(qVersion());
-}
-
-/* static */
-uint VBoxGlobal::qtRTVersion()
-{
-    const QString strVersionRT = VBoxGlobal::qtRTVersionString();
-    return (strVersionRT.section('.', 0, 0).toInt() << 16) +
-           (strVersionRT.section('.', 1, 1).toInt() << 8) +
-           strVersionRT.section('.', 2, 2).toInt();
-}
-
-/* static */
-uint VBoxGlobal::qtRTMajorVersion()
-{
-    return VBoxGlobal::qtRTVersionString().section('.', 0, 0).toInt();
-}
-
-/* static */
-uint VBoxGlobal::qtRTMinorVersion()
-{
-    return VBoxGlobal::qtRTVersionString().section('.', 1, 1).toInt();
-}
-
-/* static */
-uint VBoxGlobal::qtRTRevisionNumber()
-{
-    return VBoxGlobal::qtRTVersionString().section('.', 2, 2).toInt();
-}
-
-/* static */
-QString VBoxGlobal::qtCTVersionString()
-{
-    return QString::fromLatin1(QT_VERSION_STR);
-}
-
-/* static */
-uint VBoxGlobal::qtCTVersion()
-{
-    const QString strVersionCompiled = VBoxGlobal::qtCTVersionString();
-    return (strVersionCompiled.section('.', 0, 0).toInt() << 16) +
-           (strVersionCompiled.section('.', 1, 1).toInt() << 8) +
-           strVersionCompiled.section('.', 2, 2).toInt();
-}
-
-QString VBoxGlobal::vboxVersionString() const
-{
-    return m_comVBox.GetVersion();
-}
-
-QString VBoxGlobal::vboxVersionStringNormalized() const
-{
-    return m_comVBox.GetVersionNormalized();
-}
-
-bool VBoxGlobal::isBeta() const
-{
-    return vboxVersionString().contains("BETA", Qt::CaseInsensitive);
-}
-
-#ifdef VBOX_WS_MAC
-/* static */
-MacOSXRelease VBoxGlobal::determineOsRelease()
-{
-    /* Prepare 'utsname' struct: */
-    utsname info;
-    if (uname(&info) != -1)
-    {
-        /* Compose map of known releases: */
-        QMap<int, MacOSXRelease> release;
-        release[10] = MacOSXRelease_SnowLeopard;
-        release[11] = MacOSXRelease_Lion;
-        release[12] = MacOSXRelease_MountainLion;
-        release[13] = MacOSXRelease_Mavericks;
-        release[14] = MacOSXRelease_Yosemite;
-        release[15] = MacOSXRelease_ElCapitan;
-
-        /* Cut the major release index of the string we have, s.a. 'man uname': */
-        const int iRelease = QString(info.release).section('.', 0, 0).toInt();
-
-        /* Return release if determined, return 'New' if version more recent than latest, return 'Old' otherwise: */
-        return release.value(iRelease, iRelease > release.keys().last() ? MacOSXRelease_New : MacOSXRelease_Old);
-    }
-    /* Return 'Old' by default: */
-    return MacOSXRelease_Old;
-}
-#endif /* VBOX_WS_MAC */
-
-bool VBoxGlobal::brandingIsActive(bool fForce /* = false */)
-{
-    if (fForce)
-        return true;
-
-    if (m_strBrandingConfigFilePath.isEmpty())
-    {
-        m_strBrandingConfigFilePath = QDir(QApplication::applicationDirPath()).absolutePath();
-        m_strBrandingConfigFilePath += "/custom/custom.ini";
-    }
-
-    return QFile::exists(m_strBrandingConfigFilePath);
-}
-
-QString VBoxGlobal::brandingGetKey(QString strKey)
-{
-    QSettings settings(m_strBrandingConfigFilePath, QSettings::IniFormat);
-    return settings.value(QString("%1").arg(strKey)).toString();
-}
-
-/*static */
-QString VBoxGlobal::findUniqueFileName(const QString &strFullFolderPath, const QString &strBaseFileName)
-{
-    QDir folder(strFullFolderPath);
-    if (!folder.exists())
-        return strBaseFileName;
-    QFileInfoList folderContent = folder.entryInfoList();
-    QSet<QString> fileNameSet;
-    foreach (const QFileInfo &fileInfo, folderContent)
-    {
-        /* Remove the extension : */
-        fileNameSet.insert(fileInfo.completeBaseName());
-    }
-    int iSuffix = 0;
-    QString strNewName(strBaseFileName);
-    while (fileNameSet.contains(strNewName))
-    {
-        strNewName = strBaseFileName + QString("_") + QString::number(++iSuffix);
-    }
-    return strNewName;
-}
-
-/* static */
-bool VBoxGlobal::hasAllowedExtension(const QString &strExt, const QStringList &extList)
-{
-    for (int i = 0; i < extList.size(); ++i)
-        if (strExt.endsWith(extList.at(i), Qt::CaseInsensitive))
-            return true;
-    return false;
-}
-
-bool VBoxGlobal::processArgs()
-{
-    /* Among those arguments: */
-    bool fResult = false;
-    const QStringList args = qApp->arguments();
-
-    /* We are looking for a list of file URLs passed to the executable: */
-    QList<QUrl> listArgUrls;
-    for (int i = 1; i < args.size(); ++i)
-    {
-        /* But we break out after the first parameter, cause there
-         * could be parameters with arguments (e.g. --comment comment). */
-        if (args.at(i).startsWith("-"))
-            break;
-
-#ifdef VBOX_WS_MAC
-        const QString strArg = ::darwinResolveAlias(args.at(i));
-#else
-        const QString strArg = args.at(i);
-#endif
-
-        /* So if the argument file exists, we add it to URL list: */
-        if (   !strArg.isEmpty()
-            && QFile::exists(strArg))
-            listArgUrls << QUrl::fromLocalFile(QFileInfo(strArg).absoluteFilePath());
-    }
-
-    /* If there are file URLs: */
-    if (!listArgUrls.isEmpty())
-    {
-        /* We enumerate them and: */
-        for (int i = 0; i < listArgUrls.size(); ++i)
-        {
-            /* Check which of them has allowed VM extensions: */
-            const QUrl url = listArgUrls.at(i);
-            const QString strFile = url.toLocalFile();
-            if (VBoxGlobal::hasAllowedExtension(strFile, VBoxFileExts))
-            {
-                /* So that we could run existing VMs: */
-                CVirtualBox comVBox = virtualBox();
-                CMachine comMachine = comVBox.FindMachine(strFile);
-                if (!comMachine.isNull())
-                {
-                    fResult = true;
-                    launchMachine(comMachine);
-                    /* And remove their URLs from the ULR list: */
-                    listArgUrls.removeAll(url);
-                }
-            }
-        }
-    }
-
-    /* And if there are *still* URLs: */
-    if (!listArgUrls.isEmpty())
-    {
-        /* We store them, they will be handled later: */
-        m_listArgUrls = listArgUrls;
-    }
-
-    return fResult;
-}
-
-bool VBoxGlobal::argumentUrlsPresent() const
-{
-    return !m_listArgUrls.isEmpty();
-}
-
-QList<QUrl> VBoxGlobal::takeArgumentUrls()
-{
-    const QList<QUrl> result = m_listArgUrls;
-    m_listArgUrls.clear();
-    return result;
-}
-
-#ifdef VBOX_WITH_DEBUGGER_GUI
-
-bool VBoxGlobal::isDebuggerEnabled() const
-{
-    return isDebuggerWorker(&m_fDbgEnabled, GUI_Dbg_Enabled);
-}
-
-bool VBoxGlobal::isDebuggerAutoShowEnabled() const
-{
-    return isDebuggerWorker(&m_fDbgAutoShow, GUI_Dbg_AutoShow);
-}
-
-bool VBoxGlobal::isDebuggerAutoShowCommandLineEnabled() const
-{
-    return isDebuggerWorker(&m_fDbgAutoShowCommandLine, GUI_Dbg_AutoShow);
-}
-
-bool VBoxGlobal::isDebuggerAutoShowStatisticsEnabled() const
-{
-    return isDebuggerWorker(&m_fDbgAutoShowStatistics, GUI_Dbg_AutoShow);
-}
-
-#endif /* VBOX_WITH_DEBUGGER_GUI */
-
-bool VBoxGlobal::shouldStartPaused() const
-{
-#ifdef VBOX_WITH_DEBUGGER_GUI
-    return m_enmLaunchRunning == LaunchRunning_Default ? isDebuggerAutoShowEnabled() : m_enmLaunchRunning == LaunchRunning_No;
-#else
-    return false;
-#endif
-}
-
-#ifdef VBOX_GUI_WITH_PIDFILE
-
-void VBoxGlobal::createPidfile()
-{
-    if (!m_strPidFile.isEmpty())
-    {
-        const qint64 iPid = qApp->applicationPid();
-        QFile file(m_strPidFile);
-        if (file.open(QIODevice::WriteOnly | QIODevice::Truncate))
-        {
-             QTextStream out(&file);
-             out << iPid << endl;
-        }
-        else
-            LogRel(("Failed to create pid file %s\n", m_strPidFile.toUtf8().constData()));
-    }
-}
-
-void VBoxGlobal::deletePidfile()
-{
-    if (   !m_strPidFile.isEmpty()
-        && QFile::exists(m_strPidFile))
-        QFile::remove(m_strPidFile);
-}
-
-#endif /* VBOX_GUI_WITH_PIDFILE */
-
-/* static */
-QString VBoxGlobal::languageName()
-{
-    /* Returns "English" if no translation is installed
-     * or if the translation file is invalid. */
-    return QApplication::translate("@@@", "English",
-                                   "Native language name");
-}
-
-/* static */
-QString VBoxGlobal::languageCountry()
-{
-    /* Returns "--" if no translation is installed or if the translation file
-     * is invalid, or if the language is independent on the country. */
-    return QApplication::translate("@@@", "--",
-                                   "Native language country name "
-                                   "(empty if this language is for all countries)");
-}
-
-/* static */
-QString VBoxGlobal::languageNameEnglish()
-{
-    /* Returns "English" if no translation is installed
-     * or if the translation file is invalid. */
-    return QApplication::translate("@@@", "English",
-                                   "Language name, in English");
-}
-
-/* static */
-QString VBoxGlobal::languageCountryEnglish()
-{
-    /* Returns "--" if no translation is installed or if the translation file
-     * is invalid, or if the language is independent on the country. */
-    return QApplication::translate("@@@", "--",
-                                   "Language country name, in English "
-                                   "(empty if native country name is empty)");
-}
-
-/* static */
-QString VBoxGlobal::languageTranslators()
-{
-    /* Returns "Oracle Corporation" if no translation is installed or if the translation file
-     * is invalid, or if the translation is supplied by Oracle Corporation. */
-    return QApplication::translate("@@@", "Oracle Corporation",
-                                   "Comma-separated list of translators");
-}
-
-/* static */
-QString VBoxGlobal::vboxLanguageSubDirectory()
-{
-    return "/nls";
-}
-
-/* static */
-QString VBoxGlobal::vboxLanguageFileBase()
-{
-    return "VirtualBox_";
-}
-
-/* static */
-QString VBoxGlobal::vboxLanguageFileExtension()
-{
-    return ".qm";
-}
-
-/* static */
-QString VBoxGlobal::vboxLanguageIdRegExp()
-{
-    return "(([a-z]{2})(?:_([A-Z]{2}))?)|(C)";
-}
-
-/* static */
-QString VBoxGlobal::vboxBuiltInLanguageName()
-{
-    return "C";
-}
-
-/* static */
-QString VBoxGlobal::languageId()
-{
-    /* Note that it may not match with UIExtraDataManager::languageId() if the specified language cannot be loaded.
-     *
-     * If the built-in language is active, this method returns "C". "C" is treated as the built-in language for
-     * simplicity -- the C locale is used in unix environments as a fallback when the requested locale is invalid.
-     * This way we don't need to process both the "built_in" language and the "C" language (which is a valid
-     * environment setting) separately. */
-
-    return s_strLoadedLanguageId;
-}
-
-/* static */
-QString VBoxGlobal::systemLanguageId()
-{
-    /* This does exactly the same as QLocale::system().name() but corrects its wrong behavior on Linux systems
-     * (LC_NUMERIC for some strange reason takes precedence over any other locale setting in the QLocale::system()
-     * implementation). This implementation first looks at LC_ALL (as defined by SUS), then looks at LC_MESSAGES
-     * which is designed to define a language for program messages in case if it differs from the language for
-     * other locale categories. Then it looks for LANG and finally falls back to QLocale::system().name().
-     *
-     * The order of precedence is well defined here:
-     * http://opengroup.org/onlinepubs/007908799/xbd/envvar.html
-     *
-     * This method will return "C" when the requested locale is invalid or when the "C" locale is set explicitly. */
-
-#if defined(VBOX_WS_MAC)
-    /* QLocale return the right id only if the user select the format
-     * of the language also. So we use our own implementation */
-    return ::darwinSystemLanguage();
-#elif defined(Q_OS_UNIX)
-    const char *pszValue = RTEnvGet("LC_ALL");
-    if (pszValue == 0)
-        pszValue = RTEnvGet("LC_MESSAGES");
-    if (pszValue == 0)
-        pszValue = RTEnvGet("LANG");
-    if (pszValue != 0)
-        return QLocale(pszValue).name();
-#endif
-    return QLocale::system().name();
-}
-
-/* static */
-void VBoxGlobal::loadLanguage(const QString &strLangId)
-{
-    QString strEffectiveLangId = strLangId.isEmpty()
-                               ? VBoxGlobal::systemLanguageId()
-                               : strLangId;
-    QString strLanguageFileName;
-    QString strSelectedLangId = vboxBuiltInLanguageName();
-
-    /* If C is selected we change it temporary to en. This makes sure any extra
-     * "en" translation file will be loaded. This is necessary for loading the
-     * plural forms of some of our translations. */
-    bool fResetToC = false;
-    if (strEffectiveLangId == "C")
-    {
-        strEffectiveLangId = "en";
-        fResetToC = true;
-    }
-
-    char szNlsPath[RTPATH_MAX];
-    int rc;
-
-    rc = RTPathAppPrivateNoArch(szNlsPath, sizeof(szNlsPath));
-    AssertRC(rc);
-
-    QString strNlsPath = QString(szNlsPath) + vboxLanguageSubDirectory();
-    QDir nlsDir(strNlsPath);
-
-    Assert(!strEffectiveLangId.isEmpty());
-    if (!strEffectiveLangId.isEmpty() && strEffectiveLangId != vboxBuiltInLanguageName())
-    {
-        QRegExp regExp(vboxLanguageIdRegExp());
-        int iPos = regExp.indexIn(strEffectiveLangId);
-        /* The language ID should match the regexp completely: */
-        AssertReturnVoid(iPos == 0);
-
-        QString strStrippedLangId = regExp.cap(2);
-
-        if (nlsDir.exists(vboxLanguageFileBase() + strEffectiveLangId + vboxLanguageFileExtension()))
-        {
-            strLanguageFileName = nlsDir.absoluteFilePath(vboxLanguageFileBase() +
-                                                          strEffectiveLangId +
-                                                          vboxLanguageFileExtension());
-            strSelectedLangId = strEffectiveLangId;
-        }
-        else if (nlsDir.exists(vboxLanguageFileBase() + strStrippedLangId + vboxLanguageFileExtension()))
-        {
-            strLanguageFileName = nlsDir.absoluteFilePath(vboxLanguageFileBase() +
-                                                          strStrippedLangId +
-                                                          vboxLanguageFileExtension());
-            strSelectedLangId = strStrippedLangId;
-        }
-        else
-        {
-            /* Never complain when the default language is requested.  In any
-             * case, if no explicit language file exists, we will simply
-             * fall-back to English (built-in). */
-            if (!strLangId.isNull() && strEffectiveLangId != "en")
-                msgCenter().cannotFindLanguage(strEffectiveLangId, strNlsPath);
-            /* strSelectedLangId remains built-in here: */
-            AssertReturnVoid(strSelectedLangId == vboxBuiltInLanguageName());
-        }
-    }
-
-    /* Delete the old translator if there is one: */
-    if (sTranslator)
-    {
-        /* QTranslator destructor will call qApp->removeTranslator() for
-         * us. It will also delete all its child translations we attach to it
-         * below, so we don't have to care about them specially. */
-        delete sTranslator;
-    }
-
-    /* Load new language files: */
-    sTranslator = new VBoxTranslator(qApp);
-    Assert(sTranslator);
-    bool fLoadOk = true;
-    if (sTranslator)
-    {
-        if (strSelectedLangId != vboxBuiltInLanguageName())
-        {
-            Assert(!strLanguageFileName.isNull());
-            fLoadOk = sTranslator->loadFile(strLanguageFileName);
-        }
-        /* We install the translator in any case: on failure, this will
-         * activate an empty translator that will give us English (built-in): */
-        qApp->installTranslator(sTranslator);
-    }
-    else
-        fLoadOk = false;
-
-    if (fLoadOk)
-        s_strLoadedLanguageId = strSelectedLangId;
-    else
-    {
-        msgCenter().cannotLoadLanguage(strLanguageFileName);
-        s_strLoadedLanguageId = vboxBuiltInLanguageName();
-    }
-
-    /* Try to load the corresponding Qt translation: */
-    if (languageId() != vboxBuiltInLanguageName() && languageId() != "en")
-    {
-#ifdef Q_OS_UNIX
-        /* We use system installations of Qt on Linux systems, so first, try
-         * to load the Qt translation from the system location. */
-        strLanguageFileName = QLibraryInfo::location(QLibraryInfo::TranslationsPath) + "/qt_" +
-                              languageId() + vboxLanguageFileExtension();
-        QTranslator *pQtSysTr = new QTranslator(sTranslator);
-        Assert(pQtSysTr);
-        if (pQtSysTr && pQtSysTr->load(strLanguageFileName))
-            qApp->installTranslator(pQtSysTr);
-        /* Note that the Qt translation supplied by Oracle is always loaded
-         * afterwards to make sure it will take precedence over the system
-         * translation (it may contain more decent variants of translation
-         * that better correspond to VirtualBox UI). We need to load both
-         * because a newer version of Qt may be installed on the user computer
-         * and the Oracle version may not fully support it. We don't do it on
-         * Win32 because we supply a Qt library there and therefore the
-         * Oracle translation is always the best one. */
-#endif
-        strLanguageFileName = nlsDir.absoluteFilePath(QString("qt_") +
-                                                      languageId() +
-                                                      vboxLanguageFileExtension());
-        QTranslator *pQtTr = new QTranslator(sTranslator);
-        Assert(pQtTr);
-        if (pQtTr && (fLoadOk = pQtTr->load(strLanguageFileName)))
-            qApp->installTranslator(pQtTr);
-        /* The below message doesn't fit 100% (because it's an additional
-         * language and the main one won't be reset to built-in on failure)
-         * but the load failure is so rare here that it's not worth a separate
-         * message (but still, having something is better than having none) */
-        if (!fLoadOk && !strLangId.isNull())
-            msgCenter().cannotLoadLanguage(strLanguageFileName);
-    }
-    if (fResetToC)
-        s_strLoadedLanguageId = vboxBuiltInLanguageName();
-#ifdef VBOX_WS_MAC
-    /* Qt doesn't translate the items in the Application menu initially.
-     * Manually trigger an update. */
-    ::darwinRetranslateAppMenu();
-#endif
-}
-
-/* static */
-QString VBoxGlobal::yearsToString(uint32_t cVal)
-{
-    return QApplication::translate("VBoxGlobal", "%n year(s)", "", cVal);
-}
-
-/* static */
-QString VBoxGlobal::monthsToString(uint32_t cVal)
-{
-    return QApplication::translate("VBoxGlobal", "%n month(s)", "", cVal);
-}
-
-/* static */
-QString VBoxGlobal::daysToString(uint32_t cVal)
-{
-    return QApplication::translate("VBoxGlobal", "%n day(s)", "", cVal);
-}
-
-/* static */
-QString VBoxGlobal::hoursToString(uint32_t cVal)
-{
-    return QApplication::translate("VBoxGlobal", "%n hour(s)", "", cVal);
-}
-
-/* static */
-QString VBoxGlobal::minutesToString(uint32_t cVal)
-{
-    return QApplication::translate("VBoxGlobal", "%n minute(s)", "", cVal);
-}
-
-/* static */
-QString VBoxGlobal::secondsToString(uint32_t cVal)
-{
-    return QApplication::translate("VBoxGlobal", "%n second(s)", "", cVal);
-}
-
-/* static */
-QChar VBoxGlobal::decimalSep()
-{
-    return QLocale::system().decimalPoint();
-}
-
-/* static */
-QString VBoxGlobal::sizeRegexp()
-{
-    /* This regexp will capture 5 groups of text:
-     * - cap(1): integer number in case when no decimal point is present
-     *           (if empty, it means that decimal point is present)
-     * - cap(2): size suffix in case when no decimal point is present (may be empty)
-     * - cap(3): integer number in case when decimal point is present (may be empty)
-     * - cap(4): fraction number (hundredth) in case when decimal point is present
-     * - cap(5): size suffix in case when decimal point is present (note that
-     *           B cannot appear there). */
-
-    const QString strRegexp =
-        QString("^(?:(?:(\\d+)(?:\\s?(%2|%3|%4|%5|%6|%7))?)|(?:(\\d*)%1(\\d{1,2})(?:\\s?(%3|%4|%5|%6|%7))))$")
-            .arg(decimalSep())
-            .arg(tr("B", "size suffix Bytes"))
-            .arg(tr("KB", "size suffix KBytes=1024 Bytes"))
-            .arg(tr("MB", "size suffix MBytes=1024 KBytes"))
-            .arg(tr("GB", "size suffix GBytes=1024 MBytes"))
-            .arg(tr("TB", "size suffix TBytes=1024 GBytes"))
-            .arg(tr("PB", "size suffix PBytes=1024 TBytes"));
-    return strRegexp;
-}
-
-/* static */
-quint64 VBoxGlobal::parseSize(const QString &strText)
-{
-    /* Text should be in form of B|KB|MB|GB|TB|PB. */
-    QRegExp regexp(sizeRegexp());
-    int iPos = regexp.indexIn(strText);
-    if (iPos != -1)
-    {
-        QString strInteger = regexp.cap(1);
-        QString strHundred;
-        QString strSuff = regexp.cap(2);
-        if (strInteger.isEmpty())
-        {
-            strInteger = regexp.cap(3);
-            strHundred = regexp.cap(4);
-            strSuff = regexp.cap(5);
-        }
-
-        quint64 uDenominator = 0;
-        if (strSuff.isEmpty() || strSuff == tr("B", "size suffix Bytes"))
-            uDenominator = 1;
-        else if (strSuff == tr("KB", "size suffix KBytes=1024 Bytes"))
-            uDenominator = _1K;
-        else if (strSuff == tr("MB", "size suffix MBytes=1024 KBytes"))
-            uDenominator = _1M;
-        else if (strSuff == tr("GB", "size suffix GBytes=1024 MBytes"))
-            uDenominator = _1G;
-        else if (strSuff == tr("TB", "size suffix TBytes=1024 GBytes"))
-            uDenominator = _1T;
-        else if (strSuff == tr("PB", "size suffix PBytes=1024 TBytes"))
-            uDenominator = _1P;
-
-        quint64 iInteger = strInteger.toULongLong();
-        if (uDenominator == 1)
-            return iInteger;
-
-        quint64 iHundred = strHundred.leftJustified(2, '0').toULongLong();
-        iHundred = iHundred * uDenominator / 100;
-        iInteger = iInteger * uDenominator + iHundred;
-        return iInteger;
-    }
-    else
-        return 0;
-}
-
-/* static */
-SizeSuffix VBoxGlobal::parseSizeSuffix(const QString &strText)
-{
-    /* Text should be in form of B|KB|MB|GB|TB|PB. */
-    QRegExp regexp(sizeRegexp());
-    int iPos = regexp.indexIn(strText);
-    if (iPos != -1)
-    {
-        QString strInteger = regexp.cap(1);
-        QString strSuff = regexp.cap(2);
-        if (strInteger.isEmpty())
-        {
-            strInteger = regexp.cap(3);
-            strSuff = regexp.cap(5);
-        }
-
-        SizeSuffix enmSizeSuffix = SizeSuffix_Byte;
-
-        if (strSuff.isEmpty() || strSuff == tr("B", "size suffix Bytes"))
-            enmSizeSuffix = SizeSuffix_Byte;
-        else if (strSuff == tr("KB", "size suffix KBytes=1024 Bytes"))
-            enmSizeSuffix = SizeSuffix_KiloByte;
-        else if (strSuff == tr("MB", "size suffix MBytes=1024 KBytes"))
-            enmSizeSuffix = SizeSuffix_MegaByte;
-        else if (strSuff == tr("GB", "size suffix GBytes=1024 MBytes"))
-            enmSizeSuffix = SizeSuffix_GigaByte;
-        else if (strSuff == tr("TB", "size suffix TBytes=1024 GBytes"))
-            enmSizeSuffix = SizeSuffix_TeraByte;
-        else if (strSuff == tr("PB", "size suffix PBytes=1024 TBytes"))
-            enmSizeSuffix = SizeSuffix_PetaByte;
-        return enmSizeSuffix;
-    }
-    else
-        return SizeSuffix_Byte;
-}
-
-/* static */
-bool VBoxGlobal::hasSizeSuffix(const QString &strText)
-{
-    /* Text should be in form of B|KB|MB|GB|TB|PB. */
-    QRegExp regexp(sizeRegexp());
-    int iPos = regexp.indexIn(strText);
-    if (iPos != -1)
-    {
-        QString strInteger = regexp.cap(1);
-        QString strSuff = regexp.cap(2);
-        if (strInteger.isEmpty())
-        {
-            strInteger = regexp.cap(3);
-            strSuff = regexp.cap(5);
-        }
-
-        if (strSuff.isEmpty())
-            return false;
-        if (strSuff == tr("B", "size suffix Bytes") ||
-            strSuff == tr("KB", "size suffix KBytes=1024 Bytes") ||
-            strSuff == tr("MB", "size suffix MBytes=1024 KBytes") ||
-            strSuff == tr("GB", "size suffix GBytes=1024 MBytes") ||
-            strSuff == tr("TB", "size suffix TBytes=1024 GBytes") ||
-            strSuff == tr("PB", "size suffix PBytes=1024 TBytes"))
-            return true;
-        return false;
-    }
-    else
-        return false;
-}
-
-/* static */
-QString VBoxGlobal::formatSize(quint64 uSize, uint cDecimal /* = 2 */,
-                               FormatSize enmMode /* = FormatSize_Round */)
-{
-    /* Text will be in form of B|KB|MB|GB|TB|PB.
-     *
-     * When enmMode is FormatSize_Round, the result is rounded to the
-     *              closest number containing @a aDecimal decimal digits.
-     * When enmMode is FormatSize_RoundDown, the result is rounded to the
-     *              largest number with @a aDecimal decimal digits that is not greater than
-     *              the result. This guarantees that converting the resulting string back to
-     *              the integer value in bytes will not produce a value greater that the
-     *              initial size parameter.
-     * When enmMode is FormatSize_RoundUp, the result is rounded to the
-     *              smallest number with @a aDecimal decimal digits that is not less than the
-     *              result. This guarantees that converting the resulting string back to the
-     *              integer value in bytes will not produce a value less that the initial
-     *              size parameter. */
-
-    quint64 uDenominator = 0;
-    int iSuffix = 0;
-
-    if (uSize < _1K)
-    {
-        uDenominator = 1;
-        iSuffix = 0;
-    }
-    else if (uSize < _1M)
-    {
-        uDenominator = _1K;
-        iSuffix = 1;
-    }
-    else if (uSize < _1G)
-    {
-        uDenominator = _1M;
-        iSuffix = 2;
-    }
-    else if (uSize < _1T)
-    {
-        uDenominator = _1G;
-        iSuffix = 3;
-    }
-    else if (uSize < _1P)
-    {
-        uDenominator = _1T;
-        iSuffix = 4;
-    }
-    else
-    {
-        uDenominator = _1P;
-        iSuffix = 5;
-    }
-
-    quint64 uInteger = uSize / uDenominator;
-    quint64 uDecimal = uSize % uDenominator;
-    quint64 uMult = 1;
-    for (uint i = 0; i < cDecimal; ++i)
-        uMult *= 10;
-
-    QString strNumber;
-    if (uDenominator > 1)
-    {
-        if (uDecimal)
-        {
-            uDecimal *= uMult;
-            /* Not greater: */
-            if (enmMode == FormatSize_RoundDown)
-                uDecimal = uDecimal / uDenominator;
-            /* Not less: */
-            else if (enmMode == FormatSize_RoundUp)
-                uDecimal = (uDecimal + uDenominator - 1) / uDenominator;
-            /* Nearest: */
-            else
-                uDecimal = (uDecimal + uDenominator / 2) / uDenominator;
-        }
-        /* Check for the fractional part overflow due to rounding: */
-        if (uDecimal == uMult)
-        {
-            uDecimal = 0;
-            ++uInteger;
-            /* Check if we've got 1024 XB after rounding and scale down if so: */
-            if (uInteger == 1024 && iSuffix + 1 < (int)SizeSuffix_Max)
-            {
-                uInteger /= 1024;
-                ++iSuffix;
-            }
-        }
-        strNumber = QString::number(uInteger);
-        if (cDecimal)
-            strNumber += QString("%1%2").arg(decimalSep())
-                                        .arg(QString::number(uDecimal).rightJustified(cDecimal, '0'));
-    }
-    else
-    {
-        strNumber = QString::number(uInteger);
-    }
-
-    return QString("%1 %2").arg(strNumber).arg(gpConverter->toString(static_cast<SizeSuffix>(iSuffix)));
-}
-
-/* static */
-QStringList VBoxGlobal::COMPortNames()
-{
-    QStringList list;
-    for (size_t i = 0; i < RT_ELEMENTS(kComKnownPorts); ++i)
-        list << kComKnownPorts[i].name;
-
-    return list;
-}
-
-/* static */
-QString VBoxGlobal::toCOMPortName(ulong uIRQ, ulong uIOBase)
-{
-    for (size_t i = 0; i < RT_ELEMENTS(kComKnownPorts); ++i)
-        if (kComKnownPorts[i].IRQ == uIRQ &&
-            kComKnownPorts[i].IOBase == uIOBase)
-            return kComKnownPorts[i].name;
-
-    return s_strUserDefinedPortName;
-}
-
-/* static */
-bool VBoxGlobal::toCOMPortNumbers(const QString &strName, ulong &uIRQ, ulong &uIOBase)
-{
-    for (size_t i = 0; i < RT_ELEMENTS(kComKnownPorts); ++i)
-        if (strcmp(kComKnownPorts[i].name, strName.toUtf8().data()) == 0)
-        {
-            uIRQ = kComKnownPorts[i].IRQ;
-            uIOBase = kComKnownPorts[i].IOBase;
-            return true;
-        }
-
-    return false;
-}
-
-/* static */
-QStringList VBoxGlobal::LPTPortNames()
-{
-    QStringList list;
-    for (size_t i = 0; i < RT_ELEMENTS(kLptKnownPorts); ++i)
-        list << kLptKnownPorts[i].name;
-
-    return list;
-}
-
-/* static */
-QString VBoxGlobal::toLPTPortName(ulong uIRQ, ulong uIOBase)
-{
-    for (size_t i = 0; i < RT_ELEMENTS(kLptKnownPorts); ++i)
-        if (kLptKnownPorts[i].IRQ == uIRQ &&
-            kLptKnownPorts[i].IOBase == uIOBase)
-            return kLptKnownPorts[i].name;
-
-    return s_strUserDefinedPortName;
-}
-
-/* static */
-bool VBoxGlobal::toLPTPortNumbers(const QString &strName, ulong &uIRQ, ulong &uIOBase)
-{
-    for (size_t i = 0; i < RT_ELEMENTS(kLptKnownPorts); ++i)
-        if (strcmp(kLptKnownPorts[i].name, strName.toUtf8().data()) == 0)
-        {
-            uIRQ = kLptKnownPorts[i].IRQ;
-            uIOBase = kLptKnownPorts[i].IOBase;
-            return true;
-        }
-
-    return false;
-}
-
-/* static */
-QString VBoxGlobal::highlight(QString strText, bool fToolTip /* = false */)
-{
-    /* We should reformat the input strText so that:
-     * - strings in single quotes will be put inside <nobr> and marked
-     *   with blue color;
-     * - UUIDs be put inside <nobr> and marked
-     *   with green color;
-     * - replaces new line chars with </p><p> constructs to form paragraphs
-     *   (note that <p\> and </p> are not appended to the beginning and to the
-     *    end of the string respectively, to allow the result be appended
-     *    or prepended to the existing paragraph).
-     *
-     *  If @a fToolTip is true, colouring is not applied, only the <nobr> tag
-     *  is added. Also, new line chars are replaced with <br> instead of <p>. */
-
-    QString strFont;
-    QString uuidFont;
-    QString endFont;
-    if (!fToolTip)
-    {
-        strFont = "<font color=#0000CC>";
-        uuidFont = "<font color=#008000>";
-        endFont = "</font>";
-    }
-
-    /* Replace special entities, '&' -- first! */
-    strText.replace('&', "&amp;");
-    strText.replace('<', "&lt;");
-    strText.replace('>', "&gt;");
-    strText.replace('\"', "&quot;");
-
-    /* Mark strings in single quotes with color: */
-    QRegExp rx = QRegExp("((?:^|\\s)[(]?)'([^']*)'(?=[:.-!);]?(?:\\s|$))");
-    rx.setMinimal(true);
-    strText.replace(rx, QString("\\1%1<nobr>'\\2'</nobr>%2").arg(strFont).arg(endFont));
-
-    /* Mark UUIDs with color: */
-    strText.replace(QRegExp(
-        "((?:^|\\s)[(]?)"
-        "(\\{[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\})"
-        "(?=[:.-!);]?(?:\\s|$))"),
-        QString("\\1%1<nobr>\\2</nobr>%2").arg(uuidFont).arg(endFont));
-
-    /* Split to paragraphs at \n chars: */
-    if (!fToolTip)
-        strText.replace('\n', "</p><p>");
-    else
-        strText.replace('\n', "<br>");
-
-    return strText;
-}
-
-/* static */
-QString VBoxGlobal::emphasize(QString strText)
-{
-    /* We should reformat the input string @a strText so that:
-     * - strings in single quotes will be put inside \<nobr\> and marked
-     *   with bold style;
-     * - UUIDs be put inside \<nobr\> and marked
-     *   with italic style;
-     * - replaces new line chars with \</p\>\<p\> constructs to form paragraphs
-     *   (note that \<p\> and \</p\> are not appended to the beginning and to the
-     *    end of the string respectively, to allow the result be appended
-     *    or prepended to the existing paragraph). */
-
-    QString strEmphStart("<b>");
-    QString strEmphEnd("</b>");
-    QString uuidEmphStart("<i>");
-    QString uuidEmphEnd("</i>");
-
-    /* Replace special entities, '&' -- first! */
-    strText.replace('&', "&amp;");
-    strText.replace('<', "&lt;");
-    strText.replace('>', "&gt;");
-    strText.replace('\"', "&quot;");
-
-    /* Mark strings in single quotes with bold style: */
-    QRegExp rx = QRegExp("((?:^|\\s)[(]?)'([^']*)'(?=[:.-!);]?(?:\\s|$))");
-    rx.setMinimal(true);
-    strText.replace(rx, QString("\\1%1<nobr>'\\2'</nobr>%2").arg(strEmphStart).arg(strEmphEnd));
-
-    /* Mark UUIDs with italic style: */
-    strText.replace(QRegExp(
-        "((?:^|\\s)[(]?)"
-        "(\\{[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\})"
-        "(?=[:.-!);]?(?:\\s|$))"),
-        QString("\\1%1<nobr>\\2</nobr>%2").arg(uuidEmphStart).arg(uuidEmphEnd));
-
-    /* Split to paragraphs at \n chars: */
-    strText.replace('\n', "</p><p>");
-
-    return strText;
-}
-
-/* static */
-QString VBoxGlobal::removeAccelMark(QString strText)
-{
-    /* In order to support accelerators used in non-alphabet languages
-     * (e.g. Japanese) that has a form of "(&<L>)" (where <L> is a latin letter),
-     * this method first searches for this pattern and, if found, removes it as a
-     * whole. If such a pattern is not found, then the '&' character is simply
-     * removed from the string. */
-
-    QRegExp accel("\\(&[a-zA-Z]\\)");
-    int iPos = accel.indexIn(strText);
-    if (iPos >= 0)
-        strText.remove(iPos, accel.cap().length());
-    else
-    {
-        iPos = strText.indexOf('&');
-        if (iPos >= 0)
-            strText.remove(iPos, 1);
-    }
-
-    return strText;
-}
-
-/* static */
-QString VBoxGlobal::insertKeyToActionText(const QString &strText, const QString &strKey)
-{
-#ifdef VBOX_WS_MAC
-    QString strPattern("%1 (Host+%2)");
-#else
-    QString strPattern("%1 \tHost+%2");
-#endif
-    if (   strKey.isEmpty()
-        || strKey.compare("None", Qt::CaseInsensitive) == 0)
-        return strText;
-    else
-        return strPattern.arg(strText).arg(QKeySequence(strKey).toString(QKeySequence::NativeText));
-}
-
-/* static */
-QString VBoxGlobal::helpFile()
-{
-#if defined(VBOX_WS_WIN)
-    const QString strName = "VirtualBox";
-    const QString strSuffix = "chm";
-#elif defined(VBOX_WS_MAC)
-    const QString strName = "UserManual";
-    const QString strSuffix = "pdf";
-#elif defined(VBOX_WS_X11)
-# if defined VBOX_OSE
-    const QString strName = "UserManual";
-    const QString strSuffix = "pdf";
-# else
-    const QString strName = "VirtualBox";
-    const QString strSuffix = "chm";
-# endif
-#endif
-
-    /* Where are the docs located? */
-    char szDocsPath[RTPATH_MAX];
-    int rc = RTPathAppDocs(szDocsPath, sizeof(szDocsPath));
-    AssertRC(rc);
-
-    /* Make sure that the language is in two letter code.
-     * Note: if languageId() returns an empty string lang.name() will
-     * return "C" which is an valid language code. */
-    QLocale lang(VBoxGlobal::languageId());
-
-    /* Construct the path and the filename: */
-    QString strManual = QString("%1/%2_%3.%4").arg(szDocsPath)
-                                              .arg(strName)
-                                              .arg(lang.name())
-                                              .arg(strSuffix);
-
-    /* Check if a help file with that name exists: */
-    QFileInfo fi(strManual);
-    if (fi.exists())
-        return strManual;
-
-    /* Fall back to the standard: */
-    strManual = QString("%1/%2.%4").arg(szDocsPath)
-                                   .arg(strName)
-                                   .arg(strSuffix);
-    return strManual;
-}
-
-/* static */
-QString VBoxGlobal::documentsPath()
-{
-    QString strPath = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
-    QDir dir(strPath);
-    if (dir.exists())
-        return QDir::cleanPath(dir.canonicalPath());
-    else
-    {
-        dir.setPath(QDir::homePath() + "/Documents");
-        if (dir.exists())
-            return QDir::cleanPath(dir.canonicalPath());
-        else
-            return QDir::homePath();
-    }
-}
-
-/* static */
-QRect VBoxGlobal::normalizeGeometry(const QRect &rectangle, const QRegion &boundRegion, bool fCanResize /* = true */)
-{
-    /* Perform direct and flipped search of position for @a rectangle to make sure it is fully contained
-     * inside @a boundRegion region by moving & resizing (if @a fCanResize is specified) @a rectangle if
-     * necessary. Selects the minimum shifted result between direct and flipped variants. */
-
-    /* Direct search for normalized rectangle: */
-    QRect var1(getNormalized(rectangle, boundRegion, fCanResize));
-
-    /* Flipped search for normalized rectangle: */
-    QRect var2(flip(getNormalized(flip(rectangle).boundingRect(),
-                                  flip(boundRegion), fCanResize)).boundingRect());
-
-    /* Calculate shift from starting position for both variants: */
-    double dLength1 = sqrt(pow((double)(var1.x() - rectangle.x()), (double)2) +
-                           pow((double)(var1.y() - rectangle.y()), (double)2));
-    double dLength2 = sqrt(pow((double)(var2.x() - rectangle.x()), (double)2) +
-                           pow((double)(var2.y() - rectangle.y()), (double)2));
-
-    /* Return minimum shifted variant: */
-    return dLength1 > dLength2 ? var2 : var1;
-}
-
-/* static */
-QRect VBoxGlobal::getNormalized(const QRect &rectangle, const QRegion &boundRegion, bool /* fCanResize = true */)
-{
-    /* Ensures that the given rectangle @a rectangle is fully contained within the region @a boundRegion
-     * by moving @a rectangle if necessary. If @a rectangle is larger than @a boundRegion, top left
-     * corner of @a rectangle is aligned with the top left corner of maximum available rectangle and,
-     * if @a fCanResize is true, @a rectangle is shrinked to become fully visible. */
-
-    /* Storing available horizontal sub-rectangles & vertical shifts: */
-    const int iWindowVertical = rectangle.center().y();
-    QList<QRect> rectanglesList;
-    QList<int> shiftsList;
-    foreach (QRect currentItem, boundRegion.rects())
-    {
-        const int iCurrentDelta = qAbs(iWindowVertical - currentItem.center().y());
-        const int iShift2Top = currentItem.top() - rectangle.top();
-        const int iShift2Bot = currentItem.bottom() - rectangle.bottom();
-
-        int iTtemPosition = 0;
-        foreach (QRect item, rectanglesList)
-        {
-            const int iDelta = qAbs(iWindowVertical - item.center().y());
-            if (iDelta > iCurrentDelta)
-                break;
-            else
-                ++iTtemPosition;
-        }
-        rectanglesList.insert(iTtemPosition, currentItem);
-
-        int iShift2TopPos = 0;
-        foreach (int iShift, shiftsList)
-            if (qAbs(iShift) > qAbs(iShift2Top))
-                break;
-            else
-                ++iShift2TopPos;
-        shiftsList.insert(iShift2TopPos, iShift2Top);
-
-        int iShift2BotPos = 0;
-        foreach (int iShift, shiftsList)
-            if (qAbs(iShift) > qAbs(iShift2Bot))
-                break;
-            else
-                ++iShift2BotPos;
-        shiftsList.insert(iShift2BotPos, iShift2Bot);
-    }
-
-    /* Trying to find the appropriate place for window: */
-    QRect result;
-    for (int i = -1; i < shiftsList.size(); ++i)
-    {
-        /* Move to appropriate vertical: */
-        QRect newRectangle(rectangle);
-        if (i >= 0)
-            newRectangle.translate(0, shiftsList[i]);
-
-        /* Search horizontal shift: */
-        int iMaxShift = 0;
-        foreach (QRect item, rectanglesList)
-        {
-            QRect trectangle(newRectangle.translated(item.left() - newRectangle.left(), 0));
-            if (!item.intersects(trectangle))
-                continue;
-
-            if (newRectangle.left() < item.left())
-            {
-                const int iShift = item.left() - newRectangle.left();
-                iMaxShift = qAbs(iShift) > qAbs(iMaxShift) ? iShift : iMaxShift;
-            }
-            else if (newRectangle.right() > item.right())
-            {
-                const int iShift = item.right() - newRectangle.right();
-                iMaxShift = qAbs(iShift) > qAbs(iMaxShift) ? iShift : iMaxShift;
-            }
-        }
-
-        /* Shift across the horizontal direction: */
-        newRectangle.translate(iMaxShift, 0);
-
-        /* Check the translated rectangle to feat the rules: */
-        if (boundRegion.united(newRectangle) == boundRegion)
-            result = newRectangle;
-
-        if (!result.isNull())
-            break;
-    }
-
-    if (result.isNull())
-    {
-        /* Resize window to feat desirable size
-         * using max of available rectangles: */
-        QRect maxRectangle;
-        quint64 uMaxSquare = 0;
-        foreach (QRect item, rectanglesList)
-        {
-            const quint64 uSquare = item.width() * item.height();
-            if (uSquare > uMaxSquare)
-            {
-                uMaxSquare = uSquare;
-                maxRectangle = item;
-            }
-        }
-
-        result = rectangle;
-        result.moveTo(maxRectangle.x(), maxRectangle.y());
-        if (maxRectangle.right() < result.right())
-            result.setRight(maxRectangle.right());
-        if (maxRectangle.bottom() < result.bottom())
-            result.setBottom(maxRectangle.bottom());
-    }
-
-    return result;
-}
-
-/* static */
-QRegion VBoxGlobal::flip(const QRegion &region)
-{
-    QRegion result;
-    QVector<QRect> rectangles(region.rects());
-    foreach (QRect rectangle, rectangles)
-        result += QRect(rectangle.y(), rectangle.x(),
-                        rectangle.height(), rectangle.width());
-    return result;
-}
-
-/* static */
-void VBoxGlobal::centerWidget(QWidget *pWidget, QWidget *pRelative, bool fCanResize /* = true */)
-{
-    /* If necessary, pWidget's position is adjusted to make it fully visible within
-     * the available desktop area. If pWidget is bigger then this area, it will also
-     * be resized unless fCanResize is false or there is an inappropriate minimum
-     * size limit (in which case the top left corner will be simply aligned with the top
-     * left corner of the available desktop area). pWidget must be a top-level widget.
-     * pRelative may be any widget, but if it's not top-level itself, its top-level
-     * widget will be used for calculations. pRelative can also be NULL, in which case
-     * pWidget will be centered relative to the available desktop area. */
-
-    AssertReturnVoid(pWidget);
-    AssertReturnVoid(pWidget->isTopLevel());
-
-    QRect deskGeo, parentGeo;
-    if (pRelative)
-    {
-        pRelative = pRelative->window();
-        deskGeo = gpDesktop->availableGeometry(pRelative);
-        parentGeo = pRelative->frameGeometry();
-        // WORKAROUND:
-        // On X11/Gnome, geo/frameGeo.x() and y() are always 0 for top level
-        // widgets with parents, what a shame. Use mapToGlobal() to workaround.
-        QPoint d = pRelative->mapToGlobal(QPoint(0, 0));
-        d.rx() -= pRelative->geometry().x() - pRelative->x();
-        d.ry() -= pRelative->geometry().y() - pRelative->y();
-        parentGeo.moveTopLeft(d);
-    }
-    else
-    {
-        deskGeo = gpDesktop->availableGeometry();
-        parentGeo = deskGeo;
-    }
-
-    // WORKAROUND:
-    // On X11, there is no way to determine frame geometry (including WM
-    // decorations) before the widget is shown for the first time. Stupidly
-    // enumerate other top level widgets to find the thickest frame. The code
-    // is based on the idea taken from QDialog::adjustPositionInternal().
-
-    int iExtraW = 0;
-    int iExtraH = 0;
-
-    QWidgetList list = QApplication::topLevelWidgets();
-    QListIterator<QWidget*> it(list);
-    while ((iExtraW == 0 || iExtraH == 0) && it.hasNext())
-    {
-        int iFrameW, iFrameH;
-        QWidget *pCurrent = it.next();
-        if (!pCurrent->isVisible())
-            continue;
-
-        iFrameW = pCurrent->frameGeometry().width() - pCurrent->width();
-        iFrameH = pCurrent->frameGeometry().height() - pCurrent->height();
-
-        iExtraW = qMax(iExtraW, iFrameW);
-        iExtraH = qMax(iExtraH, iFrameH);
-    }
-
-    /* On non-X11 platforms, the following would be enough instead of the above workaround: */
-    // QRect geo = frameGeometry();
-    QRect geo = QRect(0, 0, pWidget->width() + iExtraW,
-                            pWidget->height() + iExtraH);
-
-    geo.moveCenter(QPoint(parentGeo.x() + (parentGeo.width() - 1) / 2,
-                          parentGeo.y() + (parentGeo.height() - 1) / 2));
-
-    /* Ensure the widget is within the available desktop area: */
-    QRect newGeo = normalizeGeometry(geo, deskGeo, fCanResize);
-#ifdef VBOX_WS_MAC
-    // WORKAROUND:
-    // No idea why, but Qt doesn't respect if there is a unified toolbar on the
-    // ::move call. So manually add the height of the toolbar before setting
-    // the position.
-    if (pRelative)
-        newGeo.translate(0, ::darwinWindowToolBarHeight(pWidget));
-#endif /* VBOX_WS_MAC */
-
-    pWidget->move(newGeo.topLeft());
-
-    if (   fCanResize
-        && (geo.width() != newGeo.width() || geo.height() != newGeo.height()))
-        pWidget->resize(newGeo.width() - iExtraW, newGeo.height() - iExtraH);
-}
-
-#ifdef VBOX_WS_X11
-typedef struct {
-/** User specified flags */
-uint32_t flags;
-/** User-specified position */
-int32_t x, y;
-/** User-specified size */
-int32_t width, height;
-/** Program-specified minimum size */
-int32_t min_width, min_height;
-/** Program-specified maximum size */
-int32_t max_width, max_height;
-/** Program-specified resize increments */
-int32_t width_inc, height_inc;
-/** Program-specified minimum aspect ratios */
-int32_t min_aspect_num, min_aspect_den;
-/** Program-specified maximum aspect ratios */
-int32_t max_aspect_num, max_aspect_den;
-/** Program-specified base size */
-int32_t base_width, base_height;
-/** Program-specified window gravity */
-uint32_t win_gravity;
-} xcb_size_hints_t;
-#endif /* VBOX_WS_X11 */
-
-/* static */
-void VBoxGlobal::setTopLevelGeometry(QWidget *pWidget, int x, int y, int w, int h)
-{
-    AssertPtrReturnVoid(pWidget);
-#ifdef VBOX_WS_X11
-# define QWINDOWSIZE_MAX ((1<<24)-1)
-    if (pWidget->isWindow() && pWidget->isVisible())
-    {
-        // WORKAROUND:
-        // X11 window managers are not required to accept geometry changes on
-        // the top-level window.  Unfortunately, current at Qt 5.6 and 5.7, Qt
-        // assumes that the change will succeed, and resizes all sub-windows
-        // unconditionally.  By calling ConfigureWindow directly, Qt will see
-        // our change request as an externally triggered one on success and not
-        // at all if it is rejected.
-        const double dDPR = gpDesktop->devicePixelRatio(pWidget);
-        uint16_t fMask =   XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y
-                         | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT;
-        uint32_t values[] = { (uint32_t)(x * dDPR), (uint32_t)(y * dDPR), (uint32_t)(w * dDPR), (uint32_t)(h * dDPR) };
-        xcb_configure_window(QX11Info::connection(), (xcb_window_t)pWidget->winId(),
-                             fMask, values);
-        xcb_size_hints_t hints;
-        hints.flags =   1 /* XCB_ICCCM_SIZE_HINT_US_POSITION */
-                      | 2 /* XCB_ICCCM_SIZE_HINT_US_SIZE */
-                      | 512 /* XCB_ICCCM_SIZE_P_WIN_GRAVITY */;
-        hints.x           = x * dDPR;
-        hints.y           = y * dDPR;
-        hints.width       = w * dDPR;
-        hints.height      = h * dDPR;
-        hints.min_width   = pWidget->minimumSize().width() * dDPR;
-        hints.min_height  = pWidget->minimumSize().height() * dDPR;
-        hints.max_width   = pWidget->maximumSize().width() * dDPR;
-        hints.max_height  = pWidget->maximumSize().height() * dDPR;
-        hints.width_inc   = pWidget->sizeIncrement().width() * dDPR;
-        hints.height_inc  = pWidget->sizeIncrement().height() * dDPR;
-        hints.base_width  = pWidget->baseSize().width() * dDPR;
-        hints.base_height = pWidget->baseSize().height() * dDPR;
-        hints.win_gravity = XCB_GRAVITY_STATIC;
-        if (hints.min_width > 0 || hints.min_height > 0)
-            hints.flags |= 16 /* XCB_ICCCM_SIZE_HINT_P_MIN_SIZE */;
-        if (hints.max_width < QWINDOWSIZE_MAX || hints.max_height < QWINDOWSIZE_MAX)
-            hints.flags |= 32 /* XCB_ICCCM_SIZE_HINT_P_MAX_SIZE */;
-        if (hints.width_inc > 0 || hints.height_inc)
-            hints.flags |=   64 /* XCB_ICCCM_SIZE_HINT_P_MIN_SIZE */
-                           | 256 /* XCB_ICCCM_SIZE_HINT_BASE_SIZE */;
-        xcb_change_property(QX11Info::connection(), XCB_PROP_MODE_REPLACE,
-                            (xcb_window_t)pWidget->winId(), XCB_ATOM_WM_NORMAL_HINTS,
-                            XCB_ATOM_WM_SIZE_HINTS, 32, sizeof(hints) >> 2, &hints);
-        xcb_flush(QX11Info::connection());
-    }
-    else
-        // WORKAROUND:
-        // Call the Qt method if the window is not visible as otherwise no
-        // Configure event will arrive to tell Qt what geometry we want.
-        pWidget->setGeometry(x, y, w, h);
-# else /* !VBOX_WS_X11 */
-    pWidget->setGeometry(x, y, w, h);
-# endif /* !VBOX_WS_X11 */
-}
-
-/* static */
-void VBoxGlobal::setTopLevelGeometry(QWidget *pWidget, const QRect &rect)
-{
-    VBoxGlobal::setTopLevelGeometry(pWidget, rect.x(), rect.y(), rect.width(), rect.height());
-}
-
-#if defined(VBOX_WS_X11)
-
-static char *XXGetProperty(Display *pDpy, Window windowHandle, Atom propType, const char *pszPropName)
-{
-    Atom propNameAtom = XInternAtom(pDpy, pszPropName, True /* only_if_exists */);
-    if (propNameAtom == None)
-        return NULL;
-
-    Atom actTypeAtom = None;
-    int actFmt = 0;
-    unsigned long nItems = 0;
-    unsigned long nBytesAfter = 0;
-    unsigned char *propVal = NULL;
-    int rc = XGetWindowProperty(pDpy, windowHandle, propNameAtom,
-                                0, LONG_MAX, False /* delete */,
-                                propType, &actTypeAtom, &actFmt,
-                                &nItems, &nBytesAfter, &propVal);
-    if (rc != Success)
-        return NULL;
-
-    return reinterpret_cast<char*>(propVal);
-}
-
-static Bool XXSendClientMessage(Display *pDpy, Window windowHandle, const char *pszMsg,
-                                unsigned long aData0 = 0, unsigned long aData1 = 0,
-                                unsigned long aData2 = 0, unsigned long aData3 = 0,
-                                unsigned long aData4 = 0)
-{
-    Atom msgAtom = XInternAtom(pDpy, pszMsg, True /* only_if_exists */);
-    if (msgAtom == None)
-        return False;
-
-    XEvent ev;
-
-    ev.xclient.type = ClientMessage;
-    ev.xclient.serial = 0;
-    ev.xclient.send_event = True;
-    ev.xclient.display = pDpy;
-    ev.xclient.window = windowHandle;
-    ev.xclient.message_type = msgAtom;
-
-    /* Always send as 32 bit for now: */
-    ev.xclient.format = 32;
-    ev.xclient.data.l[0] = aData0;
-    ev.xclient.data.l[1] = aData1;
-    ev.xclient.data.l[2] = aData2;
-    ev.xclient.data.l[3] = aData3;
-    ev.xclient.data.l[4] = aData4;
-
-    return XSendEvent(pDpy, DefaultRootWindow(pDpy), False,
-                      SubstructureRedirectMask, &ev) != 0;
-}
-
-#endif
-
-/* static */
-bool VBoxGlobal::activateWindow(WId wId, bool fSwitchDesktop /* = true */)
-{
-    RT_NOREF(fSwitchDesktop);
-    bool fResult = true;
-
-#if defined(VBOX_WS_WIN)
-
-    HWND handle = (HWND)wId;
-
-    if (IsIconic(handle))
-        fResult &= !!ShowWindow(handle, SW_RESTORE);
-    else if (!IsWindowVisible(handle))
-        fResult &= !!ShowWindow(handle, SW_SHOW);
-
-    fResult &= !!SetForegroundWindow(handle);
-
-#elif defined(VBOX_WS_X11)
-
-    Display *pDisplay = QX11Info::display();
-
-    if (fSwitchDesktop)
-    {
-        /* try to find the desktop ID using the NetWM property */
-        CARD32 *pDesktop = (CARD32 *) XXGetProperty(pDisplay, wId, XA_CARDINAL,
-                                                    "_NET_WM_DESKTOP");
-        if (pDesktop == NULL)
-            // WORKAROUND:
-            // if the NetWM properly is not supported try to find
-            // the desktop ID using the GNOME WM property.
-            pDesktop = (CARD32 *) XXGetProperty(pDisplay, wId, XA_CARDINAL,
-                                                "_WIN_WORKSPACE");
-
-        if (pDesktop != NULL)
-        {
-            Bool ok = XXSendClientMessage(pDisplay, DefaultRootWindow(pDisplay),
-                                          "_NET_CURRENT_DESKTOP",
-                                          *pDesktop);
-            if (!ok)
-            {
-                Log1WarningFunc(("Couldn't switch to pDesktop=%08X\n", pDesktop));
-                fResult = false;
-            }
-            XFree(pDesktop);
-        }
-        else
-        {
-            Log1WarningFunc(("Couldn't find a pDesktop ID for wId=%08X\n", wId));
-            fResult = false;
-        }
-    }
-
-    Bool ok = XXSendClientMessage(pDisplay, wId, "_NET_ACTIVE_WINDOW");
-    fResult &= !!ok;
-
-    XRaiseWindow(pDisplay, wId);
-
-#else
-
-    NOREF(wId);
-    NOREF(fSwitchDesktop);
-    AssertFailed();
-    fResult = false;
-
-#endif
-
-    if (!fResult)
-        Log1WarningFunc(("Couldn't activate wId=%08X\n", wId));
-
-    return fResult;
-}
-
-/* static */
-void VBoxGlobal::setCursor(QWidget *pWidget, const QCursor &cursor)
-{
-    if (!pWidget)
-        return;
-
-#ifdef VBOX_WS_X11
-    /* As reported in https://www.virtualbox.org/ticket/16348,
-     * in X11 QWidget::setCursor(..) call uses RENDER
-     * extension. Qt (before 5.11) fails to handle the case where the mentioned extension
-     * is missing. Please see https://codereview.qt-project.org/#/c/225665/ for Qt patch: */
-    if ((VBoxGlobal::qtRTMajorVersion() < 5) ||
-        (VBoxGlobal::qtRTMajorVersion() == 5 && VBoxGlobal::qtRTMinorVersion() < 11))
-    {
-        if (X11CheckExtension("RENDER"))
-            pWidget->setCursor(cursor);
-    }
-    else
-    {
-        pWidget->setCursor(cursor);
-    }
-#else
-    pWidget->setCursor(cursor);
-#endif
-}
-
-/* static */
-void VBoxGlobal::setCursor(QGraphicsWidget *pWidget, const QCursor &cursor)
-{
-    if (!pWidget)
-        return;
-
-#ifdef VBOX_WS_X11
-    /* As reported in https://www.virtualbox.org/ticket/16348,
-     * in X11 QGraphicsWidget::setCursor(..) call uses RENDER
-     * extension. Qt (before 5.11) fails to handle the case where the mentioned extension
-     * is missing. Please see https://codereview.qt-project.org/#/c/225665/ for Qt patch: */
-    if ((VBoxGlobal::qtRTMajorVersion() < 5) ||
-        (VBoxGlobal::qtRTMajorVersion() == 5 && VBoxGlobal::qtRTMinorVersion() < 11))
-    {
-        if (X11CheckExtension("RENDER"))
-            pWidget->setCursor(cursor);
-    }
-    else
-    {
-        pWidget->setCursor(cursor);
-    }
-#else
-    pWidget->setCursor(cursor);
-#endif
-}
-
-/* static */
-void VBoxGlobal::unsetCursor(QWidget *pWidget)
-{
-    if (!pWidget)
-        return;
-
-#ifdef VBOX_WS_X11
-    /* As reported in https://www.virtualbox.org/ticket/16348,
-     * in X11 QWidget::unsetCursor(..) call uses RENDER
-     * extension. Qt (before 5.11) fails to handle the case where the mentioned extension
-     * is missing. Please see https://codereview.qt-project.org/#/c/225665/ for Qt patch: */
-    if ((VBoxGlobal::qtRTMajorVersion() < 5) ||
-        (VBoxGlobal::qtRTMajorVersion() == 5 && VBoxGlobal::qtRTMinorVersion() < 11))
-    {
-        if (X11CheckExtension("RENDER"))
-            pWidget->unsetCursor();
-    }
-    else
-    {
-        pWidget->unsetCursor();
-    }
-#else
-    pWidget->unsetCursor();
-#endif
-}
-
-/* static */
-void VBoxGlobal::unsetCursor(QGraphicsWidget *pWidget)
-{
-    if (!pWidget)
-        return;
-
-#ifdef VBOX_WS_X11
-    /* As reported in https://www.virtualbox.org/ticket/16348,
-     * in X11 QGraphicsWidget::unsetCursor(..) call uses RENDER
-     * extension. Qt (before 5.11) fails to handle the case where the mentioned extension
-     * is missing. Please see https://codereview.qt-project.org/#/c/225665/ for Qt patch: */
-    if ((VBoxGlobal::qtRTMajorVersion() < 5) ||
-        (VBoxGlobal::qtRTMajorVersion() == 5 && VBoxGlobal::qtRTMinorVersion() < 11))
-    {
-        if (X11CheckExtension("RENDER"))
-            pWidget->unsetCursor();
-    }
-    else
-    {
-        pWidget->unsetCursor();
-    }
-#else
-    pWidget->unsetCursor();
-#endif
-}
-
-
-#if defined(VBOX_WS_X11)
-
-/* static */
-bool VBoxGlobal::supportsFullScreenMonitorsProtocolX11()
-{
-    /* This method tests whether the current X11 window manager supports full-screen mode as we need it.
-     * Unfortunately the EWMH specification was not fully clear about whether we can expect to find
-     * all of these atoms on the _NET_SUPPORTED root window property, so we have to test with all
-     * interesting window managers. If this fails for a user when you think it should succeed
-     * they should try executing:
-     * xprop -root | egrep -w '_NET_WM_FULLSCREEN_MONITORS|_NET_WM_STATE|_NET_WM_STATE_FULLSCREEN'
-     * in an X11 terminal window.
-     * All three strings should be found under a property called "_NET_SUPPORTED(ATOM)". */
-
-    /* Using a global to get at the display does not feel right, but that is how it is done elsewhere in the code. */
-    Display *pDisplay = QX11Info::display();
-    Atom atomSupported            = XInternAtom(pDisplay, "_NET_SUPPORTED",
-                                                True /* only_if_exists */);
-    Atom atomWMFullScreenMonitors = XInternAtom(pDisplay,
-                                                "_NET_WM_FULLSCREEN_MONITORS",
-                                                True /* only_if_exists */);
-    Atom atomWMState              = XInternAtom(pDisplay,
-                                                "_NET_WM_STATE",
-                                                True /* only_if_exists */);
-    Atom atomWMStateFullScreen    = XInternAtom(pDisplay,
-                                                "_NET_WM_STATE_FULLSCREEN",
-                                                True /* only_if_exists */);
-    bool fFoundFullScreenMonitors = false;
-    bool fFoundState              = false;
-    bool fFoundStateFullScreen    = false;
-    Atom atomType;
-    int cFormat;
-    unsigned long cItems;
-    unsigned long cbLeft;
-    Atom *pAtomHints;
-    int rc;
-    unsigned i;
-
-    if (   atomSupported == None || atomWMFullScreenMonitors == None
-        || atomWMState == None || atomWMStateFullScreen == None)
-        return false;
-    /* Get atom value: */
-    rc = XGetWindowProperty(pDisplay, DefaultRootWindow(pDisplay),
-                            atomSupported, 0, 0x7fffffff /*LONG_MAX*/,
-                            False /* delete */, XA_ATOM, &atomType,
-                            &cFormat, &cItems, &cbLeft,
-                            (unsigned char **)&pAtomHints);
-    if (rc != Success)
-        return false;
-    if (pAtomHints == NULL)
-        return false;
-    if (atomType == XA_ATOM && cFormat == 32 && cbLeft == 0)
-        for (i = 0; i < cItems; ++i)
-        {
-            if (pAtomHints[i] == atomWMFullScreenMonitors)
-                fFoundFullScreenMonitors = true;
-            if (pAtomHints[i] == atomWMState)
-                fFoundState = true;
-            if (pAtomHints[i] == atomWMStateFullScreen)
-                fFoundStateFullScreen = true;
-        }
-    XFree(pAtomHints);
-    return fFoundFullScreenMonitors && fFoundState && fFoundStateFullScreen;
-}
-
-/* static */
-bool VBoxGlobal::setFullScreenMonitorX11(QWidget *pWidget, ulong uScreenId)
-{
-    return XXSendClientMessage(QX11Info::display(),
-                               pWidget->window()->winId(),
-                               "_NET_WM_FULLSCREEN_MONITORS",
-                               uScreenId, uScreenId, uScreenId, uScreenId,
-                               1 /* Source indication (1 = normal application) */);
-}
-
-/* static */
-QVector<Atom> VBoxGlobal::flagsNetWmState(QWidget *pWidget)
-{
-    /* Get display: */
-    Display *pDisplay = QX11Info::display();
-
-    /* Prepare atoms: */
-    QVector<Atom> resultNetWmState;
-    Atom net_wm_state = XInternAtom(pDisplay, "_NET_WM_STATE", True /* only if exists */);
-
-    /* Get the size of the property data: */
-    Atom actual_type;
-    int iActualFormat;
-    ulong uPropertyLength;
-    ulong uBytesLeft;
-    uchar *pPropertyData = 0;
-    if (XGetWindowProperty(pDisplay, pWidget->window()->winId(),
-                           net_wm_state, 0, 0, False, XA_ATOM, &actual_type, &iActualFormat,
-                           &uPropertyLength, &uBytesLeft, &pPropertyData) == Success &&
-        actual_type == XA_ATOM && iActualFormat == 32)
-    {
-        resultNetWmState.resize(uBytesLeft / 4);
-        XFree((char*)pPropertyData);
-        pPropertyData = 0;
-
-        /* Fetch all data: */
-        if (XGetWindowProperty(pDisplay, pWidget->window()->winId(),
-                               net_wm_state, 0, resultNetWmState.size(), False, XA_ATOM, &actual_type, &iActualFormat,
-                               &uPropertyLength, &uBytesLeft, &pPropertyData) != Success)
-            resultNetWmState.clear();
-        else if (uPropertyLength != (ulong)resultNetWmState.size())
-            resultNetWmState.resize(uPropertyLength);
-
-        /* Put it into resultNetWmState: */
-        if (!resultNetWmState.isEmpty())
-            memcpy(resultNetWmState.data(), pPropertyData, resultNetWmState.size() * sizeof(Atom));
-        if (pPropertyData)
-            XFree((char*)pPropertyData);
-    }
-
-    /* Return result: */
-    return resultNetWmState;
-}
-
-/* static */
-bool VBoxGlobal::isFullScreenFlagSet(QWidget *pWidget)
-{
-    /* Get display: */
-    Display *pDisplay = QX11Info::display();
-
-    /* Prepare atoms: */
-    Atom net_wm_state_fullscreen = XInternAtom(pDisplay, "_NET_WM_STATE_FULLSCREEN", True /* only if exists */);
-
-    /* Check if flagsNetWmState(pWidget) contains full-screen flag: */
-    return flagsNetWmState(pWidget).contains(net_wm_state_fullscreen);
-}
-
-/* static */
-void VBoxGlobal::setFullScreenFlag(QWidget *pWidget)
-{
-    /* Get display: */
-    Display *pDisplay = QX11Info::display();
-
-    /* Prepare atoms: */
-    QVector<Atom> resultNetWmState = flagsNetWmState(pWidget);
-    Atom net_wm_state = XInternAtom(pDisplay, "_NET_WM_STATE", True /* only if exists */);
-    Atom net_wm_state_fullscreen = XInternAtom(pDisplay, "_NET_WM_STATE_FULLSCREEN", True /* only if exists */);
-
-    /* Append resultNetWmState with fullscreen flag if necessary: */
-    if (!resultNetWmState.contains(net_wm_state_fullscreen))
-    {
-        resultNetWmState.append(net_wm_state_fullscreen);
-        /* Apply property to widget again: */
-        XChangeProperty(pDisplay, pWidget->window()->winId(),
-                        net_wm_state, XA_ATOM, 32, PropModeReplace,
-                        (unsigned char*)resultNetWmState.data(), resultNetWmState.size());
-    }
-}
-
-/* static */
-void VBoxGlobal::setSkipTaskBarFlag(QWidget *pWidget)
-{
-    /* Get display: */
-    Display *pDisplay = QX11Info::display();
-
-    /* Prepare atoms: */
-    QVector<Atom> resultNetWmState = flagsNetWmState(pWidget);
-    Atom net_wm_state = XInternAtom(pDisplay, "_NET_WM_STATE", True /* only if exists */);
-    Atom net_wm_state_skip_taskbar = XInternAtom(pDisplay, "_NET_WM_STATE_SKIP_TASKBAR", True /* only if exists */);
-
-    /* Append resultNetWmState with skip-taskbar flag if necessary: */
-    if (!resultNetWmState.contains(net_wm_state_skip_taskbar))
-    {
-        resultNetWmState.append(net_wm_state_skip_taskbar);
-        /* Apply property to widget again: */
-        XChangeProperty(pDisplay, pWidget->window()->winId(),
-                        net_wm_state, XA_ATOM, 32, PropModeReplace,
-                        (unsigned char*)resultNetWmState.data(), resultNetWmState.size());
-    }
-}
-
-/* static */
-void VBoxGlobal::setSkipPagerFlag(QWidget *pWidget)
-{
-    /* Get display: */
-    Display *pDisplay = QX11Info::display();
-
-    /* Prepare atoms: */
-    QVector<Atom> resultNetWmState = flagsNetWmState(pWidget);
-    Atom net_wm_state = XInternAtom(pDisplay, "_NET_WM_STATE", True /* only if exists */);
-    Atom net_wm_state_skip_pager = XInternAtom(pDisplay, "_NET_WM_STATE_SKIP_PAGER", True /* only if exists */);
-
-    /* Append resultNetWmState with skip-pager flag if necessary: */
-    if (!resultNetWmState.contains(net_wm_state_skip_pager))
-    {
-        resultNetWmState.append(net_wm_state_skip_pager);
-        /* Apply property to widget again: */
-        XChangeProperty(pDisplay, pWidget->window()->winId(),
-                        net_wm_state, XA_ATOM, 32, PropModeReplace,
-                        (unsigned char*)resultNetWmState.data(), resultNetWmState.size());
-    }
-}
-
-/* static */
-void VBoxGlobal::setWMClass(QWidget *pWidget, const QString &strNameString, const QString &strClassString)
-{
-    /* Make sure all arguments set: */
-    AssertReturnVoid(pWidget && !strNameString.isNull() && !strClassString.isNull());
-
-    /* Define QByteArray objects to make sure data is alive within the scope: */
-    QByteArray nameByteArray;
-    /* Check the existence of RESOURCE_NAME env. variable and override name string if necessary: */
-    const char resourceName[] = "RESOURCE_NAME";
-    if (qEnvironmentVariableIsSet(resourceName))
-        nameByteArray = qgetenv(resourceName);
-    else
-        nameByteArray = strNameString.toLatin1();
-    QByteArray classByteArray = strClassString.toLatin1();
-
-    AssertReturnVoid(nameByteArray.data() && classByteArray.data());
-
-    XClassHint windowClass;
-    windowClass.res_name = nameByteArray.data();
-    windowClass.res_class = classByteArray.data();
-    /* Set WM_CLASS of the window to passed name and class strings: */
-    XSetClassHint(QX11Info::display(), pWidget->window()->winId(), &windowClass);
-}
-
-#endif /* VBOX_WS_X11 */
-
-/* static */
-void VBoxGlobal::setMinimumWidthAccordingSymbolCount(QSpinBox *pSpinBox, int cCount)
-{
-    /* Shame on Qt it hasn't stuff for tuning
-     * widget size suitable for reflecting content of desired size.
-     * For example QLineEdit, QSpinBox and similar widgets should have a methods
-     * to strict the minimum width to reflect at least [n] symbols. */
-
-    /* Load options: */
-    QStyleOptionSpinBox option;
-    option.initFrom(pSpinBox);
-
-    /* Acquire edit-field rectangle: */
-    QRect rect = pSpinBox->style()->subControlRect(QStyle::CC_SpinBox,
-                                                   &option,
-                                                   QStyle::SC_SpinBoxEditField,
-                                                   pSpinBox);
-
-    /* Calculate minimum-width magic: */
-    const int iSpinBoxWidth = pSpinBox->width();
-    const int iSpinBoxEditFieldWidth = rect.width();
-    const int iSpinBoxDelta = qMax(0, iSpinBoxWidth - iSpinBoxEditFieldWidth);
-    QFontMetrics metrics(pSpinBox->font(), pSpinBox);
-    const QString strDummy(cCount, '0');
-    const int iTextWidth = metrics.width(strDummy);
-
-    /* Tune spin-box minimum-width: */
-    pSpinBox->setMinimumWidth(iTextWidth + iSpinBoxDelta);
-}
-
-QString VBoxGlobal::vmGuestOSFamilyDescription(const QString &strFamilyId) const
-{
-    AssertMsg(m_guestOSFamilyDescriptions.contains(strFamilyId),
-              ("Family ID incorrect: '%s'.", strFamilyId.toLatin1().constData()));
-    return m_guestOSFamilyDescriptions.value(strFamilyId);
-}
-
-QList<CGuestOSType> VBoxGlobal::vmGuestOSTypeList(const QString &strFamilyId) const
-{
-    AssertMsg(m_guestOSFamilyIDs.contains(strFamilyId),
-              ("Family ID incorrect: '%s'.", strFamilyId.toLatin1().constData()));
-    return m_guestOSFamilyIDs.contains(strFamilyId) ?
-           m_guestOSTypes[m_guestOSFamilyIDs.indexOf(strFamilyId)] : QList<CGuestOSType>();
-}
-
-CGuestOSType VBoxGlobal::vmGuestOSType(const QString &strTypeId,
-                                       const QString &strFamilyId /* = QString() */) const
-{
-    QList<CGuestOSType> list;
-    if (m_guestOSFamilyIDs.contains(strFamilyId))
-    {
-        list = m_guestOSTypes.at(m_guestOSFamilyIDs.indexOf(strFamilyId));
-    }
-    else
-    {
-        for (int i = 0; i < m_guestOSFamilyIDs.size(); ++i)
-            list += m_guestOSTypes.at(i);
-    }
-    for (int j = 0; j < list.size(); ++j)
-        if (!list.at(j).GetId().compare(strTypeId))
-            return list.at(j);
-    return CGuestOSType();
-}
-
-QString VBoxGlobal::vmGuestOSTypeDescription(const QString &strTypeId) const
-{
-    for (int i = 0; i < m_guestOSFamilyIDs.size(); ++i)
-    {
-        QList<CGuestOSType> list(m_guestOSTypes[i]);
-        for (int j = 0; j < list.size(); ++j)
-            if (!list.at(j).GetId().compare(strTypeId))
-                return list.at(j).GetDescription();
-    }
-    return QString();
-}
-
-/* static */
-bool VBoxGlobal::isDOSType(const QString &strOSTypeId)
-{
-    if (   strOSTypeId.left(3) == "dos"
-        || strOSTypeId.left(3) == "win"
-        || strOSTypeId.left(3) == "os2")
-        return true;
-
-    return false;
-}
-
-/* static */
-bool VBoxGlobal::switchToMachine(CMachine &comMachine)
-{
-#ifdef VBOX_WS_MAC
-    ULONG64 id = comMachine.ShowConsoleWindow();
-#else
-    WId id = (WId)comMachine.ShowConsoleWindow();
-#endif
-
-    AssertWrapperOk(comMachine);
-    if (!comMachine.isOk())
-        return false;
-
-    // WORKAROUND:
-    // winId = 0 it means the console window has already done everything
-    // necessary to implement the "show window" semantics.
-    if (id == 0)
-        return true;
-
-#if defined(VBOX_WS_WIN) || defined(VBOX_WS_X11)
-
-    return activateWindow(id, true);
-
-#elif defined(VBOX_WS_MAC)
-
-    // WORKAROUND:
-    // This is just for the case were the other process cannot steal
-    // the focus from us. It will send us a PSN so we can try.
-    ProcessSerialNumber psn;
-    psn.highLongOfPSN = id >> 32;
-    psn.lowLongOfPSN = (UInt32)id;
-# ifdef __clang__
-#  pragma GCC diagnostic push
-#  pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-    OSErr rc = ::SetFrontProcess(&psn);
-#  pragma GCC diagnostic pop
-# else
-    OSErr rc = ::SetFrontProcess(&psn);
-# endif
-    if (!rc)
-        Log(("GUI: %#RX64 couldn't do SetFrontProcess on itself, the selector (we) had to do it...\n", id));
-    else
-        Log(("GUI: Failed to bring %#RX64 to front. rc=%#x\n", id, rc));
-    return !rc;
-
-#else
-
-    return false;
-
-#endif
-}
-
-bool VBoxGlobal::launchMachine(CMachine &comMachine, LaunchMode enmLaunchMode /* = LaunchMode_Default */)
-{
-    /* Switch to machine window(s) if possible: */
-    if (   comMachine.GetSessionState() == KSessionState_Locked /* precondition for CanShowConsoleWindow() */
-        && comMachine.CanShowConsoleWindow())
-    {
-        switch (uiType())
-        {
-            /* For Selector UI: */
-            case UIType_SelectorUI:
-            {
-                /* Just switch to existing VM window: */
-                return switchToMachine(comMachine);
-            }
-            /* For Runtime UI: */
-            case UIType_RuntimeUI:
-            {
-                /* Only separate UI process can reach that place.
-                 * Switch to existing VM window and exit. */
-                switchToMachine(comMachine);
-                return false;
-            }
-        }
-    }
-
-    if (enmLaunchMode != LaunchMode_Separate)
-    {
-        /* Make sure machine-state is one of required: */
-        KMachineState enmState = comMachine.GetState(); NOREF(enmState);
-        AssertMsg(   enmState == KMachineState_PoweredOff
-                  || enmState == KMachineState_Saved
-                  || enmState == KMachineState_Teleported
-                  || enmState == KMachineState_Aborted
-                  , ("Machine must be PoweredOff/Saved/Teleported/Aborted (%d)", enmState));
-    }
-
-    /* Create empty session instance: */
-    CSession comSession;
-    comSession.createInstance(CLSID_Session);
-    if (comSession.isNull())
-    {
-        msgCenter().cannotOpenSession(comSession);
-        return false;
-    }
-
-    /* Configure environment: */
-    QString strEnv;
-#ifdef Q_OS_WIN
-    /* Allow started VM process to be foreground window: */
-    AllowSetForegroundWindow(ASFW_ANY);
-#endif
-#ifdef VBOX_WS_X11
-    /* Make sure VM process will start on the same display as the VM selector: */
-    const char *pDisplay = RTEnvGet("DISPLAY");
-    if (pDisplay)
-        strEnv.append(QString("DISPLAY=%1\n").arg(pDisplay));
-    const char *pXauth = RTEnvGet("XAUTHORITY");
-    if (pXauth)
-        strEnv.append(QString("XAUTHORITY=%1\n").arg(pXauth));
-#endif
-    QString strType;
-    switch (enmLaunchMode)
-    {
-        case LaunchMode_Default:  strType = ""; break;
-        case LaunchMode_Separate: strType = isSeparateProcess() ? "headless" : "separate"; break;
-        case LaunchMode_Headless: strType = "headless"; break;
-        default: AssertFailedReturn(false);
-    }
-
-    /* Prepare "VM spawning" progress: */
-    CProgress comProgress = comMachine.LaunchVMProcess(comSession, strType, strEnv);
-    if (!comMachine.isOk())
-    {
-        /* If the VM is started separately and the VM process is already running, then it is OK. */
-        if (enmLaunchMode == LaunchMode_Separate)
-        {
-            KMachineState enmState = comMachine.GetState();
-            if (   enmState >= KMachineState_FirstOnline
-                && enmState <= KMachineState_LastOnline)
-            {
-                /* Already running. */
-                return true;
-            }
-        }
-
-        msgCenter().cannotOpenSession(comMachine);
-        return false;
-    }
-
-    /* Postpone showing "VM spawning" progress.
-     * Hope 1 minute will be enough to spawn any running VM silently,
-     * otherwise we better show the progress...
-     * If starting separately, then show the progress now. */
-    int iSpawningDuration = enmLaunchMode == LaunchMode_Separate ? 0 : 60000;
-    msgCenter().showModalProgressDialog(comProgress, comMachine.GetName(),
-                                        ":/progress_start_90px.png", 0, iSpawningDuration);
-    if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
-        msgCenter().cannotOpenSession(comProgress, comMachine.GetName());
-
-    /* Unlock machine, close session: */
-    comSession.UnlockMachine();
-
-    /* True finally: */
-    return true;
-}
-
-CSession VBoxGlobal::openSession(const QUuid &uId, KLockType lockType /* = KLockType_Shared */)
-{
-    /* Prepare session: */
-    CSession comSession;
-
-    /* Simulate try-catch block: */
-    bool fSuccess = false;
-    do
-    {
-        /* Create empty session instance: */
-        comSession.createInstance(CLSID_Session);
-        if (comSession.isNull())
-        {
-            msgCenter().cannotOpenSession(comSession);
-            break;
-        }
-
-        /* Search for the corresponding machine: */
-        CMachine comMachine = m_comVBox.FindMachine(uId.toString());
-        if (comMachine.isNull())
-        {
-            msgCenter().cannotFindMachineById(m_comVBox, uId);
-            break;
-        }
-
-        if (lockType == KLockType_VM)
-            comSession.SetName("GUI/Qt");
-
-        /* Lock found machine to session: */
-        comMachine.LockMachine(comSession, lockType);
-        if (!comMachine.isOk())
-        {
-            msgCenter().cannotOpenSession(comMachine);
-            break;
-        }
-
-        /* Pass the language ID as the property to the guest: */
-        if (comSession.GetType() == KSessionType_Shared)
-        {
-            CMachine comStartedMachine = comSession.GetMachine();
-            /* Make sure that the language is in two letter code.
-             * Note: if languageId() returns an empty string lang.name() will
-             * return "C" which is an valid language code. */
-            QLocale lang(VBoxGlobal::languageId());
-            comStartedMachine.SetGuestPropertyValue("/VirtualBox/HostInfo/GUI/LanguageID", lang.name());
-        }
-
-        /* Success finally: */
-        fSuccess = true;
-    }
-    while (0);
-    /* Cleanup try-catch block: */
-    if (!fSuccess)
-        comSession.detach();
-
-    /* Return session: */
-    return comSession;
-}
-
-void VBoxGlobal::startMediumEnumeration(const CMediumVector &comMedia /* = CMediumVector() */)
-{
-    /* Make sure VBoxGlobal is already valid: */
-    AssertReturnVoid(m_fValid);
-    /* Ignore the request during VBoxGlobal cleanup: */
-    if (s_fCleaningUp)
-        return;
-    /* Ignore the request during startup snapshot restoring: */
-    if (shouldRestoreCurrentSnapshot())
-        return;
-
-    /* Make sure medium-enumerator is already created: */
-    if (!m_pMediumEnumerator)
-        return;
-    /* Make sure enumeration is not already started: */
-    if (m_pMediumEnumerator->isMediumEnumerationInProgress())
-        return;
-
-    /* Redirect request to medium-enumerator under proper lock: */
-    if (m_meCleanupProtectionToken.tryLockForRead())
-    {
-        if (m_pMediumEnumerator)
-            m_pMediumEnumerator->startMediumEnumeration(comMedia);
-        m_meCleanupProtectionToken.unlock();
-    }
-}
-
-void VBoxGlobal::enumerateAdditionalMedium(const CMedium &comMedium)
-{
-    /* Make sure VBoxGlobal is already valid: */
-    AssertReturnVoid(m_fValid);
-    /* Ignore the request during VBoxGlobal cleanup: */
-    if (s_fCleaningUp)
-        return;
-    /* Ignore the request during startup snapshot restoring: */
-    if (shouldRestoreCurrentSnapshot())
-        return;
-
-    /* Make sure medium-enumerator is already created: */
-    if (!m_pMediumEnumerator)
-        return;
-
-    /* Redirect request to medium-enumerator under proper lock: */
-    if (m_meCleanupProtectionToken.tryLockForRead())
-    {
-        if (m_pMediumEnumerator)
-            m_pMediumEnumerator->enumerateAdditionalMedium(comMedium);
-        m_meCleanupProtectionToken.unlock();
-    }
-}
-
-void VBoxGlobal::refreshMedia()
-{
-    /* Make sure VBoxGlobal is already valid: */
-    AssertReturnVoid(m_fValid);
-    /* Ignore the request during VBoxGlobal cleanup: */
-    if (s_fCleaningUp)
-        return;
-    /* Ignore the request during startup snapshot restoring: */
-    if (shouldRestoreCurrentSnapshot())
-        return;
-
-    /* Make sure medium-enumerator is already created: */
-    if (!m_pMediumEnumerator)
-        return;
-    /* Make sure enumeration is not already started: */
-    if (m_pMediumEnumerator->isMediumEnumerationInProgress())
-        return;
-
-    /* We assume it's safe to call it without locking,
-     * since we are performing blocking operation here. */
-    m_pMediumEnumerator->refreshMedia();
-}
-
-bool VBoxGlobal::isMediumEnumerationInProgress() const
-{
-    /* Redirect request to medium-enumerator: */
-    return    m_pMediumEnumerator
-           && m_pMediumEnumerator->isMediumEnumerationInProgress();
-}
-
-#ifdef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
-bool VBoxGlobal::isFullMediumEnumerationRequested() const
-{
-    /* Redirect request to medium-enumerator: */
-    return    m_pMediumEnumerator
-           && m_pMediumEnumerator->isFullMediumEnumerationRequested();
-}
-#endif
-
-UIMedium VBoxGlobal::medium(const QUuid &uMediumID) const
-{
-    if (m_meCleanupProtectionToken.tryLockForRead())
-    {
-        /* Redirect call to medium-enumerator: */
-        UIMedium guiMedium;
-        if (m_pMediumEnumerator)
-            guiMedium = m_pMediumEnumerator->medium(uMediumID);
-        m_meCleanupProtectionToken.unlock();
-        return guiMedium;
-    }
-    return UIMedium();
-}
-
-QList<QUuid> VBoxGlobal::mediumIDs() const
-{
-    if (m_meCleanupProtectionToken.tryLockForRead())
-    {
-        /* Redirect call to medium-enumerator: */
-        QList<QUuid> listOfMedia;
-        if (m_pMediumEnumerator)
-            listOfMedia = m_pMediumEnumerator->mediumIDs();
-        m_meCleanupProtectionToken.unlock();
-        return listOfMedia;
-    }
-    return QList<QUuid>();
-}
-
-void VBoxGlobal::createMedium(const UIMedium &guiMedium)
-{
-    if (m_meCleanupProtectionToken.tryLockForRead())
-    {
-        /* Create medium in medium-enumerator: */
-        if (m_pMediumEnumerator)
-            m_pMediumEnumerator->createMedium(guiMedium);
-        m_meCleanupProtectionToken.unlock();
-    }
-}
-
-#ifndef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
-void VBoxGlobal::deleteMedium(const QUuid &uMediumID)
-{
-    if (m_meCleanupProtectionToken.tryLockForRead())
-    {
-        /* Delete medium from medium-enumerator: */
-        if (m_pMediumEnumerator)
-            m_pMediumEnumerator->deleteMedium(uMediumID);
-        m_meCleanupProtectionToken.unlock();
-    }
-}
-#endif
-
-QUuid VBoxGlobal::openMedium(UIMediumDeviceType enmMediumType, QString strMediumLocation, QWidget *pParent /* = 0 */)
-{
-    /* Convert to native separators: */
-    strMediumLocation = QDir::toNativeSeparators(strMediumLocation);
-
-    /* Initialize variables: */
-    CVirtualBox comVBox = virtualBox();
-
-    /* Open corresponding medium: */
-    CMedium comMedium = comVBox.OpenMedium(strMediumLocation, mediumTypeToGlobal(enmMediumType), KAccessMode_ReadWrite, false);
-
-    if (comVBox.isOk())
-    {
-        /* Prepare vbox medium wrapper: */
-        UIMedium guiMedium = medium(comMedium.GetId());
-
-        /* First of all we should test if that medium already opened: */
-        if (guiMedium.isNull())
-        {
-            /* And create new otherwise: */
-            guiMedium = UIMedium(comMedium, enmMediumType, KMediumState_Created);
-            createMedium(guiMedium);
-        }
-
-        /* Return guiMedium id: */
-        return guiMedium.id();
-    }
-    else
-        msgCenter().cannotOpenMedium(comVBox, strMediumLocation, pParent);
-
-    return QUuid();
-}
-
-QUuid VBoxGlobal::openMediumWithFileOpenDialog(UIMediumDeviceType enmMediumType, QWidget *pParent,
-                                               const QString &strDefaultFolder /* = QString() */,
-                                               bool fUseLastFolder /* = false */)
-{
-    /* Initialize variables: */
-    QList<QPair <QString, QString> > filters;
-    QStringList backends;
-    QStringList prefixes;
-    QString strFilter;
-    QString strTitle;
-    QString allType;
-    QString strLastFolder = defaultFolderPathForType(enmMediumType);
-
-    /* For DVDs and Floppies always check first the last recently used medium folder. For hard disk use
-       the caller's setting: */
-    fUseLastFolder = (enmMediumType == UIMediumDeviceType_DVD) || (enmMediumType == UIMediumDeviceType_Floppy);
-
-    switch (enmMediumType)
-    {
-        case UIMediumDeviceType_HardDisk:
-        {
-            filters = HDDBackends(virtualBox());
-            strTitle = tr("Please choose a virtual hard disk file");
-            allType = tr("All virtual hard disk files (%1)");
-            break;
-        }
-        case UIMediumDeviceType_DVD:
-        {
-            filters = DVDBackends(virtualBox());
-            strTitle = tr("Please choose a virtual optical disk file");
-            allType = tr("All virtual optical disk files (%1)");
-            break;
-        }
-        case UIMediumDeviceType_Floppy:
-        {
-            filters = FloppyBackends(virtualBox());
-            strTitle = tr("Please choose a virtual floppy disk file");
-            allType = tr("All virtual floppy disk files (%1)");
-            break;
-        }
-        default:
-            break;
-    }
-    QString strHomeFolder = fUseLastFolder && !strLastFolder.isEmpty() ? strLastFolder :
-                            strDefaultFolder.isEmpty() ? homeFolder() : strDefaultFolder;
-
-    /* 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, 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 dialog has some result: */
-    if (!files.empty() && !files[0].isEmpty())
-    {
-        QUuid uMediumId = openMedium(enmMediumType, files[0], pParent);
-        if (enmMediumType == UIMediumDeviceType_DVD || enmMediumType == UIMediumDeviceType_Floppy ||
-            (enmMediumType == UIMediumDeviceType_HardDisk && fUseLastFolder))
-            updateRecentlyUsedMediumListAndFolder(enmMediumType, medium(uMediumId).location());
-        return uMediumId;
-    }
-    return QUuid();
-}
-
-
-/**
- * Helper for createVisoMediumWithVisoCreator.
- * @returns IPRT status code.
- * @param   pStrmDst            Where to write the quoted string.
- * @param   pszPrefix           Stuff to put in front of it.
- * @param   rStr                The string to quote and write out.
- * @param   pszPrefix           Stuff to put after it.
- */
-DECLINLINE(int) visoWriteQuotedString(PRTSTREAM pStrmDst, const char *pszPrefix, QString const &rStr, const char *pszPostFix)
-{
-    QByteArray const utf8Array   = rStr.toUtf8();
-    const char      *apszArgv[2] = { utf8Array.constData(), NULL };
-    char            *pszQuoted;
-    int vrc = RTGetOptArgvToString(&pszQuoted, apszArgv, RTGETOPTARGV_CNV_QUOTE_BOURNE_SH);
-    if (RT_SUCCESS(vrc))
-    {
-        if (pszPrefix)
-            vrc = RTStrmPutStr(pStrmDst, pszPrefix);
-        if (RT_SUCCESS(vrc))
-        {
-            vrc = RTStrmPutStr(pStrmDst, pszQuoted);
-            if (pszPostFix && RT_SUCCESS(vrc))
-                vrc = RTStrmPutStr(pStrmDst, pszPostFix);
-        }
-        RTStrFree(pszQuoted);
-    }
-
-    return vrc;
-}
-
-
-QUuid VBoxGlobal::openMediumCreatorDialog(QWidget *pParent, UIMediumDeviceType  enmMediumType,
-                                          const QString &strDefaultFolder /* = QString() */, const QString &strMachineName /* = QString() */,
-                                          const QString &strMachineGuestOSTypeId /*= QString() */)
-{
-    QUuid uMediumId;
-
-    switch (enmMediumType)
-    {
-        case UIMediumDeviceType_Floppy:
-            uMediumId = showCreateFloppyDiskDialog(pParent, strDefaultFolder, strMachineName);
-            break;
-        case UIMediumDeviceType_HardDisk:
-            uMediumId = createHDWithNewHDWizard(pParent, strDefaultFolder, strMachineName, strMachineGuestOSTypeId);
-            break;
-        case UIMediumDeviceType_DVD:
-            uMediumId = createVisoMediumWithVisoCreator(pParent, strDefaultFolder, strMachineName);
-            break;
-        default:
-            break;
-    }
-    if (!uMediumId.isNull())
-    {
-        /* Update the recent medium list only if the mdium type is DVD or floppy. In case of hard disk
-           update those only if there is no vm context: */
-        if (enmMediumType == UIMediumDeviceType_DVD || enmMediumType == UIMediumDeviceType_Floppy ||
-            (enmMediumType == UIMediumDeviceType_HardDisk && strMachineName.isEmpty()))
-            updateRecentlyUsedMediumListAndFolder(enmMediumType, medium(uMediumId).location());
-    }
-    return uMediumId;
-}
-
-QUuid VBoxGlobal::createVisoMediumWithVisoCreator(QWidget *pParent, const QString &strDefaultFolder /* = QString */,
-                                                  const QString &strMachineName /* = QString */)
-{
-    QString strVisoSaveFolder(strDefaultFolder);
-    if (strVisoSaveFolder.isEmpty())
-        strVisoSaveFolder = defaultFolderPathForType(UIMediumDeviceType_DVD);
-
-    QWidget *pDialogParent = windowManager().realParentWindow(pParent);
-    UIVisoCreator *pVisoCreator = new UIVisoCreator(pDialogParent, strMachineName);
-
-    if (!pVisoCreator)
-        return QString();
-    windowManager().registerNewParent(pVisoCreator, pDialogParent);
-    pVisoCreator->setCurrentPath(gEDataManager->visoCreatorRecentFolder());
-
-    if (pVisoCreator->exec(false /* not application modal */))
-    {
-        QStringList files = pVisoCreator->entryList();
-        QString strVisoName = pVisoCreator->visoName();
-        if (strVisoName.isEmpty())
-            strVisoName = strMachineName;
-
-        if (files.empty() || files[0].isEmpty())
-        {
-            delete pVisoCreator;
-            return QUuid();
-        }
-
-        gEDataManager->setVISOCreatorRecentFolder(pVisoCreator->currentPath());
-
-        /* Produce the VISO. */
-        char szVisoPath[RTPATH_MAX];
-        QString strFileName = QString("%1%2").arg(strVisoName).arg(".viso");
-        int vrc = RTPathJoin(szVisoPath, sizeof(szVisoPath), strVisoSaveFolder.toUtf8().constData(), strFileName.toUtf8().constData());
-        if (RT_SUCCESS(vrc))
-        {
-            PRTSTREAM pStrmViso;
-            vrc = RTStrmOpen(szVisoPath, "w", &pStrmViso);
-            if (RT_SUCCESS(vrc))
-            {
-                RTUUID Uuid;
-                vrc = RTUuidCreate(&Uuid);
-                if (RT_SUCCESS(vrc))
-                {
-                    RTStrmPrintf(pStrmViso, "--iprt-iso-maker-file-marker-bourne-sh %RTuuid\n", &Uuid);
-                    vrc = visoWriteQuotedString(pStrmViso, "--volume-id=", strVisoName, "\n");
-
-                    for (int iFile = 0; iFile < files.size() && RT_SUCCESS(vrc); iFile++)
-                        vrc = visoWriteQuotedString(pStrmViso, NULL, files[iFile], "\n");
-
-                    /* Append custom options if any to the file: */
-                    const QStringList &customOptions = pVisoCreator->customOptions();
-                    foreach (QString strLine, customOptions)
-                        RTStrmPrintf(pStrmViso, "%s\n", strLine.toUtf8().constData());
-
-                    RTStrmFlush(pStrmViso);
-                    if (RT_SUCCESS(vrc))
-                        vrc = RTStrmError(pStrmViso);
-                }
-
-                RTStrmClose(pStrmViso);
-            }
-        }
-
-        /* Done. */
-        if (RT_SUCCESS(vrc))
-        {
-            delete pVisoCreator;
-            return openMedium(UIMediumDeviceType_DVD, QString(szVisoPath), pParent);
-        }
-        /** @todo error message. */
-        else
-        {
-            delete pVisoCreator;
-            return QUuid();
-        }
-    }
-    delete pVisoCreator;
-    return QUuid();
-}
-
-QUuid VBoxGlobal::showCreateFloppyDiskDialog(QWidget *pParent, const QString &strDefaultFolder /* QString() */,
-                                             const QString &strMachineName /* = QString() */ )
-{
-    QString strStartPath(strDefaultFolder);
-
-    if (strStartPath.isEmpty())
-        strStartPath = defaultFolderPathForType(UIMediumDeviceType_Floppy);
-
-    QWidget *pDialogParent = windowManager().realParentWindow(pParent);
-
-    UIFDCreationDialog *pDialog = new UIFDCreationDialog(pParent, strStartPath, strMachineName);
-    if (!pDialog)
-        return QUuid();
-    windowManager().registerNewParent(pDialog, pDialogParent);
-
-    if (pDialog->exec())
-    {
-        delete pDialog;
-        return pDialog->mediumID();
-    }
-    delete pDialog;
-    return QUuid();
-}
-
-int VBoxGlobal::openMediumSelectorDialog(QWidget *pParent, UIMediumDeviceType  enmMediumType, QUuid &outUuid,
-                                         const QString &strMachineFolder, const QString &strMachineName,
-                                         const QString &strMachineGuestOSTypeId, bool fEnableCreate)
-{
-    QWidget *pDialogParent = windowManager().realParentWindow(pParent);
-    QPointer<UIMediumSelector> pSelector = new UIMediumSelector(enmMediumType, strMachineName,
-                                                                strMachineFolder, strMachineGuestOSTypeId, pDialogParent);
-
-    if (!pSelector)
-        return static_cast<int>(UIMediumSelector::ReturnCode_Rejected);
-    pSelector->setEnableCreateAction(fEnableCreate);
-    windowManager().registerNewParent(pSelector, pDialogParent);
-
-    int iResult = pSelector->exec(false);
-    UIMediumSelector::ReturnCode returnCode;
-
-    if (iResult >= static_cast<int>(UIMediumSelector::ReturnCode_Max) || iResult < 0)
-        returnCode = UIMediumSelector::ReturnCode_Rejected;
-    else
-        returnCode = static_cast<UIMediumSelector::ReturnCode>(iResult);
-
-    if (returnCode == UIMediumSelector::ReturnCode_Accepted)
-    {
-        QList<QUuid> selectedMediumIds = pSelector->selectedMediumIds();
-
-        /* Currently we only care about the 0th since we support single selection by intention: */
-        if (selectedMediumIds.isEmpty())
-            returnCode = UIMediumSelector::ReturnCode_Rejected;
-        else
-        {
-            outUuid = selectedMediumIds[0];
-            updateRecentlyUsedMediumListAndFolder(enmMediumType, medium(outUuid).location());
-        }
-    }
-    delete pSelector;
-    return static_cast<int>(returnCode);
-}
-
-QUuid VBoxGlobal::createHDWithNewHDWizard(QWidget *pParent,  const QString &strMachineFolder /* = QString() */,
-                                          const QString &strMachineName /* = QString() */,
-                                          const QString &strMachineGuestOSTypeId  /* = QString() */)
-{
-    /* Initialize variables: */
-    QString strDefaultFolder(strMachineFolder);
-    if (strDefaultFolder.isEmpty())
-        strDefaultFolder = defaultFolderPathForType(UIMediumDeviceType_HardDisk);
-
-    /* In case we dont have a 'guest os type id' default back to 'Other': */
-    const CGuestOSType comGuestOSType = virtualBox().GetGuestOSType(!strMachineGuestOSTypeId.isEmpty() ? strMachineGuestOSTypeId : "Other");
-    QString strDiskName = findUniqueFileName(strDefaultFolder,
-                                             !strMachineName.isEmpty() ? strMachineName : "NewVirtualDisk");
-    /* Show New VD wizard: */
-    UISafePointerWizardNewVD pWizard = new UIWizardNewVD(pParent, strDiskName, strDefaultFolder, comGuestOSType.GetRecommendedHDD());
-
-    if (!pWizard)
-        return QUuid();
-    QWidget *pDialogParent = windowManager().realParentWindow(pParent);
-    windowManager().registerNewParent(pWizard, pDialogParent);
-    pWizard->prepare();
-
-    const QUuid uResult = pWizard->exec() == QDialog::Accepted ? pWizard->virtualDisk().GetId() : QUuid();
-    if (pWizard)
-        delete pWizard;
-    return uResult;
-}
-
-void VBoxGlobal::prepareStorageMenu(QMenu &menu,
-                                    QObject *pListener, const char *pszSlotName,
-                                    const CMachine &comMachine, const QString &strControllerName, const StorageSlot &storageSlot)
-{
-    /* Current attachment attributes: */
-    const CMediumAttachment comCurrentAttachment = comMachine.GetMediumAttachment(strControllerName,
-                                                                                  storageSlot.port,
-                                                                                  storageSlot.device);
-    const CMedium comCurrentMedium = comCurrentAttachment.GetMedium();
-    const QUuid uCurrentID = comCurrentMedium.isNull() ? QUuid() : comCurrentMedium.GetId();
-    const QString strCurrentLocation = comCurrentMedium.isNull() ? QString() : comCurrentMedium.GetLocation();
-
-    /* Other medium-attachments of same machine: */
-    const CMediumAttachmentVector comAttachments = comMachine.GetMediumAttachments();
-
-    /* Determine device & medium types: */
-    const UIMediumDeviceType enmMediumType = mediumTypeToLocal(comCurrentAttachment.GetType());
-    AssertMsgReturnVoid(enmMediumType != UIMediumDeviceType_Invalid, ("Incorrect storage medium type!\n"));
-
-    /* Prepare open-existing-medium action: */
-    QAction *pActionOpenExistingMedium = menu.addAction(UIIconPool::iconSet(":/select_file_16px.png"),
-                                                        QString(), pListener, pszSlotName);
-    pActionOpenExistingMedium->setData(QVariant::fromValue(UIMediumTarget(strControllerName, comCurrentAttachment.GetPort(),
-                                                                          comCurrentAttachment.GetDevice(), enmMediumType)));
-    pActionOpenExistingMedium->setText(QApplication::translate("UIMachineSettingsStorage", "Choose/Create a disk image...",
-                                                               "This is used for hard disks, optical media and floppies"));
-
-
-    /* Prepare open medium file action: */
-    QAction *pActionFileSelector = menu.addAction(UIIconPool::iconSet(":/select_file_16px.png"),
-                                                  QString(), pListener, pszSlotName);
-    pActionFileSelector->setData(QVariant::fromValue(UIMediumTarget(strControllerName, comCurrentAttachment.GetPort(),
-                                                                    comCurrentAttachment.GetDevice(), enmMediumType,
-                                                                    UIMediumTarget::UIMediumTargetType_WithFileDialog)));
-    pActionFileSelector->setText(QApplication::translate("UIMachineSettingsStorage", "Choose a disk file...",
-                                                         "This is used for selecting an existing disk file"));
-
-
-    /* Insert separator: */
-    menu.addSeparator();
-
-    /* Get existing-host-drive vector: */
-    CMediumVector comMedia;
-    switch (enmMediumType)
-    {
-        case UIMediumDeviceType_DVD:    comMedia = host().GetDVDDrives(); break;
-        case UIMediumDeviceType_Floppy: comMedia = host().GetFloppyDrives(); break;
-        default: break;
-    }
-    /* Prepare choose-existing-host-drive actions: */
-    foreach (const CMedium &comMedium, comMedia)
-    {
-        /* Make sure host-drive usage is unique: */
-        bool fIsHostDriveUsed = false;
-        foreach (const CMediumAttachment &comOtherAttachment, comAttachments)
-        {
-            if (comOtherAttachment != comCurrentAttachment)
-            {
-                const CMedium &comOtherMedium = comOtherAttachment.GetMedium();
-                if (!comOtherMedium.isNull() && comOtherMedium.GetId() == comMedium.GetId())
-                {
-                    fIsHostDriveUsed = true;
-                    break;
-                }
-            }
-        }
-        /* If host-drives usage is unique: */
-        if (!fIsHostDriveUsed)
-        {
-            QAction *pActionChooseHostDrive = menu.addAction(UIMedium(comMedium, enmMediumType).name(), pListener, pszSlotName);
-            pActionChooseHostDrive->setCheckable(true);
-            pActionChooseHostDrive->setChecked(!comCurrentMedium.isNull() && comMedium.GetId() == uCurrentID);
-            pActionChooseHostDrive->setData(QVariant::fromValue(UIMediumTarget(strControllerName,
-                                                                               comCurrentAttachment.GetPort(),
-                                                                               comCurrentAttachment.GetDevice(),
-                                                                               enmMediumType,
-                                                                               UIMediumTarget::UIMediumTargetType_WithID,
-                                                                               comMedium.GetId().toString())));
-        }
-    }
-
-    /* Get recent-medium list: */
-    QStringList recentMediumList;
-    QStringList recentMediumListUsed;
-    switch (enmMediumType)
-    {
-        case UIMediumDeviceType_HardDisk: recentMediumList = gEDataManager->recentListOfHardDrives(); break;
-        case UIMediumDeviceType_DVD:      recentMediumList = gEDataManager->recentListOfOpticalDisks(); break;
-        case UIMediumDeviceType_Floppy:   recentMediumList = gEDataManager->recentListOfFloppyDisks(); break;
-        default: break;
-    }
-    /* Prepare choose-recent-medium actions: */
-    foreach (const QString &strRecentMediumLocationBase, recentMediumList)
-    {
-        /* Confirm medium uniqueness: */
-        if (recentMediumListUsed.contains(strRecentMediumLocationBase))
-            continue;
-        /* Mark medium as known: */
-        recentMediumListUsed << strRecentMediumLocationBase;
-        /* Convert separators to native: */
-        const QString strRecentMediumLocation = QDir::toNativeSeparators(strRecentMediumLocationBase);
-        /* Confirm medium presence: */
-        if (!QFile::exists(strRecentMediumLocation))
-            continue;
-        /* Make sure recent-medium usage is unique: */
-        bool fIsRecentMediumUsed = false;
-        foreach (const CMediumAttachment &otherAttachment, comAttachments)
-        {
-            if (otherAttachment != comCurrentAttachment)
-            {
-                const CMedium &comOtherMedium = otherAttachment.GetMedium();
-                if (!comOtherMedium.isNull() && comOtherMedium.GetLocation() == strRecentMediumLocation)
-                {
-                    fIsRecentMediumUsed = true;
-                    break;
-                }
-            }
-        }
-        /* If recent-medium usage is unique: */
-        if (!fIsRecentMediumUsed)
-        {
-            QAction *pActionChooseRecentMedium = menu.addAction(QFileInfo(strRecentMediumLocation).fileName(),
-                                                                pListener, pszSlotName);
-            pActionChooseRecentMedium->setCheckable(true);
-            pActionChooseRecentMedium->setChecked(!comCurrentMedium.isNull() && strRecentMediumLocation == strCurrentLocation);
-            pActionChooseRecentMedium->setData(QVariant::fromValue(UIMediumTarget(strControllerName,
-                                                                                  comCurrentAttachment.GetPort(),
-                                                                                  comCurrentAttachment.GetDevice(),
-                                                                                  enmMediumType,
-                                                                                  UIMediumTarget::UIMediumTargetType_WithLocation,
-                                                                                  strRecentMediumLocation)));
-            pActionChooseRecentMedium->setToolTip(strRecentMediumLocation);
-        }
-    }
-
-    /* Last action for optical/floppy attachments only: */
-    if (enmMediumType == UIMediumDeviceType_DVD || enmMediumType == UIMediumDeviceType_Floppy)
-    {
-        /* Insert separator: */
-        menu.addSeparator();
-
-        /* Prepare unmount-current-medium action: */
-        QAction *pActionUnmountMedium = menu.addAction(QString(), pListener, pszSlotName);
-        pActionUnmountMedium->setEnabled(!comCurrentMedium.isNull());
-        pActionUnmountMedium->setData(QVariant::fromValue(UIMediumTarget(strControllerName, comCurrentAttachment.GetPort(),
-                                                                         comCurrentAttachment.GetDevice())));
-        pActionUnmountMedium->setText(QApplication::translate("UIMachineSettingsStorage", "Remove disk from virtual drive"));
-        if (enmMediumType == UIMediumDeviceType_DVD)
-            pActionUnmountMedium->setIcon(UIIconPool::iconSet(":/cd_unmount_16px.png", ":/cd_unmount_disabled_16px.png"));
-        else if (enmMediumType == UIMediumDeviceType_Floppy)
-            pActionUnmountMedium->setIcon(UIIconPool::iconSet(":/fd_unmount_16px.png", ":/fd_unmount_disabled_16px.png"));
-    }
-}
-
-void VBoxGlobal::updateMachineStorage(const CMachine &comConstMachine, const UIMediumTarget &target)
-{
-    /* Mount (by default): */
-    bool fMount = true;
-    /* Null medium (by default): */
-    CMedium comMedium;
-    /* With null ID (by default): */
-    QUuid uActualID;
-
-    /* Current mount-target attributes: */
-    const CStorageController comCurrentController = comConstMachine.GetStorageControllerByName(target.name);
-    const KStorageBus enmCurrentStorageBus = comCurrentController.GetBus();
-    const CMediumAttachment comCurrentAttachment = comConstMachine.GetMediumAttachment(target.name, target.port, target.device);
-    const CMedium comCurrentMedium = comCurrentAttachment.GetMedium();
-    const QUuid uCurrentID = comCurrentMedium.isNull() ? QUuid() : comCurrentMedium.GetId();
-    const QString strCurrentLocation = comCurrentMedium.isNull() ? QString() : comCurrentMedium.GetLocation();
-
-    /* Which additional info do we have? */
-    switch (target.type)
-    {
-        /* Do we have an exact ID or do we let the user open a medium? */
-        case UIMediumTarget::UIMediumTargetType_WithID:
-        case UIMediumTarget::UIMediumTargetType_WithFileDialog:
-        case UIMediumTarget::UIMediumTargetType_CreateAdHocVISO:
-        case UIMediumTarget::UIMediumTargetType_CreateFloppyDisk:
-        {
-            /* New mount-target attributes: */
-            QUuid uNewID;
-
-            /* Invoke file-open dialog to choose medium ID: */
-            if (target.mediumType != UIMediumDeviceType_Invalid && target.data.isNull())
-            {
-                /* Keyboard can be captured by machine-view.
-                 * So we should clear machine-view focus to let file-open dialog get it.
-                 * That way the keyboard will be released too.. */
-                QWidget *pLastFocusedWidget = 0;
-                if (QApplication::focusWidget())
-                {
-                    pLastFocusedWidget = QApplication::focusWidget();
-                    pLastFocusedWidget->clearFocus();
-                }
-                /* Call for file-open dialog: */
-                const QString strMachineFolder(QFileInfo(comConstMachine.GetSettingsFilePath()).absolutePath());
-                QUuid uMediumID;
-                if (target.type == UIMediumTarget::UIMediumTargetType_WithID)
-                {
-                    int iDialogReturn = openMediumSelectorDialog(windowManager().mainWindowShown(), target.mediumType, uMediumID,
-                                                                 strMachineFolder, comConstMachine.GetName(),
-                                                                 comConstMachine.GetOSTypeId(), true /*fEnableCreate */);
-                    if (iDialogReturn == UIMediumSelector::ReturnCode_LeftEmpty &&
-                        (target.mediumType == UIMediumDeviceType_DVD || target.mediumType == UIMediumDeviceType_Floppy))
-                        fMount = false;
-                }
-                else if (target.type == UIMediumTarget::UIMediumTargetType_WithFileDialog)
-                {
-                    uMediumID = openMediumWithFileOpenDialog(target.mediumType, windowManager().mainWindowShown(),
-                                                             strMachineFolder, false /* fUseLastFolder */);
-                }
-                else if(target.type == UIMediumTarget::UIMediumTargetType_CreateAdHocVISO)
-                    uMediumID = createVisoMediumWithVisoCreator(windowManager().mainWindowShown(), strMachineFolder, comConstMachine.GetName());
-
-                else if(target.type == UIMediumTarget::UIMediumTargetType_CreateFloppyDisk)
-                    uMediumID = showCreateFloppyDiskDialog(windowManager().mainWindowShown(), strMachineFolder, comConstMachine.GetName());
-
-                /* Return focus back: */
-                if (pLastFocusedWidget)
-                    pLastFocusedWidget->setFocus();
-                /* Accept new medium ID: */
-                if (!uMediumID.isNull())
-                    uNewID = uMediumID;
-                else
-                    /* Else just exit in case left empty is not chosen in medium selector dialog: */
-                    if (fMount)
-                        return;
-            }
-            /* Use medium ID which was passed: */
-            else if (!target.data.isNull() && target.data != uCurrentID.toString())
-                uNewID = target.data;
-
-            /* Should we mount or unmount? */
-            fMount = !uNewID.isNull();
-
-            /* Prepare target medium: */
-            const UIMedium guiMedium = medium(uNewID);
-            comMedium = guiMedium.medium();
-            uActualID = fMount ? uNewID : uCurrentID;
-            break;
-        }
-        /* Do we have a recent location? */
-        case UIMediumTarget::UIMediumTargetType_WithLocation:
-        {
-            /* Open medium by location and get new medium ID if any: */
-            const QUuid uNewID = openMedium(target.mediumType, target.data);
-            /* Else just exit: */
-            if (uNewID.isNull())
-                return;
-
-            /* Should we mount or unmount? */
-            fMount = uNewID != uCurrentID;
-
-            /* Prepare target medium: */
-            const UIMedium guiMedium = fMount ? medium(uNewID) : UIMedium();
-            comMedium = fMount ? guiMedium.medium() : CMedium();
-            uActualID = fMount ? uNewID : uCurrentID;
-            break;
-        }
-    }
-
-    /* Do not unmount hard-drives: */
-    if (target.mediumType == UIMediumDeviceType_HardDisk && !fMount)
-        return;
-
-    /* Get editable machine: */
-    CSession comSession;
-    CMachine comMachine = comConstMachine;
-    KSessionState enmSessionState = comMachine.GetSessionState();
-    /* Session state unlocked? */
-    if (enmSessionState == KSessionState_Unlocked)
-    {
-        /* Open own 'write' session: */
-        comSession = openSession(comMachine.GetId());
-        AssertReturnVoid(!comSession.isNull());
-        comMachine = comSession.GetMachine();
-    }
-    /* Is this a Selector UI call? */
-    else if (uiType() == UIType_SelectorUI)
-    {
-        /* Open existing 'shared' session: */
-        comSession = openExistingSession(comMachine.GetId());
-        AssertReturnVoid(!comSession.isNull());
-        comMachine = comSession.GetMachine();
-    }
-    /* Else this is Runtime UI call
-     * which has session locked for itself. */
-
-    /* Remount medium to the predefined port/device: */
-    bool fWasMounted = false;
-    /* Hard drive case: */
-    if (target.mediumType == UIMediumDeviceType_HardDisk)
-    {
-        /* Detaching: */
-        comMachine.DetachDevice(target.name, target.port, target.device);
-        fWasMounted = comMachine.isOk();
-        if (!fWasMounted)
-            msgCenter().cannotDetachDevice(comMachine, UIMediumDeviceType_HardDisk, strCurrentLocation,
-                                           StorageSlot(enmCurrentStorageBus, target.port, target.device));
-        else
-        {
-            /* Attaching: */
-            comMachine.AttachDevice(target.name, target.port, target.device, KDeviceType_HardDisk, comMedium);
-            fWasMounted = comMachine.isOk();
-            if (!fWasMounted)
-                msgCenter().cannotAttachDevice(comMachine, UIMediumDeviceType_HardDisk, strCurrentLocation,
-                                               StorageSlot(enmCurrentStorageBus, target.port, target.device));
-        }
-    }
-    /* Optical/floppy drive case: */
-    else
-    {
-        /* Remounting: */
-        comMachine.MountMedium(target.name, target.port, target.device, comMedium, false /* force? */);
-        fWasMounted = comMachine.isOk();
-        if (!fWasMounted)
-        {
-            /* Ask for force remounting: */
-            if (msgCenter().cannotRemountMedium(comMachine, medium(uActualID),
-                                                fMount, true /* retry? */))
-            {
-                /* Force remounting: */
-                comMachine.MountMedium(target.name, target.port, target.device, comMedium, true /* force? */);
-                fWasMounted = comMachine.isOk();
-                if (!fWasMounted)
-                    msgCenter().cannotRemountMedium(comMachine, medium(uActualID),
-                                                    fMount, false /* retry? */);
-            }
-        }
-        /* If mounting was successful: */
-        if (fWasMounted)
-        {
-            /* Disable First RUN Wizard: */
-            if (gEDataManager->machineFirstTimeStarted(comMachine.GetId()))
-                gEDataManager->setMachineFirstTimeStarted(false, comMachine.GetId());
-        }
-    }
-
-    /* Save settings: */
-    if (fWasMounted)
-    {
-        comMachine.SaveSettings();
-        if (!comMachine.isOk())
-            msgCenter().cannotSaveMachineSettings(comMachine, windowManager().mainWindowShown());
-    }
-
-    /* Close session to editable comMachine if necessary: */
-    if (!comSession.isNull())
-        comSession.UnlockMachine();
-}
-
-QString VBoxGlobal::details(const CMedium &comMedium, bool fPredictDiff, bool fUseHtml /* = true */)
-{
-    /* Search for corresponding UI medium: */
-    const QUuid uMediumID = comMedium.isNull() ? UIMedium::nullID() : comMedium.GetId();
-    UIMedium guiMedium = medium(uMediumID);
-    if (!comMedium.isNull() && guiMedium.isNull())
-    {
-        /* UI medium may be new and not among our media, request enumeration: */
-        enumerateAdditionalMedium(comMedium);
-
-        /* Search for corresponding UI medium again: */
-        guiMedium = medium(uMediumID);
-        if (guiMedium.isNull())
-        {
-            /* Medium might be deleted already, return null string: */
-            return QString();
-        }
-    }
-
-    /* Return UI medium details: */
-    return fUseHtml ? guiMedium.detailsHTML(true /* no diffs? */, fPredictDiff) :
-                      guiMedium.details(true /* no diffs? */, fPredictDiff);
-}
-
-void VBoxGlobal::updateRecentlyUsedMediumListAndFolder(UIMediumDeviceType enmMediumType, QString strMediumLocation)
-{
-    /** Don't add the medium to extra data if its name is in exclude list, m_recentMediaExcludeList: */
-    foreach (QString strExcludeName, m_recentMediaExcludeList)
-    {
-        if (strMediumLocation.contains(strExcludeName))
-            return;
-    }
-
-    /* Remember the path of the last chosen medium: */
-    switch (enmMediumType)
-    {
-        case UIMediumDeviceType_HardDisk: gEDataManager->setRecentFolderForHardDrives(QFileInfo(strMediumLocation).absolutePath()); break;
-        case UIMediumDeviceType_DVD:      gEDataManager->setRecentFolderForOpticalDisks(QFileInfo(strMediumLocation).absolutePath()); break;
-        case UIMediumDeviceType_Floppy:   gEDataManager->setRecentFolderForFloppyDisks(QFileInfo(strMediumLocation).absolutePath()); break;
-        default: break;
-    }
-
-    /* Update recently used list: */
-    QStringList recentMediumList;
-    switch (enmMediumType)
-    {
-        case UIMediumDeviceType_HardDisk: recentMediumList = gEDataManager->recentListOfHardDrives(); break;
-        case UIMediumDeviceType_DVD:      recentMediumList = gEDataManager->recentListOfOpticalDisks(); break;
-        case UIMediumDeviceType_Floppy:   recentMediumList = gEDataManager->recentListOfFloppyDisks(); break;
-        default: break;
-    }
-    if (recentMediumList.contains(strMediumLocation))
-        recentMediumList.removeAll(strMediumLocation);
-    recentMediumList.prepend(strMediumLocation);
-    while(recentMediumList.size() > 5)
-        recentMediumList.removeLast();
-    switch (enmMediumType)
-    {
-        case UIMediumDeviceType_HardDisk: gEDataManager->setRecentListOfHardDrives(recentMediumList); break;
-        case UIMediumDeviceType_DVD:      gEDataManager->setRecentListOfOpticalDisks(recentMediumList); break;
-        case UIMediumDeviceType_Floppy:   gEDataManager->setRecentListOfFloppyDisks(recentMediumList); break;
-        default: break;
-    }
-}
-
-QString VBoxGlobal::defaultFolderPathForType(UIMediumDeviceType enmMediumType)
-{
-    QString strLastFolder;
-    switch (enmMediumType)
-    {
-        case UIMediumDeviceType_HardDisk:
-            strLastFolder = gEDataManager->recentFolderForHardDrives();
-            if (strLastFolder.isEmpty())
-                strLastFolder = gEDataManager->recentFolderForOpticalDisks();
-            if (strLastFolder.isEmpty())
-                strLastFolder = gEDataManager->recentFolderForFloppyDisks();
-            break;
-        case UIMediumDeviceType_DVD:
-            strLastFolder = gEDataManager->recentFolderForOpticalDisks();
-            if (strLastFolder.isEmpty())
-                strLastFolder = gEDataManager->recentFolderForFloppyDisks();
-            if (strLastFolder.isEmpty())
-                strLastFolder = gEDataManager->recentFolderForHardDrives();
-            break;
-        case UIMediumDeviceType_Floppy:
-            strLastFolder = gEDataManager->recentFolderForFloppyDisks();
-            if (strLastFolder.isEmpty())
-                strLastFolder = gEDataManager->recentFolderForOpticalDisks();
-            if (strLastFolder.isEmpty())
-                strLastFolder = gEDataManager->recentFolderForHardDrives();
-            break;
-        default:
-            break;
-    }
-
-    if (strLastFolder.isEmpty())
-        return virtualBox().GetSystemProperties().GetDefaultMachineFolder();
-
-    return strLastFolder;
-}
-
-#ifdef RT_OS_LINUX
-/* static */
-void VBoxGlobal::checkForWrongUSBMounted()
-{
-    /* Make sure '/proc/mounts' exists and can be opened: */
-    QFile file("/proc/mounts");
-    if (!file.exists() || !file.open(QIODevice::ReadOnly | QIODevice::Text))
-        return;
-
-    /* Fetch contents: */
-    QStringList contents;
-    for (;;)
-    {
-        QByteArray line = file.readLine();
-        if (line.isEmpty())
-            break;
-        contents << line;
-    }
-    /* Grep contents for usbfs presence: */
-    QStringList grep1(contents.filter("/sys/bus/usb/drivers"));
-    QStringList grep2(grep1.filter("usbfs"));
-    if (grep2.isEmpty())
-        return;
-
-    /* Show corresponding warning: */
-    msgCenter().warnAboutWrongUSBMounted();
-}
-#endif /* RT_OS_LINUX */
-
-/* static */
-QString VBoxGlobal::details(const CUSBDevice &comDevice)
-{
-    QString strDetails;
-    if (comDevice.isNull())
-        strDetails = tr("Unknown device", "USB device details");
-    else
-    {
-        QVector<QString> devInfoVector = comDevice.GetDeviceInfo();
-        QString strManufacturer;
-        QString strProduct;
-
-        if (devInfoVector.size() >= 1)
-            strManufacturer = devInfoVector[0].trimmed();
-        if (devInfoVector.size() >= 2)
-            strProduct = devInfoVector[1].trimmed();
-
-        if (strManufacturer.isEmpty() && strProduct.isEmpty())
-        {
-            strDetails =
-                tr("Unknown device %1:%2", "USB device details")
-                   .arg(QString().sprintf("%04hX", comDevice.GetVendorId()))
-                   .arg(QString().sprintf("%04hX", comDevice.GetProductId()));
-        }
-        else
-        {
-            if (strProduct.toUpper().startsWith(strManufacturer.toUpper()))
-                strDetails = strProduct;
-            else
-                strDetails = strManufacturer + " " + strProduct;
-        }
-        ushort iRev = comDevice.GetRevision();
-        if (iRev != 0)
-            strDetails += QString().sprintf(" [%04hX]", iRev);
-    }
-
-    return strDetails.trimmed();
-}
-
-/* static */
-QString VBoxGlobal::toolTip(const CUSBDevice &comDevice)
-{
-    QString strTip =
-        tr("<nobr>Vendor ID: %1</nobr><br>"
-           "<nobr>Product ID: %2</nobr><br>"
-           "<nobr>Revision: %3</nobr>", "USB device tooltip")
-           .arg(QString().sprintf("%04hX", comDevice.GetVendorId()))
-           .arg(QString().sprintf("%04hX", comDevice.GetProductId()))
-           .arg(QString().sprintf("%04hX", comDevice.GetRevision()));
-
-    const QString strSerial = comDevice.GetSerialNumber();
-    if (!strSerial.isEmpty())
-        strTip += QString(tr("<br><nobr>Serial No. %1</nobr>", "USB device tooltip"))
-                             .arg(strSerial);
-
-    /* Add the state field if it's a host USB device: */
-    CHostUSBDevice hostDev(comDevice);
-    if (!hostDev.isNull())
-    {
-        strTip += QString(tr("<br><nobr>State: %1</nobr>", "USB device tooltip"))
-                             .arg(gpConverter->toString(hostDev.GetState()));
-    }
-
-    return strTip;
-}
-
-/* static */
-QString VBoxGlobal::toolTip(const CUSBDeviceFilter &comFilter)
-{
-    QString strTip;
-
-    const QString strVendorId = comFilter.GetVendorId();
-    if (!strVendorId.isEmpty())
-        strTip += tr("<nobr>Vendor ID: %1</nobr>", "USB filter tooltip")
-                     .arg(strVendorId);
-
-    const QString strProductId = comFilter.GetProductId();
-    if (!strProductId.isEmpty())
-        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>Product ID: %2</nobr>", "USB filter tooltip")
-                                                     .arg(strProductId);
-
-    const QString strRevision = comFilter.GetRevision();
-    if (!strRevision.isEmpty())
-        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>Revision: %3</nobr>", "USB filter tooltip")
-                                                     .arg(strRevision);
-
-    const QString strProduct = comFilter.GetProduct();
-    if (!strProduct.isEmpty())
-        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>Product: %4</nobr>", "USB filter tooltip")
-                                                     .arg(strProduct);
-
-    const QString strManufacturer = comFilter.GetManufacturer();
-    if (!strManufacturer.isEmpty())
-        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>Manufacturer: %5</nobr>", "USB filter tooltip")
-                                                     .arg(strManufacturer);
-
-    const QString strSerial = comFilter.GetSerialNumber();
-    if (!strSerial.isEmpty())
-        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>Serial No.: %1</nobr>", "USB filter tooltip")
-                                                     .arg(strSerial);
-
-    const QString strPort = comFilter.GetPort();
-    if (!strPort.isEmpty())
-        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>Port: %1</nobr>", "USB filter tooltip")
-                                                     .arg(strPort);
-
-    /* Add the state field if it's a host USB device: */
-    CHostUSBDevice hostDev(comFilter);
-    if (!hostDev.isNull())
-    {
-        strTip += strTip.isEmpty() ? "":"<br/>" + tr("<nobr>State: %1</nobr>", "USB filter tooltip")
-                                                     .arg(gpConverter->toString(hostDev.GetState()));
-    }
-
-    return strTip;
-}
-
-/* static */
-QString VBoxGlobal::toolTip(const CHostVideoInputDevice &comWebcam)
-{
-    QStringList records;
-
-    const QString strName = comWebcam.GetName();
-    if (!strName.isEmpty())
-        records << strName;
-
-    const QString strPath = comWebcam.GetPath();
-    if (!strPath.isEmpty())
-        records << strPath;
-
-    return records.join("<br>");
-}
-
-/* static */
-void VBoxGlobal::doExtPackInstallation(QString const &strFilePath, QString const &strDigest,
-                                       QWidget *pParent, QString *pstrExtPackName) const
-{
-    /* Open the extpack tarball via IExtPackManager: */
-    CExtPackManager comManager = virtualBox().GetExtensionPackManager();
-    CExtPackFile comExtPackFile;
-    if (strDigest.isEmpty())
-        comExtPackFile = comManager.OpenExtPackFile(strFilePath);
-    else
-    {
-        QString strFileAndHash = QString("%1::SHA-256=%2").arg(strFilePath).arg(strDigest);
-        comExtPackFile = comManager.OpenExtPackFile(strFileAndHash);
-    }
-    if (!comManager.isOk())
-    {
-        msgCenter().cannotOpenExtPack(strFilePath, comManager, pParent);
-        return;
-    }
-
-    if (!comExtPackFile.GetUsable())
-    {
-        msgCenter().warnAboutBadExtPackFile(strFilePath, comExtPackFile, pParent);
-        return;
-    }
-
-    const QString strPackName = comExtPackFile.GetName();
-    const QString strPackDescription = comExtPackFile.GetDescription();
-    const QString strPackVersion = QString("%1r%2%3").arg(comExtPackFile.GetVersion()).arg(comExtPackFile.GetRevision()).arg(comExtPackFile.GetEdition());
-
-    /* Check if there is a version of the extension pack already
-     * installed on the system and let the user decide what to do about it. */
-    CExtPack comExtPackCur = comManager.Find(strPackName);
-    bool fReplaceIt = comExtPackCur.isOk();
-    if (fReplaceIt)
-    {
-        QString strPackVersionCur = QString("%1r%2%3").arg(comExtPackCur.GetVersion()).arg(comExtPackCur.GetRevision()).arg(comExtPackCur.GetEdition());
-        if (!msgCenter().confirmReplaceExtensionPack(strPackName, strPackVersion, strPackVersionCur, strPackDescription, pParent))
-            return;
-    }
-    /* If it's a new package just ask for general confirmation. */
-    else
-    {
-        if (!msgCenter().confirmInstallExtensionPack(strPackName, strPackVersion, strPackDescription, pParent))
-            return;
-    }
-
-    /* Display the license dialog if required by the extension pack. */
-    if (comExtPackFile.GetShowLicense())
-    {
-        QString strLicense = comExtPackFile.GetLicense();
-        VBoxLicenseViewer licenseViewer(pParent);
-        if (licenseViewer.showLicenseFromString(strLicense) != QDialog::Accepted)
-            return;
-    }
-
-    /* Install the selected package.
-     * Set the package name return value before doing
-     * this as the caller should do a refresh even on failure. */
-    QString strDisplayInfo;
-#ifdef VBOX_WS_WIN
-    if (pParent)
-        strDisplayInfo.sprintf("hwnd=%#llx", (uint64_t)(uintptr_t)pParent->winId());
-#endif
-    /* Prepare installation progress: */
-    CProgress comProgress = comExtPackFile.Install(fReplaceIt, strDisplayInfo);
-    if (comExtPackFile.isOk())
-    {
-        /* Show installation progress: */
-        /** @todo move this tr into UIUpdateManager context */
-        msgCenter().showModalProgressDialog(comProgress, QApplication::translate("UIGlobalSettingsExtension",
-                                                                              "Extensions"),
-                                            ":/progress_install_guest_additions_90px.png", pParent);
-        if (!comProgress.GetCanceled())
-        {
-            if (comProgress.isOk() && comProgress.GetResultCode() == 0)
-                msgCenter().warnAboutExtPackInstalled(strPackName, pParent);
-            else
-                msgCenter().cannotInstallExtPack(comProgress, strFilePath, pParent);
-        }
-    }
-    else
-        msgCenter().cannotInstallExtPack(comExtPackFile, strFilePath, pParent);
-
-    if (pstrExtPackName)
-        *pstrExtPackName = strPackName;
-}
-
-bool VBoxGlobal::is3DAvailableWorker() const
-{
-    /* Rational is that when starting a text mode guest (like DOS) that does not
-     * have 3D enabled, don't wast the developer's or user's time on launching the
-     * test application when starting the VM or editing it's settings.
-     *
-     * Keep in mind that if we ever end up checking this concurrently on multiple threads,
-     * use a RTONCE construct to serialize the efforts. */
-
-#ifdef VBOX_WITH_CROGL
-    bool fSupported = VBoxOglIs3DAccelerationSupported();
-#else
-    bool fSupported = false;
-#endif
-    m_i3DAvailable = fSupported;
-    return fSupported;
-}
-
-bool VBoxGlobal::is3DAvailable() const
-{
-    if (m_i3DAvailable < 0)
-        return is3DAvailableWorker();
-    return m_i3DAvailable != 0;
-}
-
-#ifdef VBOX_WITH_CRHGSMI
-/* static */
-bool VBoxGlobal::isWddmCompatibleOsType(const QString &strGuestOSTypeId)
-{
-    return    strGuestOSTypeId.startsWith("WindowsVista")
-           || strGuestOSTypeId.startsWith("Windows7")
-           || strGuestOSTypeId.startsWith("Windows8")
-           || strGuestOSTypeId.startsWith("Windows81")
-           || strGuestOSTypeId.startsWith("Windows10")
-           || strGuestOSTypeId.startsWith("Windows2008")
-           || strGuestOSTypeId.startsWith("Windows2012");
-}
-#endif /* VBOX_WITH_CRHGSMI */
-
-/* static */
-quint64 VBoxGlobal::requiredVideoMemory(const QString &strGuestOSTypeId, int cMonitors /* = 1 */)
-{
-    /* We create a list of the size of all available host monitors. This list
-     * is sorted by value and by starting with the biggest one, we calculate
-     * the memory requirements for every guest screen. This is of course not
-     * correct, but as we can't predict on which host screens the user will
-     * open the guest windows, this is the best assumption we can do, cause it
-     * is the worst case. */
-    const int cHostScreens = gpDesktop->screenCount();
-    QVector<int> screenSize(qMax(cMonitors, cHostScreens), 0);
-    for (int i = 0; i < cHostScreens; ++i)
-    {
-        QRect r = gpDesktop->screenGeometry(i);
-        screenSize[i] = r.width() * r.height();
-    }
-    /* Now sort the vector: */
-    qSort(screenSize.begin(), screenSize.end(), qGreater<int>());
-    /* For the case that there are more guest screens configured then host
-     * screens available, replace all zeros with the greatest value in the
-     * vector. */
-    for (int i = 0; i < screenSize.size(); ++i)
-        if (screenSize.at(i) == 0)
-            screenSize.replace(i, screenSize.at(0));
-
-    quint64 uNeedBits = 0;
-    for (int i = 0; i < cMonitors; ++i)
-    {
-        /* Calculate summary required memory amount in bits: */
-        uNeedBits += (screenSize.at(i) * /* with x height */
-                     32 + /* we will take the maximum possible bpp for now */
-                     8 * _1M) + /* current cache per screen - may be changed in future */
-                     8 * 4096; /* adapter info */
-    }
-    /* Translate value into megabytes with rounding to highest side: */
-    quint64 uNeedMBytes = uNeedBits % (8 * _1M)
-                        ? uNeedBits / (8 * _1M) + 1
-                        : uNeedBits / (8 * _1M) /* convert to megabytes */;
-
-    if (strGuestOSTypeId.startsWith("Windows"))
-    {
-        /* Windows guests need offscreen VRAM too for graphics acceleration features: */
-#ifdef VBOX_WITH_CRHGSMI
-        if (isWddmCompatibleOsType(strGuestOSTypeId))
-        {
-            /* WDDM mode, there are two surfaces for each screen: shadow & primary: */
-            uNeedMBytes *= 3;
-        }
-        else
-#endif /* VBOX_WITH_CRHGSMI */
-        {
-            uNeedMBytes *= 2;
-        }
-    }
-
-    return uNeedMBytes * _1M;
-}
-
-QIcon VBoxGlobal::vmUserIcon(const CMachine &comMachine) const
-{
-    /* Prepare fallback icon: */
-    static QIcon nullIcon;
-
-    /* Make sure general icon-pool initialized: */
-    AssertReturn(m_pIconPool, nullIcon);
-
-    /* Redirect to general icon-pool: */
-    return m_pIconPool->userMachineIcon(comMachine);
-}
-
-QPixmap VBoxGlobal::vmUserPixmap(const CMachine &comMachine, const QSize &size) const
-{
-    /* Prepare fallback pixmap: */
-    static QPixmap nullPixmap;
-
-    /* Make sure general icon-pool initialized: */
-    AssertReturn(m_pIconPool, nullPixmap);
-
-    /* Redirect to general icon-pool: */
-    return m_pIconPool->userMachinePixmap(comMachine, size);
-}
-
-QPixmap VBoxGlobal::vmUserPixmapDefault(const CMachine &comMachine, QSize *pLogicalSize /* = 0 */) const
-{
-    /* Prepare fallback pixmap: */
-    static QPixmap nullPixmap;
-
-    /* Make sure general icon-pool initialized: */
-    AssertReturn(m_pIconPool, nullPixmap);
-
-    /* Redirect to general icon-pool: */
-    return m_pIconPool->userMachinePixmapDefault(comMachine, pLogicalSize);
-}
-
-QIcon VBoxGlobal::vmGuestOSTypeIcon(const QString &strOSTypeID) const
-{
-    /* Prepare fallback icon: */
-    static QIcon nullIcon;
-
-    /* Make sure general icon-pool initialized: */
-    AssertReturn(m_pIconPool, nullIcon);
-
-    /* Redirect to general icon-pool: */
-    return m_pIconPool->guestOSTypeIcon(strOSTypeID);
-}
-
-QPixmap VBoxGlobal::vmGuestOSTypePixmap(const QString &strOSTypeID, const QSize &size) const
-{
-    /* Prepare fallback pixmap: */
-    static QPixmap nullPixmap;
-
-    /* Make sure general icon-pool initialized: */
-    AssertReturn(m_pIconPool, nullPixmap);
-
-    /* Redirect to general icon-pool: */
-    return m_pIconPool->guestOSTypePixmap(strOSTypeID, size);
-}
-
-QPixmap VBoxGlobal::vmGuestOSTypePixmapDefault(const QString &strOSTypeID, QSize *pLogicalSize /* = 0 */) const
-{
-    /* Prepare fallback pixmap: */
-    static QPixmap nullPixmap;
-
-    /* Make sure general icon-pool initialized: */
-    AssertReturn(m_pIconPool, nullPixmap);
-
-    /* Redirect to general icon-pool: */
-    return m_pIconPool->guestOSTypePixmapDefault(strOSTypeID, pLogicalSize);
-}
-
-/* static */
-QPixmap VBoxGlobal::joinPixmaps(const QPixmap &pixmap1, const QPixmap &pixmap2)
-{
-    if (pixmap1.isNull())
-        return pixmap2;
-    if (pixmap2.isNull())
-        return pixmap1;
-
-    QPixmap result(pixmap1.width() + pixmap2.width() + 2,
-                   qMax(pixmap1.height(), pixmap2.height()));
-    result.fill(Qt::transparent);
-
-    QPainter painter(&result);
-    painter.drawPixmap(0, 0, pixmap1);
-    painter.drawPixmap(pixmap1.width() + 2, result.height() - pixmap2.height(), pixmap2);
-    painter.end();
-
-    return result;
-}
-
-bool VBoxGlobal::openURL(const QString &strUrl) const
-{
-    /** Service event. */
-    class ServiceEvent : public QEvent
-    {
-    public:
-
-        /** Constructs service event on th basis of passed @a fResult. */
-        ServiceEvent(bool fResult)
-            : QEvent(QEvent::User)
-            , m_fResult(fResult)
-        {}
-
-        /** Returns the result which event brings. */
-        bool result() const { return m_fResult; }
-
-    private:
-
-        /** Holds the result which event brings. */
-        bool m_fResult;
-    };
-
-    /** Service client object. */
-    class ServiceClient : public QEventLoop
-    {
-    public:
-
-        /** Constructs service client on the basis of passed @a fResult. */
-        ServiceClient()
-            : m_fResult(false)
-        {}
-
-        /** Returns the result which event brings. */
-        bool result() const { return m_fResult; }
-
-    private:
-
-        /** Handles any Qt @a pEvent. */
-        bool event(QEvent *pEvent)
-        {
-            /* Handle service event: */
-            if (pEvent->type() == QEvent::User)
-            {
-                ServiceEvent *pServiceEvent = static_cast<ServiceEvent*>(pEvent);
-                m_fResult = pServiceEvent->result();
-                pServiceEvent->accept();
-                quit();
-                return true;
-            }
-            return false;
-        }
-
-        bool m_fResult;
-    };
-
-    /** Service server object. */
-    class ServiceServer : public QThread
-    {
-    public:
-
-        /** Constructs service server on the basis of passed @a client and @a strUrl. */
-        ServiceServer(ServiceClient &client, const QString &strUrl)
-            : m_client(client), m_strUrl(strUrl) {}
-
-    private:
-
-        /** Executes thread task. */
-        void run()
-        {
-            QApplication::postEvent(&m_client, new ServiceEvent(QDesktopServices::openUrl(m_strUrl)));
-        }
-
-        /** Holds the client reference. */
-        ServiceClient &m_client;
-        /** Holds the URL to be processed. */
-        const QString &m_strUrl;
-    };
-
-    /* Create client & server: */
-    ServiceClient client;
-    ServiceServer server(client, strUrl);
-    server.start();
-    client.exec();
-    server.wait();
-
-    /* Acquire client result: */
-    bool fResult = client.result();
-
-    if (!fResult)
-        msgCenter().cannotOpenURL(strUrl);
-
-    return fResult;
-}
-
-void VBoxGlobal::sltGUILanguageChange(QString strLanguage)
-{
-    /* Make sure medium-enumeration is not in progress! */
-    AssertReturnVoid(!isMediumEnumerationInProgress());
-    /* Load passed language: */
-    loadLanguage(strLanguage);
-}
-
-bool VBoxGlobal::eventFilter(QObject *pObject, QEvent *pEvent)
-{
-    /** @todo Just use the QIWithRetranslateUI3 template wrapper. */
-
-    if (   pEvent->type() == QEvent::LanguageChange
-        && pObject->isWidgetType()
-        && static_cast<QWidget*>(pObject)->isTopLevel())
-    {
-        /* Catch the language change event before any other widget gets it in
-         * order to invalidate cached string resources (like the details view
-         * templates) that may be used by other widgets. */
-        QWidgetList list = QApplication::topLevelWidgets();
-        if (list.first() == pObject)
-        {
-            /* Call this only once per every language change (see
-             * QApplication::installTranslator() for details): */
-            retranslateUi();
-        }
-    }
-
-    /* Call to base-class: */
-    return QObject::eventFilter(pObject, pEvent);
-}
-
-void VBoxGlobal::retranslateUi()
-{
-    s_strUserDefinedPortName = tr("User-defined", "serial port");
-
-    m_pixWarning = UIIconPool::defaultIcon(UIIconPool::UIDefaultIconType_MessageBoxWarning).pixmap(16, 16);
-    Assert(!m_pixWarning.isNull());
-
-    m_pixError = UIIconPool::defaultIcon(UIIconPool::UIDefaultIconType_MessageBoxCritical).pixmap(16, 16);
-    Assert(!m_pixError.isNull());
-
-    /* Re-enumerate uimedium since they contain some translations too: */
-    if (m_fValid)
-        refreshMedia();
-
-#ifdef VBOX_WS_X11
-    // WORKAROUND:
-    // As X11 do not have functionality for providing human readable key names,
-    // we keep a table of them, which must be updated when the language is changed.
-    UINativeHotKey::retranslateKeyNames();
-#endif
-}
-
-void VBoxGlobal::prepare()
-{
-    /* Make sure QApplication cleanup us on exit: */
-    connect(qApp, &QGuiApplication::aboutToQuit, this, &VBoxGlobal::cleanup);
-    /* Make sure we handle host OS session shutdown as well: */
-    connect(qApp, &QGuiApplication::commitDataRequest,
-            this, &VBoxGlobal::sltHandleCommitDataRequest);
-
-#ifdef VBOX_WS_MAC
-    /* Determine OS release early: */
-    m_enmMacOSVersion = determineOsRelease();
-#endif /* VBOX_WS_MAC */
-
-    /* Prepare converter: */
-    UIConverter::prepare();
-
-    /* Create desktop-widget watchdog: */
-    UIDesktopWidgetWatchdog::create();
-
-    /* Create message-center: */
-    UIMessageCenter::create();
-    /* Create popup-center: */
-    UIPopupCenter::create();
-
-    /* Prepare general icon-pool: */
-    m_pIconPool = new UIIconPoolGeneral;
-
-    /* Load translation based on the current locale: */
-    loadLanguage();
-
-    HRESULT rc = COMBase::InitializeCOM(true);
-    if (FAILED(rc))
-    {
-#ifdef VBOX_WITH_XPCOM
-        if (rc == NS_ERROR_FILE_ACCESS_DENIED)
-        {
-            char szHome[RTPATH_MAX] = "";
-            com::GetVBoxUserHomeDirectory(szHome, sizeof(szHome));
-            msgCenter().cannotInitUserHome(QString(szHome));
-        }
-        else
-#endif
-            msgCenter().cannotInitCOM(rc);
-        return;
-    }
-
-#ifdef VBOX_WITH_SDS
-    // setup Client COM Security to enable impersonation required by VBOX_SDS
-    HRESULT hrGUICoInitializeSecurity = CoInitializeSecurity(NULL,
-                                                             -1,
-                                                             NULL,
-                                                             NULL,
-                                                             RPC_C_AUTHN_LEVEL_DEFAULT,
-                                                             RPC_C_IMP_LEVEL_IMPERSONATE,
-                                                             NULL,
-                                                             EOAC_NONE,
-                                                             NULL);
-    NOREF(hrGUICoInitializeSecurity);
-    Assert(RPC_E_TOO_LATE != hrGUICoInitializeSecurity);
-    Assert(hrGUICoInitializeSecurity == S_OK);
-#endif
-
-    /* Make sure VirtualBoxClient instance created: */
-    m_comVBoxClient.createInstance(CLSID_VirtualBoxClient);
-    if (!m_comVBoxClient.isOk())
-    {
-        msgCenter().cannotCreateVirtualBoxClient(m_comVBoxClient);
-        return;
-    }
-    /* Make sure VirtualBox instance acquired: */
-    m_comVBox = m_comVBoxClient.GetVirtualBox();
-    if (!m_comVBoxClient.isOk())
-    {
-        msgCenter().cannotAcquireVirtualBox(m_comVBoxClient);
-        return;
-    }
-    /* Init wrappers: */
-    comWrappersReinit();
-
-    /* Watch for the VBoxSVC availability changes: */
-    connect(gVBoxEvents, &UIVirtualBoxEventHandler::sigVBoxSVCAvailabilityChange,
-            this, &VBoxGlobal::sltHandleVBoxSVCAvailabilityChange);
-
-    /* Prepare thread-pool instance: */
-    m_pThreadPool = new UIThreadPool(3 /* worker count */, 5000 /* worker timeout */);
-
-    /* Load translation based on the user settings: */
-    QString sLanguageId = gEDataManager->languageId();
-    if (!sLanguageId.isNull())
-        loadLanguage(sLanguageId);
-
-    retranslateUi();
-
-    connect(gEDataManager, &UIExtraDataManager::sigLanguageChange,
-            this, &VBoxGlobal::sltGUILanguageChange);
-
-    qApp->installEventFilter(this);
-
-    /* process command line */
-
-    UIVisualStateType visualStateType = UIVisualStateType_Invalid;
-
-#ifdef VBOX_WS_X11
-    /* Check whether we have compositing manager running: */
-    m_fCompositingManagerRunning = X11IsCompositingManagerRunning();
-
-    /* Acquire current Window Manager type: */
-    m_enmWindowManagerType = X11WindowManagerType();
-#endif /* VBOX_WS_X11 */
-
-#ifdef VBOX_WITH_DEBUGGER_GUI
-# ifdef VBOX_WITH_DEBUGGER_GUI_MENU
-    initDebuggerVar(&m_fDbgEnabled, "VBOX_GUI_DBG_ENABLED", GUI_Dbg_Enabled, true);
-# else
-    initDebuggerVar(&m_fDbgEnabled, "VBOX_GUI_DBG_ENABLED", GUI_Dbg_Enabled, false);
-# endif
-    initDebuggerVar(&m_fDbgAutoShow, "VBOX_GUI_DBG_AUTO_SHOW", GUI_Dbg_AutoShow, false);
-    m_fDbgAutoShowCommandLine = m_fDbgAutoShowStatistics = m_fDbgAutoShow;
-#endif
-
-    /*
-     * Parse the command line options.
-     *
-     * This is a little sloppy but we're trying to tighten it up.  Unfortuately,
-     * both on X11 and darwin (IIRC) there might be additional arguments aimed
-     * for client libraries with GUI processes.  So, using RTGetOpt or similar
-     * is a bit hard since we have to cope with unknown options.
-     */
-    m_fShowStartVMErrors = true;
-    bool startVM = false;
-    bool fSeparateProcess = false;
-    QString vmNameOrUuid;
-
-    const QStringList &arguments = QCoreApplication::arguments();
-    const int argc = arguments.size();
-    int i = 1;
-    while (i < argc)
-    {
-        const QByteArray &argBytes = arguments.at(i).toUtf8();
-        const char *arg = argBytes.constData();
-        enum { OptType_Unknown, OptType_VMRunner, OptType_VMSelector, OptType_MaybeBoth } enmOptType = OptType_Unknown;
-        /* NOTE: the check here must match the corresponding check for the
-         * options to start a VM in main.cpp and hardenedmain.cpp exactly,
-         * otherwise there will be weird error messages. */
-        if (   !::strcmp(arg, "--startvm")
-            || !::strcmp(arg, "-startvm"))
-        {
-            enmOptType = OptType_VMRunner;
-            if (++i < argc)
-            {
-                vmNameOrUuid = arguments.at(i);
-                startVM = true;
-            }
-        }
-        else if (!::strcmp(arg, "-separate") || !::strcmp(arg, "--separate"))
-        {
-            enmOptType = OptType_VMRunner;
-            fSeparateProcess = true;
-        }
-#ifdef VBOX_GUI_WITH_PIDFILE
-        else if (!::strcmp(arg, "-pidfile") || !::strcmp(arg, "--pidfile"))
-        {
-            enmOptType = OptType_MaybeBoth;
-            if (++i < argc)
-                m_strPidFile = arguments.at(i);
-        }
-#endif /* VBOX_GUI_WITH_PIDFILE */
-        /* Visual state type options: */
-        else if (!::strcmp(arg, "-normal") || !::strcmp(arg, "--normal"))
-        {
-            enmOptType = OptType_MaybeBoth;
-            visualStateType = UIVisualStateType_Normal;
-        }
-        else if (!::strcmp(arg, "-fullscreen") || !::strcmp(arg, "--fullscreen"))
-        {
-            enmOptType = OptType_MaybeBoth;
-            visualStateType = UIVisualStateType_Fullscreen;
-        }
-        else if (!::strcmp(arg, "-seamless") || !::strcmp(arg, "--seamless"))
-        {
-            enmOptType = OptType_MaybeBoth;
-            visualStateType = UIVisualStateType_Seamless;
-        }
-        else if (!::strcmp(arg, "-scale") || !::strcmp(arg, "--scale"))
-        {
-            enmOptType = OptType_MaybeBoth;
-            visualStateType = UIVisualStateType_Scale;
-        }
-        /* Passwords: */
-        else if (!::strcmp(arg, "--settingspw"))
-        {
-            enmOptType = OptType_MaybeBoth;
-            if (++i < argc)
-            {
-                RTStrCopy(m_astrSettingsPw, sizeof(m_astrSettingsPw), arguments.at(i).toLocal8Bit().constData());
-                m_fSettingsPwSet = true;
-            }
-        }
-        else if (!::strcmp(arg, "--settingspwfile"))
-        {
-            enmOptType = OptType_MaybeBoth;
-            if (++i < argc)
-            {
-                const QByteArray &argFileBytes = arguments.at(i).toLocal8Bit();
-                const char *pszFile = argFileBytes.constData();
-                bool fStdIn = !::strcmp(pszFile, "stdin");
-                int vrc = VINF_SUCCESS;
-                PRTSTREAM pStrm;
-                if (!fStdIn)
-                    vrc = RTStrmOpen(pszFile, "r", &pStrm);
-                else
-                    pStrm = g_pStdIn;
-                if (RT_SUCCESS(vrc))
-                {
-                    size_t cbFile;
-                    vrc = RTStrmReadEx(pStrm, m_astrSettingsPw, sizeof(m_astrSettingsPw) - 1, &cbFile);
-                    if (RT_SUCCESS(vrc))
-                    {
-                        if (cbFile >= sizeof(m_astrSettingsPw) - 1)
-                            cbFile = sizeof(m_astrSettingsPw) - 1;
-                        unsigned i;
-                        for (i = 0; i < cbFile && !RT_C_IS_CNTRL(m_astrSettingsPw[i]); i++)
-                            ;
-                        m_astrSettingsPw[i] = '\0';
-                        m_fSettingsPwSet = true;
-                    }
-                    if (!fStdIn)
-                        RTStrmClose(pStrm);
-                }
-            }
-        }
-        /* Misc options: */
-        else if (!::strcmp(arg, "-comment") || !::strcmp(arg, "--comment"))
-        {
-            enmOptType = OptType_MaybeBoth;
-            ++i;
-        }
-        else if (!::strcmp(arg, "--no-startvm-errormsgbox"))
-        {
-            enmOptType = OptType_VMRunner;
-            m_fShowStartVMErrors = false;
-        }
-        else if (!::strcmp(arg, "--aggressive-caching"))
-        {
-            enmOptType = OptType_MaybeBoth;
-            m_fAgressiveCaching = true;
-        }
-        else if (!::strcmp(arg, "--no-aggressive-caching"))
-        {
-            enmOptType = OptType_MaybeBoth;
-            m_fAgressiveCaching = false;
-        }
-        else if (!::strcmp(arg, "--restore-current"))
-        {
-            enmOptType = OptType_VMRunner;
-            m_fRestoreCurrentSnapshot = true;
-        }
-        /* Ad hoc VM reconfig options: */
-        else if (!::strcmp(arg, "--fda"))
-        {
-            enmOptType = OptType_VMRunner;
-            if (++i < argc)
-                m_strFloppyImage = arguments.at(i);
-        }
-        else if (!::strcmp(arg, "--dvd") || !::strcmp(arg, "--cdrom"))
-        {
-            enmOptType = OptType_VMRunner;
-            if (++i < argc)
-                m_strDvdImage = arguments.at(i);
-        }
-        /* VMM Options: */
-        else if (!::strcmp(arg, "--disable-patm"))
-        {
-            enmOptType = OptType_VMRunner;
-            m_fDisablePatm = true;
-        }
-        else if (!::strcmp(arg, "--disable-csam"))
-        {
-            enmOptType = OptType_VMRunner;
-            m_fDisableCsam = true;
-        }
-        else if (!::strcmp(arg, "--recompile-supervisor"))
-        {
-            enmOptType = OptType_VMRunner;
-            m_fRecompileSupervisor = true;
-        }
-        else if (!::strcmp(arg, "--recompile-user"))
-        {
-            enmOptType = OptType_VMRunner;
-            m_fRecompileUser = true;
-        }
-        else if (!::strcmp(arg, "--recompile-all"))
-        {
-            enmOptType = OptType_VMRunner;
-            m_fDisablePatm = m_fDisableCsam = m_fRecompileSupervisor = m_fRecompileUser = true;
-        }
-        else if (!::strcmp(arg, "--execute-all-in-iem"))
-        {
-            enmOptType = OptType_VMRunner;
-            m_fDisablePatm = m_fDisableCsam = m_fExecuteAllInIem = true;
-        }
-        else if (!::strcmp(arg, "--warp-pct"))
-        {
-            enmOptType = OptType_VMRunner;
-            if (++i < argc)
-                m_uWarpPct = RTStrToUInt32(arguments.at(i).toLocal8Bit().constData());
-        }
-#ifdef VBOX_WITH_DEBUGGER_GUI
-        /* Debugger/Debugging options: */
-        else if (!::strcmp(arg, "-dbg") || !::strcmp(arg, "--dbg"))
-        {
-            enmOptType = OptType_VMRunner;
-            setDebuggerVar(&m_fDbgEnabled, true);
-        }
-        else if (!::strcmp( arg, "-debug") || !::strcmp(arg, "--debug"))
-        {
-            enmOptType = OptType_VMRunner;
-            setDebuggerVar(&m_fDbgEnabled, true);
-            setDebuggerVar(&m_fDbgAutoShow, true);
-            setDebuggerVar(&m_fDbgAutoShowCommandLine, true);
-            setDebuggerVar(&m_fDbgAutoShowStatistics, true);
-        }
-        else if (!::strcmp(arg, "--debug-command-line"))
-        {
-            enmOptType = OptType_VMRunner;
-            setDebuggerVar(&m_fDbgEnabled, true);
-            setDebuggerVar(&m_fDbgAutoShow, true);
-            setDebuggerVar(&m_fDbgAutoShowCommandLine, true);
-        }
-        else if (!::strcmp(arg, "--debug-statistics"))
-        {
-            enmOptType = OptType_VMRunner;
-            setDebuggerVar(&m_fDbgEnabled, true);
-            setDebuggerVar(&m_fDbgAutoShow, true);
-            setDebuggerVar(&m_fDbgAutoShowStatistics, true);
-        }
-        else if (!::strcmp(arg, "-no-debug") || !::strcmp(arg, "--no-debug"))
-        {
-            enmOptType = OptType_VMRunner;
-            setDebuggerVar(&m_fDbgEnabled, false);
-            setDebuggerVar(&m_fDbgAutoShow, false);
-            setDebuggerVar(&m_fDbgAutoShowCommandLine, false);
-            setDebuggerVar(&m_fDbgAutoShowStatistics, false);
-        }
-        /* Not quite debug options, but they're only useful with the debugger bits. */
-        else if (!::strcmp(arg, "--start-paused"))
-        {
-            enmOptType = OptType_VMRunner;
-            m_enmLaunchRunning = LaunchRunning_No;
-        }
-        else if (!::strcmp(arg, "--start-running"))
-        {
-            enmOptType = OptType_VMRunner;
-            m_enmLaunchRunning = LaunchRunning_Yes;
-        }
-#endif
-        if (enmOptType == OptType_VMRunner && m_enmType != UIType_RuntimeUI)
-            msgCenter().warnAboutUnrelatedOptionType(arg);
-
-        i++;
-    }
-
-    if (m_enmType == UIType_RuntimeUI && startVM)
-    {
-        /* m_fSeparateProcess makes sense only if a VM is started. */
-        m_fSeparateProcess = fSeparateProcess;
-
-        /* Search for corresponding VM: */
-        QUuid uuid = QUuid(vmNameOrUuid);
-        const CMachine machine = m_comVBox.FindMachine(vmNameOrUuid);
-        if (!uuid.isNull())
-        {
-            if (machine.isNull() && showStartVMErrors())
-                return msgCenter().cannotFindMachineById(m_comVBox, vmNameOrUuid);
-        }
-        else
-        {
-            if (machine.isNull() && showStartVMErrors())
-                return msgCenter().cannotFindMachineByName(m_comVBox, vmNameOrUuid);
-        }
-        m_strManagedVMId = machine.GetId();
-    }
-
-    /* For Selector UI: */
-    if (uiType() == UIType_SelectorUI)
-    {
-        /* We should create separate logging file for VM selector: */
-        char szLogFile[RTPATH_MAX];
-        const char *pszLogFile = NULL;
-        com::GetVBoxUserHomeDirectory(szLogFile, sizeof(szLogFile));
-        RTPathAppend(szLogFile, sizeof(szLogFile), "selectorwindow.log");
-        pszLogFile = szLogFile;
-        /* Create release logger, to file: */
-        com::VBoxLogRelCreate("GUI VM Selector Window",
-                              pszLogFile,
-                              RTLOGFLAGS_PREFIX_TIME_PROG,
-                              "all",
-                              "VBOX_GUI_SELECTORWINDOW_RELEASE_LOG",
-                              RTLOGDEST_FILE | RTLOGDEST_F_NO_DENY,
-                              UINT32_MAX,
-                              10,
-                              60 * 60,
-                              _1M,
-                              NULL /*pErrInfo*/);
-
-        LogRel(("Qt version: %s\n", qtRTVersionString().toUtf8().constData()));
-    }
-
-    if (m_fSettingsPwSet)
-        m_comVBox.SetSettingsSecret(m_astrSettingsPw);
-
-    if (visualStateType != UIVisualStateType_Invalid && !m_strManagedVMId.isNull())
-        gEDataManager->setRequestedVisualState(visualStateType, m_strManagedVMId);
-
-#ifdef VBOX_WITH_DEBUGGER_GUI
-    /* For Runtime UI: */
-    if (uiType() == UIType_RuntimeUI)
-    {
-        /* Setup the debugger GUI: */
-        if (RTEnvExist("VBOX_GUI_NO_DEBUGGER"))
-            m_fDbgEnabled = m_fDbgAutoShow =  m_fDbgAutoShowCommandLine = m_fDbgAutoShowStatistics = false;
-        if (m_fDbgEnabled)
-        {
-            RTERRINFOSTATIC ErrInfo;
-            RTErrInfoInitStatic(&ErrInfo);
-            int vrc = SUPR3HardenedLdrLoadAppPriv("VBoxDbg", &m_hVBoxDbg, RTLDRLOAD_FLAGS_LOCAL, &ErrInfo.Core);
-            if (RT_FAILURE(vrc))
-            {
-                m_hVBoxDbg = NIL_RTLDRMOD;
-                m_fDbgAutoShow = m_fDbgAutoShowCommandLine = m_fDbgAutoShowStatistics = false;
-                LogRel(("Failed to load VBoxDbg, rc=%Rrc - %s\n", vrc, ErrInfo.Core.pszMsg));
-            }
-        }
-    }
-#endif
-
-    m_fValid = true;
-
-    /* Create medium-enumerator but don't do any immediate caching: */
-    m_pMediumEnumerator = new UIMediumEnumerator;
-    {
-        /* Prepare medium-enumerator: */
-        connect(m_pMediumEnumerator, &UIMediumEnumerator::sigMediumCreated,
-                this, &VBoxGlobal::sigMediumCreated);
-        connect(m_pMediumEnumerator, &UIMediumEnumerator::sigMediumDeleted,
-                this, &VBoxGlobal::sigMediumDeleted);
-        connect(m_pMediumEnumerator, &UIMediumEnumerator::sigMediumEnumerationStarted,
-                this, &VBoxGlobal::sigMediumEnumerationStarted);
-        connect(m_pMediumEnumerator, &UIMediumEnumerator::sigMediumEnumerated,
-                this, &VBoxGlobal::sigMediumEnumerated);
-        connect(m_pMediumEnumerator, &UIMediumEnumerator::sigMediumEnumerationFinished,
-                this, &VBoxGlobal::sigMediumEnumerationFinished);
-    }
-
-    /* Create shortcut pool: */
-    UIShortcutPool::create();
-
-#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
-    /* Create network manager: */
-    UINetworkManager::create();
-
-    /* Schedule update manager: */
-    UIUpdateManager::schedule();
-#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
-
-#ifdef RT_OS_LINUX
-    /* Make sure no wrong USB mounted: */
-    checkForWrongUSBMounted();
-#endif /* RT_OS_LINUX */
-
-    /* Populate the list of medium names to be excluded from the
-       recently used media extra data: */
-#if 0 /* bird: This is counter productive as it is _frequently_ necessary to re-insert the
-               viso to refresh the files (like after you rebuilt them on the host).
-               The guest caches ISOs aggressively and files sizes may change. */
-    m_recentMediaExcludeList << "ad-hoc.viso";
-#endif
-}
-
-void VBoxGlobal::cleanup()
-{
-    /// @todo Shouldn't that be protected with a mutex or something?
-    /* Remember that the cleanup is in progress preventing any unwanted
-     * stuff which could be called from the other threads: */
-    s_fCleaningUp = true;
-
-#ifdef VBOX_WITH_DEBUGGER_GUI
-    /* For Runtime UI: */
-    if (   uiType() == UIType_RuntimeUI
-        && m_hVBoxDbg != NIL_RTLDRMOD)
-    {
-        RTLdrClose(m_hVBoxDbg);
-        m_hVBoxDbg = NIL_RTLDRMOD;
-    }
-#endif
-
-#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
-    /* Shutdown update manager: */
-    UIUpdateManager::shutdown();
-
-    /* Destroy network manager: */
-    UINetworkManager::destroy();
-#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
-
-    /* Destroy shortcut pool: */
-    UIShortcutPool::destroy();
-
-#ifdef VBOX_GUI_WITH_PIDFILE
-    deletePidfile();
-#endif /* VBOX_GUI_WITH_PIDFILE */
-
-    /* Starting medium-enumerator cleanup: */
-    m_meCleanupProtectionToken.lockForWrite();
-    {
-        /* Destroy medium-enumerator: */
-        delete m_pMediumEnumerator;
-        m_pMediumEnumerator = 0;
-    }
-    /* Finishing medium-enumerator cleanup: */
-    m_meCleanupProtectionToken.unlock();
-
-    /* Destroy the global (VirtualBox) Main event handler
-     * which is used in both Selector and Runtime UI. */
-    UIVirtualBoxEventHandler::destroy();
-
-    /* Destroy the extra-data manager finally after everything
-     * above which could use it already destroyed: */
-    UIExtraDataManager::destroy();
-
-    /* Cleanup converter: */
-    UIConverter::cleanup();
-
-    /* Cleanup thread-pool: */
-    delete m_pThreadPool;
-    m_pThreadPool = 0;
-    /* Cleanup general icon-pool: */
-    delete m_pIconPool;
-    m_pIconPool = 0;
-
-    /* Ensure CGuestOSType objects are no longer used: */
-    m_guestOSFamilyIDs.clear();
-    m_guestOSTypes.clear();
-
-    /* Starting COM cleanup: */
-    m_comCleanupProtectionToken.lockForWrite();
-    {
-        /* First, make sure we don't use COM any more: */
-        m_comHost.detach();
-        m_comVBox.detach();
-        m_comVBoxClient.detach();
-
-        /* There may be UIMedium(s)EnumeratedEvent instances still in the message
-         * queue which reference COM objects. Remove them to release those objects
-         * before uninitializing the COM subsystem. */
-        QApplication::removePostedEvents(this);
-
-        /* Finally cleanup COM itself: */
-        COMBase::CleanupCOM();
-    }
-    /* Finishing COM cleanup: */
-    m_comCleanupProtectionToken.unlock();
-
-    /* Destroy popup-center: */
-    UIPopupCenter::destroy();
-    /* Destroy message-center: */
-    UIMessageCenter::destroy();
-
-    /* Destroy desktop-widget watchdog: */
-    UIDesktopWidgetWatchdog::destroy();
-
-    m_fValid = false;
-}
-
-void VBoxGlobal::sltHandleCommitDataRequest(QSessionManager &manager)
-{
-    LogRel(("GUI: VBoxGlobal::sltHandleCommitDataRequest: Emergency shutdown initiated\n"));
-
-    /* Ask listener to commit data: */
-    emit sigAskToCommitData();
-
-    /* Ask session manager to postpone shutdown until we done: */
-    manager.cancel();
-
-#ifdef VBOX_WS_WIN
-    // WORKAROUND:
-    // In theory that's Qt5 who should allow us to provide postponing reason as well,
-    // but that functionality seems missed in Windows platform plugin, so we are making that ourselves.
-    // That also implies that since we had postponed a shutdown process, host will send us WM_QUIT to
-    // allow to properly do an application cleanup first. That signal will cause QApplication to quit().
-    ShutdownBlockReasonCreateAPI((HWND)windowManager().mainWindowShown()->winId(), L"Shutdown in progress...");
-#endif
-}
-
-void VBoxGlobal::sltHandleVBoxSVCAvailabilityChange(bool fAvailable)
-{
-    /* Make sure the VBoxSVC availability changed: */
-    if (m_fVBoxSVCAvailable == fAvailable)
-        return;
-
-    /* Cache the new VBoxSVC availability value: */
-    m_fVBoxSVCAvailable = fAvailable;
-
-    /* If VBoxSVC is not available: */
-    if (!m_fVBoxSVCAvailable)
-    {
-        /* Mark wrappers invalid: */
-        m_fWrappersValid = false;
-        /* Re-fetch corresponding CVirtualBox to restart VBoxSVC: */
-        m_comVBox = m_comVBoxClient.GetVirtualBox();
-        if (!m_comVBoxClient.isOk())
-        {
-            // The proper behavior would be to show the message and to exit the app, e.g.:
-            // msgCenter().cannotAcquireVirtualBox(m_comVBoxClient);
-            // return QApplication::quit();
-            // But CVirtualBox is still NULL in current Main implementation,
-            // and this call do not restart anything, so we are waiting
-            // for subsequent event about VBoxSVC is available again.
-        }
-    }
-    /* If VBoxSVC is available: */
-    else
-    {
-        if (!m_fWrappersValid)
-        {
-            /* Re-fetch corresponding CVirtualBox: */
-            m_comVBox = m_comVBoxClient.GetVirtualBox();
-            if (!m_comVBoxClient.isOk())
-            {
-                msgCenter().cannotAcquireVirtualBox(m_comVBoxClient);
-                return QApplication::quit();
-            }
-            /* Re-init wrappers: */
-            comWrappersReinit();
-
-            /* For Selector UI: */
-            if (uiType() == UIType_SelectorUI)
-            {
-                /* Recreate Main event listeners: */
-                UIVirtualBoxEventHandler::destroy();
-                UIExtraDataManager::destroy();
-                UIExtraDataManager::instance();
-                UIVirtualBoxEventHandler::instance();
-                /* Ask UIStarter to restart UI: */
-                emit sigAskToRestartUI();
-            }
-        }
-    }
-
-    /* Notify listeners about the VBoxSVC availability change: */
-    emit sigVBoxSVCAvailabilityChange();
-}
-
-#ifdef VBOX_WS_WIN
-/* static */
-BOOL VBoxGlobal::ShutdownBlockReasonCreateAPI(HWND hWnd, LPCWSTR pwszReason)
-{
-    BOOL fResult = FALSE;
-    typedef BOOL(WINAPI *PFNSHUTDOWNBLOCKREASONCREATE)(HWND hWnd, LPCWSTR pwszReason);
-
-    PFNSHUTDOWNBLOCKREASONCREATE pfn = (PFNSHUTDOWNBLOCKREASONCREATE)GetProcAddress(
-        GetModuleHandle(L"User32.dll"), "ShutdownBlockReasonCreate");
-    _ASSERTE(pfn);
-    if (pfn)
-        fResult = pfn(hWnd, pwszReason);
-    return fResult;
-}
-#endif
-
-#ifdef VBOX_WITH_DEBUGGER_GUI
-
-# define VBOXGLOBAL_DBG_CFG_VAR_FALSE       (0)
-# define VBOXGLOBAL_DBG_CFG_VAR_TRUE        (1)
-# define VBOXGLOBAL_DBG_CFG_VAR_MASK        (1)
-# define VBOXGLOBAL_DBG_CFG_VAR_CMD_LINE    RT_BIT(3)
-# define VBOXGLOBAL_DBG_CFG_VAR_DONE        RT_BIT(4)
-
-void VBoxGlobal::initDebuggerVar(int *piDbgCfgVar, const char *pszEnvVar, const char *pszExtraDataName, bool fDefault)
-{
-    QString strEnvValue;
-    char    szEnvValue[256];
-    int rc = RTEnvGetEx(RTENV_DEFAULT, pszEnvVar, szEnvValue, sizeof(szEnvValue), NULL);
-    if (RT_SUCCESS(rc))
-    {
-        strEnvValue = QString::fromUtf8(&szEnvValue[0]).toLower().trimmed();
-        if (strEnvValue.isEmpty())
-            strEnvValue = "yes";
-    }
-    else if (rc != VERR_ENV_VAR_NOT_FOUND)
-        strEnvValue = "veto";
-
-    QString strExtraValue = m_comVBox.GetExtraData(pszExtraDataName).toLower().trimmed();
-    if (strExtraValue.isEmpty())
-        strExtraValue = QString();
-
-    if ( strEnvValue.contains("veto") || strExtraValue.contains("veto"))
-        *piDbgCfgVar = VBOXGLOBAL_DBG_CFG_VAR_DONE | VBOXGLOBAL_DBG_CFG_VAR_FALSE;
-    else if (strEnvValue.isNull() && strExtraValue.isNull())
-        *piDbgCfgVar = fDefault ? VBOXGLOBAL_DBG_CFG_VAR_TRUE : VBOXGLOBAL_DBG_CFG_VAR_FALSE;
-    else
-    {
-        QString *pStr = !strEnvValue.isEmpty() ? &strEnvValue : &strExtraValue;
-        if (   pStr->startsWith("y")  // yes
-            || pStr->startsWith("e")  // enabled
-            || pStr->startsWith("t")  // true
-            || pStr->startsWith("on")
-            || pStr->toLongLong() != 0)
-            *piDbgCfgVar = VBOXGLOBAL_DBG_CFG_VAR_TRUE;
-        else if (   pStr->startsWith("n")  // o
-                 || pStr->startsWith("d")  // disable
-                 || pStr->startsWith("f")  // false
-                 || pStr->startsWith("off")
-                 || pStr->contains("veto") /* paranoia */
-                 || pStr->toLongLong() == 0)
-            *piDbgCfgVar = VBOXGLOBAL_DBG_CFG_VAR_FALSE;
-        else
-        {
-            LogFunc(("Ignoring unknown value '%s' for '%s'\n", pStr->toUtf8().constData(), pStr == &strEnvValue ? pszEnvVar : pszExtraDataName));
-            *piDbgCfgVar = fDefault ? VBOXGLOBAL_DBG_CFG_VAR_TRUE : VBOXGLOBAL_DBG_CFG_VAR_FALSE;
-        }
-    }
-}
-
-void VBoxGlobal::setDebuggerVar(int *piDbgCfgVar, bool fState)
-{
-    if (!(*piDbgCfgVar & VBOXGLOBAL_DBG_CFG_VAR_DONE))
-        *piDbgCfgVar = (fState ? VBOXGLOBAL_DBG_CFG_VAR_TRUE : VBOXGLOBAL_DBG_CFG_VAR_FALSE)
-                     | VBOXGLOBAL_DBG_CFG_VAR_CMD_LINE;
-}
-
-bool VBoxGlobal::isDebuggerWorker(int *piDbgCfgVar, const char *pszExtraDataName) const
-{
-    if (!(*piDbgCfgVar & VBOXGLOBAL_DBG_CFG_VAR_DONE))
-    {
-        const QString str = gEDataManager->debugFlagValue(pszExtraDataName);
-        if (str.contains("veto"))
-            *piDbgCfgVar = VBOXGLOBAL_DBG_CFG_VAR_DONE | VBOXGLOBAL_DBG_CFG_VAR_FALSE;
-        else if (str.isEmpty() || (*piDbgCfgVar & VBOXGLOBAL_DBG_CFG_VAR_CMD_LINE))
-            *piDbgCfgVar |= VBOXGLOBAL_DBG_CFG_VAR_DONE;
-        else if (   str.startsWith("y")  // yes
-                 || str.startsWith("e")  // enabled
-                 || str.startsWith("t")  // true
-                 || str.startsWith("on")
-                 || str.toLongLong() != 0)
-            *piDbgCfgVar = VBOXGLOBAL_DBG_CFG_VAR_DONE | VBOXGLOBAL_DBG_CFG_VAR_TRUE;
-        else if (   str.startsWith("n")  // no
-                 || str.startsWith("d")  // disable
-                 || str.startsWith("f")  // false
-                 || str.toLongLong() == 0)
-            *piDbgCfgVar = VBOXGLOBAL_DBG_CFG_VAR_DONE | VBOXGLOBAL_DBG_CFG_VAR_FALSE;
-        else
-            *piDbgCfgVar |= VBOXGLOBAL_DBG_CFG_VAR_DONE;
-    }
-
-    return (*piDbgCfgVar & VBOXGLOBAL_DBG_CFG_VAR_MASK) == VBOXGLOBAL_DBG_CFG_VAR_TRUE;
-}
-
-#endif /* VBOX_WITH_DEBUGGER_GUI */
-
-void VBoxGlobal::comWrappersReinit()
-{
-    /* Re-fetch corresponding objects/values: */
-    m_comHost = virtualBox().GetHost();
-    m_strHomeFolder = virtualBox().GetHomeFolder();
-
-    /* Re-initialize guest OS Type list: */
-    m_guestOSFamilyIDs.clear();
-    m_guestOSTypes.clear();
-    const CGuestOSTypeVector guestOSTypes = m_comVBox.GetGuestOSTypes();
-    const int cGuestOSTypeCount = guestOSTypes.size();
-    AssertMsg(cGuestOSTypeCount > 0, ("Number of OS types must not be zero"));
-    if (cGuestOSTypeCount > 0)
-    {
-        /* Here we ASSUME the 'Other' types are always the first,
-         * so we remember them and will append them to the list when finished.
-         * We do a two pass, first adding the specific types, then the two 'Other' types. */
-        for (int j = 0; j < 2; ++j)
-        {
-            int cMax = j == 0 ? cGuestOSTypeCount : RT_MIN(2, cGuestOSTypeCount);
-            for (int i = j == 0 ? 2 : 0; i < cMax; ++i)
-            {
-                const CGuestOSType os = guestOSTypes.at(i);
-                const QString strFamilyID = os.GetFamilyId();
-                const QString strFamilyDescription = os.GetFamilyDescription();
-                if (!m_guestOSFamilyIDs.contains(strFamilyID))
-                {
-                    m_guestOSFamilyIDs << strFamilyID;
-                    m_guestOSFamilyDescriptions[strFamilyID] = strFamilyDescription;
-                    m_guestOSTypes << QList<CGuestOSType>();
-                }
-                m_guestOSTypes[m_guestOSFamilyIDs.indexOf(strFamilyID)].append(os);
-            }
-        }
-    }
-
-    /* Mark wrappers valid: */
-    m_fWrappersValid = true;
-}
Index: unk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 79364)
+++ 	(revision )
@@ -1,947 +1,0 @@
-/* $Id$ */
-/** @file
- * VBox Qt GUI - VBoxGlobal class declaration.
- */
-
-/*
- * Copyright (C) 2006-2019 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 FEQT_INCLUDED_SRC_globals_VBoxGlobal_h
-#define FEQT_INCLUDED_SRC_globals_VBoxGlobal_h
-#ifndef RT_WITHOUT_PRAGMA_ONCE
-# pragma once
-#endif
-
-/* Qt includes: */
-#include <QFileIconProvider>
-#include <QMap>
-#include <QReadWriteLock>
-
-/* GUI includes: */
-#include "UIDefs.h"
-#include "UILibraryDefs.h"
-#include "UIMediumDefs.h"
-#ifdef VBOX_WS_X11
-# include "VBoxX11Helper.h"
-#endif
-
-/* COM includes: */
-#include "VBox/com/Guid.h"
-#include "CGuestOSType.h"
-#include "CHost.h"
-#include "CMedium.h"
-#include "CSession.h"
-#include "CVirtualBoxClient.h"
-#include "CVirtualBox.h"
-
-/* Other includes: */
-#ifdef VBOX_WS_X11
-# include <X11/Xdefs.h>
-#endif
-
-/* Forward declarations: */
-class QGraphicsWidget;
-class QMenu;
-class QSessionManager;
-class QSpinBox;
-class QToolButton;
-class CHostVideoInputDevice;
-class CMachine;
-class CUSBDevice;
-class UIMedium;
-class UIMediumEnumerator;
-class UIIconPoolGeneral;
-class UIThreadPool;
-
-/** QObject subclass containing common GUI functionality. */
-class SHARED_LIBRARY_STUFF VBoxGlobal : public QObject
-{
-    Q_OBJECT;
-
-signals:
-
-    /** @name Common stuff.
-     * @{ */
-        /** Asks #UIStarter listener to commit data. */
-        void sigAskToCommitData();
-    /** @} */
-
-    /** @name COM stuff.
-     * @{ */
-        /** Asks #UIStarter listener to restart UI. */
-        void sigAskToRestartUI();
-
-        /** Notifies listeners about the VBoxSVC availability change. */
-        void sigVBoxSVCAvailabilityChange();
-    /** @} */
-
-    /** @name COM: Virtual Media stuff.
-     * @{ */
-        /** Notifies listeners about medium with certain @a uMediumID created. */
-        void sigMediumCreated(const QUuid &uMediumID);
-        /** Notifies listeners about medium with certain @a uMediumID deleted. */
-        void sigMediumDeleted(const QUuid &uMediumID);
-
-        /** Notifies listeners about medium-enumeration started. */
-        void sigMediumEnumerationStarted();
-        /** Notifies listeners about medium with certain @a uMediumID enumerated. */
-        void sigMediumEnumerated(const QUuid &uMediumID);
-        /** Notifies listeners about medium-enumeration finished. */
-        void sigMediumEnumerationFinished();
-    /** @} */
-
-public:
-
-    /** UI types. */
-    enum UIType
-    {
-        UIType_SelectorUI,
-        UIType_RuntimeUI
-    };
-
-    /** VM launch modes. */
-    enum LaunchMode
-    {
-        LaunchMode_Invalid,
-        LaunchMode_Default,
-        LaunchMode_Headless,
-        LaunchMode_Separate
-    };
-
-    /** VM launch running options. */
-    enum LaunchRunning
-    {
-        LaunchRunning_Default, /**< Default (depends on debug settings). */
-        LaunchRunning_No,      /**< Start the VM paused. */
-        LaunchRunning_Yes      /**< Start the VM running. */
-    };
-
-    /** Returns VBoxGlobal instance. */
-    static VBoxGlobal *instance() { return s_pInstance; }
-    /** Creates VBoxGlobal instance of passed @a enmType. */
-    static void create(UIType enmType);
-    /** Destroys VBoxGlobal instance. */
-    static void destroy();
-
-    /** @name Common stuff.
-     * @{ */
-        /** Returns whether VBoxGlobal cleanup is in progress. */
-        static bool isCleaningUp() { return s_fCleaningUp; }
-
-        /** Returns Qt runtime version string. */
-        static QString qtRTVersionString();
-        /** Returns Qt runtime version. */
-        static uint qtRTVersion();
-        /** Returns Qt runtime major version. */
-        static uint qtRTMajorVersion();
-        /** Returns Qt runtime minor version. */
-        static uint qtRTMinorVersion();
-        /** Returns Qt runtime revision number. */
-        static uint qtRTRevisionNumber();
-
-        /** Returns Qt compiled version string. */
-        static QString qtCTVersionString();
-        /** Returns Qt compiled version. */
-        static uint qtCTVersion();
-
-        /** Returns whether VBoxGlobal instance is properly initialized. */
-        bool isValid() const { return m_fValid; }
-
-        /** Returns the UI type. */
-        UIType uiType() const { return m_enmType; }
-
-        /** Returns VBox version string. */
-        QString vboxVersionString() const;
-        /** Returns normalized VBox version string. */
-        QString vboxVersionStringNormalized() const;
-        /** Returns whether VBox version string contains BETA word. */
-        bool isBeta() const;
-
-#ifdef VBOX_WS_MAC
-        /** Mac OS X: Returns #MacOSXRelease determined by <i>uname</i> call. */
-        static MacOSXRelease determineOsRelease();
-        /** Mac OS X: Returns #MacOSXRelease determined during VBoxGlobal prepare routine. */
-        MacOSXRelease osRelease() const { return m_enmMacOSVersion; }
-#endif
-
-#ifdef VBOX_WS_X11
-        /** X11: Returns whether the Window Manager we are running under is composition one. */
-        bool isCompositingManagerRunning() const { return m_fCompositingManagerRunning; }
-        /** X11: Returns the type of the Window Manager we are running under. */
-        X11WMType typeOfWindowManager() const { return m_enmWindowManagerType; }
-#endif
-
-        /** Returns whether branding is active. */
-        bool brandingIsActive(bool fForce = false);
-        /** Returns value for certain branding @a strKey from custom.ini file. */
-        QString brandingGetKey(QString strKey);
-        /** Returns a file name (unique up to extension) wrt. @a strFullFolderPath folder content. Starts
-          * searching strBaseFileName and adds suffixes until a unique file name is found. */
-        static QString findUniqueFileName(const QString &strFullFolderPath, const QString &strBaseFileName);
-    /** @} */
-
-    /** @name Process arguments stuff.
-     * @{ */
-        /** Returns whether passed @a strExt ends with one of allowed extension in the @a extList. */
-        static bool hasAllowedExtension(const QString &strExt, const QStringList &extList);
-
-        /** Process application args. */
-        bool processArgs();
-
-        /** Returns whether there are unhandled URL arguments present. */
-        bool argumentUrlsPresent() const;
-        /** Takes and returns the URL argument list while clearing the source. */
-        QList<QUrl> takeArgumentUrls();
-
-        /** Returns the --startvm option value (managed VM id). */
-        QUuid managedVMUuid() const { return m_strManagedVMId; }
-        /** Returns the --separate option value (whether GUI process is separate from VM process). */
-        bool isSeparateProcess() const { return m_fSeparateProcess; }
-        /** Returns the --no-startvm-errormsgbox option value (whether startup VM errors are disabled). */
-        bool showStartVMErrors() const { return m_fShowStartVMErrors; }
-
-        /** Returns the --aggressive-caching / --no-aggressive-caching option value (whether medium-enumeration is required). */
-        bool agressiveCaching() const { return m_fAgressiveCaching; }
-
-        /** Returns the --restore-current option value (whether we should restore current snapshot before VM started). */
-        bool shouldRestoreCurrentSnapshot() const { return m_fRestoreCurrentSnapshot; }
-        /** Defines whether we should fRestore current snapshot before VM started. */
-        void setShouldRestoreCurrentSnapshot(bool fRestore) { m_fRestoreCurrentSnapshot = fRestore; }
-
-        /** Returns the --fda option value (whether we have floppy image). */
-        bool hasFloppyImageToMount() const { return !m_strFloppyImage.isNull(); }
-        /** Returns the --dvd | --cdrom option value (whether we have DVD image). */
-        bool hasDvdImageToMount() const { return !m_strDvdImage.isNull(); }
-        /** Returns floppy image name. */
-        QUuid const &getFloppyImage() const { return m_strFloppyImage; }
-        /** Returns DVD image name. */
-        QUuid const &getDvdImage() const { return m_strDvdImage; }
-
-        /** Returns the --disable-patm option value. */
-        bool isPatmDisabled() const { return m_fDisablePatm; }
-        /** Returns the --disable-csam option value. */
-        bool isCsamDisabled() const { return m_fDisableCsam; }
-        /** Returns the --recompile-supervisor option value. */
-        bool isSupervisorCodeExecedRecompiled() const { return m_fRecompileSupervisor; }
-        /** Returns the --recompile-user option value. */
-        bool isUserCodeExecedRecompiled() const { return m_fRecompileUser; }
-        /** Returns the --execute-all-in-iem option value. */
-        bool areWeToExecuteAllInIem() const { return m_fExecuteAllInIem; }
-        /** Returns whether --warp-factor option value is equal to 100. */
-        bool isDefaultWarpPct() const { return m_uWarpPct == 100; }
-        /** Returns the --warp-factor option value. */
-        uint32_t getWarpPct() const { return m_uWarpPct; }
-
-#ifdef VBOX_WITH_DEBUGGER_GUI
-        /** Holds whether the debugger should be accessible. */
-        bool isDebuggerEnabled() const;
-        /** Holds whether to show the debugger automatically with the console. */
-        bool isDebuggerAutoShowEnabled() const;
-        /** Holds whether to show the command line window when m_fDbgAutoShow is set. */
-        bool isDebuggerAutoShowCommandLineEnabled() const;
-        /** Holds whether to show the statistics window when m_fDbgAutoShow is set. */
-        bool isDebuggerAutoShowStatisticsEnabled() const;
-
-        /** VBoxDbg module handle. */
-        RTLDRMOD getDebuggerModule() const { return m_hVBoxDbg; }
-#endif
-
-        /** Returns whether VM should start paused. */
-        bool shouldStartPaused() const;
-
-#ifdef VBOX_GUI_WITH_PIDFILE
-        /** Creates PID file. */
-        void createPidfile();
-        /** Deletes PID file. */
-        void deletePidfile();
-#endif
-    /** @} */
-
-    /** @name Localization stuff.
-     * @{ */
-        /** Native language name of the currently installed translation. */
-        static QString languageName();
-        /** Native language country name of the currently installed translation. */
-        static QString languageCountry();
-        /** Language name of the currently installed translation, in English. */
-        static QString languageNameEnglish();
-        /** Language country name of the currently installed translation, in English. */
-        static QString languageCountryEnglish();
-        /** Comma-separated list of authors of the currently installed translation. */
-        static QString languageTranslators();
-
-        /** Returns VBox language sub-directory. */
-        static QString vboxLanguageSubDirectory();
-        /** Returns VBox language file-base. */
-        static QString vboxLanguageFileBase();
-        /** Returns VBox language file-extension. */
-        static QString vboxLanguageFileExtension();
-        /** Returns VBox language ID reg-exp. */
-        static QString vboxLanguageIdRegExp();
-        /** Returns built in language name. */
-        static QString vboxBuiltInLanguageName();
-
-        /** Returns the loaded (active) language ID. */
-        static QString languageId();
-        /** Returns the system language ID. */
-        static QString systemLanguageId();
-
-        /** Loads the language by language ID.
-          * @param  strLangId  Brings the language ID in in form of xx_YY.
-          *                    QString() means the system default language. */
-        static void loadLanguage(const QString &strLangId = QString());
-
-        /** Returns tr("%n year(s)"). */
-        static QString yearsToString(uint32_t cVal);
-        /** Returns tr("%n month(s)"). */
-        static QString monthsToString(uint32_t cVal);
-        /** Returns tr("%n day(s)"). */
-        static QString daysToString(uint32_t cVal);
-        /** Returns tr("%n hour(s)"). */
-        static QString hoursToString(uint32_t cVal);
-        /** Returns tr("%n minute(s)"). */
-        static QString minutesToString(uint32_t cVal);
-        /** Returns tr("%n second(s)"). */
-        static QString secondsToString(uint32_t cVal);
-
-        /** Returns the decimal separator for the current locale. */
-        static QChar decimalSep();
-        /** Returns the regexp string that defines the format of the human-readable size representation. */
-        static QString sizeRegexp();
-        /** Parses the given size strText and returns the size value in bytes. */
-        static quint64 parseSize(const QString &strText);
-        /** Parses the given size strText and returns the size suffix. */
-        static SizeSuffix parseSizeSuffix(const QString &strText);
-        /** Parses the given string @a strText and returns true if it includes a size suffix. */
-        static bool hasSizeSuffix(const QString &strText);
-        /** Formats the given @a uSize value in bytes to a human readable string.
-          * @param  uSize     Brings the size value in bytes.
-          * @param  enmMode   Brings the conversion mode.
-          * @param  cDecimal  Brings the number of decimal digits in result. */
-        static QString formatSize(quint64 uSize, uint cDecimal = 2, FormatSize enmMode = FormatSize_Round);
-
-        /** Returns the list of the standard COM port names (i.e. "COMx"). */
-        static QStringList COMPortNames();
-        /** Returns the name of the standard COM port corresponding to the given parameters,
-          * or "User-defined" (which is also returned when both @a uIRQ and @a uIOBase are 0). */
-        static QString toCOMPortName(ulong uIRQ, ulong uIOBase);
-        /** Returns port parameters corresponding to the given standard COM name.
-          * Returns @c true on success, or @c false if the given port name is not one of the standard names (i.e. "COMx"). */
-        static bool toCOMPortNumbers(const QString &strName, ulong &uIRQ, ulong &uIOBase);
-        /** Returns the list of the standard LPT port names (i.e. "LPTx"). */
-        static QStringList LPTPortNames();
-        /** Returns the name of the standard LPT port corresponding to the given parameters,
-          * or "User-defined" (which is also returned when both @a uIRQ and @a uIOBase are 0). */
-        static QString toLPTPortName(ulong uIRQ, ulong uIOBase);
-        /** Returns port parameters corresponding to the given standard LPT name.
-          * Returns @c true on success, or @c false if the given port name is not one of the standard names (i.e. "LPTx"). */
-        static bool toLPTPortNumbers(const QString &strName, ulong &uIRQ, ulong &uIOBase);
-
-        /** Reformats the input @a strText to highlight it. */
-        static QString highlight(QString strText, bool fToolTip = false);
-        /** Reformats the input @a strText to emphasize it. */
-        static QString emphasize(QString strText);
-        /** Removes the first occurrence of the accelerator mark (the ampersand symbol) from the given @a strText. */
-        static QString removeAccelMark(QString strText);
-        /** Inserts a passed @a strKey into action @a strText. */
-        static QString insertKeyToActionText (const QString &strText, const QString &strKey);
-    /** @} */
-
-    /** @name File-system stuff.
-     * @{ */
-        /** Returns full help file name. */
-        static QString helpFile();
-
-        /** Returns documents path. */
-        static QString documentsPath();
-    /** @} */
-
-    /** @name Window/widget stuff.
-     * @{ */
-        /** Search position for @a rectangle to make sure it is fully contained @a boundRegion. */
-        static QRect normalizeGeometry(const QRect &rectangle, const QRegion &boundRegion,
-                                       bool fCanResize = true);
-        /** Ensures that the given rectangle @a rectangle is fully contained within the region @a boundRegion. */
-        static QRect getNormalized(const QRect &rectangle, const QRegion &boundRegion,
-                                   bool fCanResize = true);
-        /** Returns the flipped (transposed) @a region. */
-        static QRegion flip(const QRegion &region);
-
-        /** Aligns the center of @a pWidget with the center of @a pRelative. */
-        static void centerWidget(QWidget *pWidget, QWidget *pRelative, bool fCanResize = true);
-
-        /** Assigns top-level @a pWidget geometry passed as QRect coordinates.
-          * @note  Take into account that this request may fail on X11. */
-        static void setTopLevelGeometry(QWidget *pWidget, int x, int y, int w, int h);
-        /** Assigns top-level @a pWidget geometry passed as @a rect.
-          * @note  Take into account that this request may fail on X11. */
-        static void setTopLevelGeometry(QWidget *pWidget, const QRect &rect);
-
-        /** Activates the specified window with given @a wId. Can @a fSwitchDesktop if requested. */
-        static bool activateWindow(WId wId, bool fSwitchDesktop = true);
-
-        /** Does some checks on certain platforms before calling QWidget::setCursor(...). */
-        static void setCursor(QWidget *pWidget, const QCursor &cursor);
-        static void setCursor(QGraphicsWidget *pWidget, const QCursor &cursor);
-        static void unsetCursor(QWidget *pWidget);
-        static void unsetCursor(QGraphicsWidget *pWidget);
-
-#ifdef VBOX_WS_X11
-        /** X11: Test whether the current window manager supports full screen mode. */
-        static bool supportsFullScreenMonitorsProtocolX11();
-        /** X11: Performs mapping of the passed @a pWidget to host-screen with passed @a uScreenId. */
-        static bool setFullScreenMonitorX11(QWidget *pWidget, ulong uScreenId);
-
-        /** X11: Returns a list of current _NET_WM_STATE flags for passed @a pWidget. */
-        static QVector<Atom> flagsNetWmState(QWidget *pWidget);
-        /** X11: Check whether _NET_WM_STATE_FULLSCREEN flag is set for passed @a pWidget. */
-        static bool isFullScreenFlagSet(QWidget *pWidget);
-        /** X11: Sets _NET_WM_STATE_FULLSCREEN flag for passed @a pWidget. */
-        static void setFullScreenFlag(QWidget *pWidget);
-        /** X11: Sets _NET_WM_STATE_SKIP_TASKBAR flag for passed @a pWidget. */
-        static void setSkipTaskBarFlag(QWidget *pWidget);
-        /** X11: Sets _NET_WM_STATE_SKIP_PAGER flag for passed @a pWidget. */
-        static void setSkipPagerFlag(QWidget *pWidget);
-
-        /** Assigns WM_CLASS property for passed @a pWidget. */
-        static void setWMClass(QWidget *pWidget, const QString &strNameString, const QString &strClassString);
-#endif /* VBOX_WS_X11 */
-
-        /** Assigns minimum @a pSpinBox to correspond to @a cCount digits. */
-        static void setMinimumWidthAccordingSymbolCount(QSpinBox *pSpinBox, int cCount);
-    /** @} */
-
-    /** @name COM stuff.
-     * @{ */
-        /** Try to acquire COM cleanup protection token for reading. */
-        bool comTokenTryLockForRead() { return m_comCleanupProtectionToken.tryLockForRead(); }
-        /** Unlock previously acquired COM cleanup protection token. */
-        void comTokenUnlock() { return m_comCleanupProtectionToken.unlock(); }
-
-        /** Returns the copy of VirtualBox client wrapper. */
-        CVirtualBoxClient virtualBoxClient() const { return m_comVBoxClient; }
-        /** Returns the copy of VirtualBox object wrapper. */
-        CVirtualBox virtualBox() const { return m_comVBox; }
-        /** Returns the copy of VirtualBox host-object wrapper. */
-        CHost host() const { return m_comHost; }
-        /** Returns the symbolic VirtualBox home-folder representation. */
-        QString homeFolder() const { return m_strHomeFolder; }
-
-        /** Returns the VBoxSVC availability value. */
-        bool isVBoxSVCAvailable() const { return m_fVBoxSVCAvailable; }
-    /** @} */
-
-    /** @name COM: Guest OS Type.
-     * @{ */
-        /** Returns the list of family IDs. */
-        QList<QString> vmGuestOSFamilyIDs() const { return m_guestOSFamilyIDs; }
-
-        /** Returns a family description with passed @a strFamilyId. */
-        QString vmGuestOSFamilyDescription(const QString &strFamilyId) const;
-        /** Returns a list of all guest OS types with passed @a strFamilyId. */
-        QList<CGuestOSType> vmGuestOSTypeList(const QString &strFamilyId) const;
-
-        /** Returns the guest OS type for passed @a strTypeId.
-          * It is being serached through the list of family with passed @a strFamilyId if specified. */
-        CGuestOSType vmGuestOSType(const QString &strTypeId, const QString &strFamilyId = QString()) const;
-        /** Returns a type description with passed @a strTypeId. */
-        QString vmGuestOSTypeDescription(const QString &strTypeId) const;
-
-        /** Returns whether guest type with passed @a strOSTypeId is one of DOS types. */
-        static bool isDOSType(const QString &strOSTypeId);
-    /** @} */
-
-    /** @name COM: Virtual Machine stuff.
-     * @{ */
-        /** Switches to certain @a comMachine. */
-        static bool switchToMachine(CMachine &comMachine);
-        /** Launches certain @a comMachine in specified @a enmLaunchMode. */
-        bool launchMachine(CMachine &comMachine, LaunchMode enmLaunchMode = LaunchMode_Default);
-
-        /** Opens session of certain @a enmLockType for VM with certain @a uId. */
-        CSession openSession(const QUuid &uId, KLockType enmLockType = KLockType_Write);
-        /** Opens session of KLockType_Shared type for VM with certain @a uId. */
-        CSession openExistingSession(const QUuid &uId) { return openSession(uId, KLockType_Shared); }
-    /** @} */
-
-    /** @name COM: Virtual Media stuff.
-     * @{ */
-        /** Starts medium-enumeration. */
-        void startMediumEnumeration(const CMediumVector &mediaList = CMediumVector());
-        /** Enumerates additional medium. */
-        void enumerateAdditionalMedium(const CMedium &comMedium);
-        /** Calls refresh for each medium which has been already enumerated. */
-        void refreshMedia();
-        /** Returns whether medium-enumeration is in progress. */
-        bool isMediumEnumerationInProgress() const;
-#ifdef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
-        /** Returns whether full medium-enumeration is requested. */
-        bool isFullMediumEnumerationRequested() const;
-#endif
-        /** Returns enumerated medium with certain @a uMediumID. */
-        UIMedium medium(const QUuid &uMediumID) const;
-        /** Returns enumerated medium IDs. */
-        QList<QUuid> mediumIDs() const;
-        /** Creates medium on the basis of passed @a guiMedium description. */
-        void createMedium(const UIMedium &guiMedium);
-#ifndef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
-        /** Deletes medium with certain @a uMediumID. */
-        void deleteMedium(const QUuid &uMediumID);
-#endif
-
-        /** Opens external medium by passed @a strMediumLocation.
-          * @param  enmMediumType      Brings the medium type.
-          * @param  pParent            Brings the dialog parent.
-          * @param  strMediumLocation  Brings the file path to load medium from.
-          * @param  pParent            Brings the dialog parent. */
-        QUuid openMedium(UIMediumDeviceType enmMediumType, QString strMediumLocation, QWidget *pParent = 0);
-
-        /** Opens external medium using file-open dialog.
-          * @param  enmMediumType     Brings the medium type.
-          * @param  pParent           Brings the dialog parent.
-          * @param  strDefaultFolder  Brings the folder to browse for medium.
-          * @param  fUseLastFolder    Brings whether we should propose to use last used folder. */
-        QUuid openMediumWithFileOpenDialog(UIMediumDeviceType enmMediumType, QWidget *pParent = 0,
-                                             const QString &strDefaultFolder = QString(), bool fUseLastFolder = false);
-
-
-        /** Creates and shows a UIMediumSelector dialog.
-          * @param  parent                   Passes the parent of the dialog,
-          * @param  enmMediumType            Passes the medium type.
-          * @param  strMachineName           Passes the name of the machine,
-          * @param  strMachineFolder         Passes the machine folder,
-          * @param  strMachineGuestOSTypeId  Passes the type ID of machine's guest os,
-          * @param  fEnableCreate            Passes whether to show/enable create action in the medium selector dialog,
-          * returns the return code of the UIMediumSelector::ReturnCode as int. In case of a medium selection
-          *         UUID of the selected medium is stored in @param outUuid.*/
-        int openMediumSelectorDialog(QWidget *pParent, UIMediumDeviceType  enmMediumType, QUuid &outUuid,
-                                     const QString &strMachineFolder, const QString &strMachineName,
-                                     const QString &strMachineGuestOSTypeId, bool fEnableCreate);
-
-        /** Creates and shows a dialog (wizard) to create a medium of type @a enmMediumType.
-          * @param  parent                   Passes the parent of the dialog,
-          * @param  enmMediumType            Passes the medium type.
-          * @param  strMachineName           Passes the name of the machine,
-          * @param  strMachineFolder         Passes the machine folder,
-          * @param  strMachineGuestOSTypeId  Passes the type ID of machine's guest os,
-          * @param  fEnableCreate            Passes whether to show/enable create action in the medium selector dialog,
-          * returns the return code of the UIMediumSelector::ReturnCode as int. In case of a medium selection
-          *         UUID of the selected medium is stored in @param outUuid.*/
-        QUuid openMediumCreatorDialog(QWidget *pParent, UIMediumDeviceType  enmMediumType,
-                                      const QString &strMachineFolder = QString(), const QString &strMachineName = QString(),
-                                      const QString &strMachineGuestOSTypeId = QString());
-
-
-        /** Prepares storage menu according passed parameters.
-          * @param  menu               Brings the #QMenu to be prepared.
-          * @param  pListener          Brings the listener #QObject, this @a menu being prepared for.
-          * @param  pszSlotName        Brings the name of the SLOT in the @a pListener above, this menu will be handled with.
-          * @param  comMachine         Brings the #CMachine object, this @a menu being prepared for.
-          * @param  strControllerName  Brings the name of the #CStorageController in the @a machine above.
-          * @param  storageSlot        Brings the #StorageSlot of the storage controller with @a strControllerName above. */
-        void prepareStorageMenu(QMenu &menu,
-                                QObject *pListener, const char *pszSlotName,
-                                const CMachine &comMachine, const QString &strControllerName, const StorageSlot &storageSlot);
-        /** Updates @a comConstMachine storage with data described by @a target. */
-        void updateMachineStorage(const CMachine &comConstMachine, const UIMediumTarget &target);
-
-        /** Generates details for passed @a comMedium.
-          * @param  fPredictDiff  Brings whether medium will be marked differencing on attaching.
-          * @param  fUseHtml      Brings whether HTML subsets should be used in the generated output. */
-        QString details(const CMedium &comMedium, bool fPredictDiff, bool fUseHtml = true);
-
-        /** Update extra data related to recently used/referred media.
-          * @param  enmMediumType       Passes the medium type.
-          * @param  strMediumLocation   Passes the medium location. */
-        void updateRecentlyUsedMediumListAndFolder(UIMediumDeviceType enmMediumType, QString strMediumLocation);
-
-        /** Searches extra data for the recently used folder path which corresponds to @a enmMediumType. When that search fails
-            it looks for recent folder extra data for other medium types. As the last resort returns default vm folder path.
-          * @param  enmMediumType       Passes the medium type. */
-        QString defaultFolderPathForType(UIMediumDeviceType enmMediumType);
-    /** @} */
-
-    /** @name COM: USB stuff.
-     * @{ */
-#ifdef RT_OS_LINUX
-        /** Verifies that USB drivers are properly configured on Linux. */
-        static void checkForWrongUSBMounted();
-#endif
-
-        /** Generates details for passed USB @a comDevice. */
-        static QString details(const CUSBDevice &comDevice);
-        /** Generates tool-tip for passed USB @a comDevice. */
-        static QString toolTip(const CUSBDevice &comDevice);
-        /** Generates tool-tip for passed USB @a comFilter. */
-        static QString toolTip(const CUSBDeviceFilter &comFilter);
-        /** Generates tool-tip for passed USB @a comWebcam. */
-        static QString toolTip(const CHostVideoInputDevice &comWebcam);
-    /** @} */
-
-    /** @name COM: Extension Pack stuff.
-     * @{ */
-        /** Initiates the extension pack installation process.
-          * @param  strFilePath      Brings the extension pack file path.
-          * @param  strDigest        Brings the extension pack file digest.
-          * @param  pParent          Brings the parent dialog reference.
-          * @param  pstrExtPackName  Brings the extension pack name. */
-        void doExtPackInstallation(QString const &strFilePath,
-                                   QString const &strDigest,
-                                   QWidget *pParent,
-                                   QString *pstrExtPackName) const;
-    /** @} */
-
-    /** @name Display stuff.
-     * @{ */
-        /** Inner worker for lazily querying for 3D support. */
-        bool is3DAvailableWorker() const;
-        /** Returns whether 3D is available, runs worker above if necessary. */
-        bool is3DAvailable() const;
-
-#ifdef VBOX_WITH_CRHGSMI
-        /** Returns whether guest OS type with passed @a strGuestOSTypeId is WDDM compatible. */
-        static bool isWddmCompatibleOsType(const QString &strGuestOSTypeId);
-#endif
-        /** Returns the required video memory in bytes for the current desktop
-          * resolution at maximum possible screen depth in bpp. */
-        static quint64 requiredVideoMemory(const QString &strGuestOSTypeId, int cMonitors = 1);
-    /** @} */
-
-    /** @name Thread stuff.
-     * @{ */
-        /** Returns the thread-pool instance. */
-        UIThreadPool *threadPool() const { return m_pThreadPool; }
-    /** @} */
-
-    /** @name Icon/Pixmap stuff.
-     * @{ */
-        /** Returns icon defined for a passed @a comMachine. */
-        QIcon vmUserIcon(const CMachine &comMachine) const;
-        /** Returns pixmap of a passed @a size defined for a passed @a comMachine. */
-        QPixmap vmUserPixmap(const CMachine &comMachine, const QSize &size) const;
-        /** Returns pixmap defined for a passed @a comMachine.
-          * In case if non-null @a pLogicalSize pointer provided, it will be updated properly. */
-        QPixmap vmUserPixmapDefault(const CMachine &comMachine, QSize *pLogicalSize = 0) const;
-
-        /** Returns pixmap corresponding to passed @a strOSTypeID. */
-        QIcon vmGuestOSTypeIcon(const QString &strOSTypeID) const;
-        /** Returns pixmap corresponding to passed @a strOSTypeID and @a size. */
-        QPixmap vmGuestOSTypePixmap(const QString &strOSTypeID, const QSize &size) const;
-        /** Returns pixmap corresponding to passed @a strOSTypeID.
-          * In case if non-null @a pLogicalSize pointer provided, it will be updated properly. */
-        QPixmap vmGuestOSTypePixmapDefault(const QString &strOSTypeID, QSize *pLogicalSize = 0) const;
-
-        /** Returns default icon of certain @a enmType. */
-        QIcon icon(QFileIconProvider::IconType enmType) { return m_fileIconProvider.icon(enmType); }
-        /** Returns file icon fetched from passed file @a info. */
-        QIcon icon(const QFileInfo &info) { return m_fileIconProvider.icon(info); }
-
-        /** Returns cached default warning pixmap. */
-        QPixmap warningIcon() const { return m_pixWarning; }
-        /** Returns cached default error pixmap. */
-        QPixmap errorIcon() const { return m_pixError; }
-
-        /** Joins two pixmaps horizontally with 2px space between them and returns the result. */
-        static QPixmap joinPixmaps(const QPixmap &pixmap1, const QPixmap &pixmap2);
-    /** @} */
-
-public slots:
-
-    /** @name Process arguments stuff.
-     * @{ */
-        /** Opens the specified URL using OS/Desktop capabilities. */
-        bool openURL(const QString &strURL) const;
-    /** @} */
-
-    /** @name Localization stuff.
-     * @{ */
-        /** Handles language change to new @a strLanguage. */
-        void sltGUILanguageChange(QString strLanguage);
-    /** @} */
-
-protected:
-
-    /** Preprocesses any Qt @a pEvent for passed @a pObject. */
-    virtual bool eventFilter(QObject *pObject, QEvent *pEvent) /* override */;
-
-    /** Handles translation event. */
-    virtual void retranslateUi() /* override */;
-
-protected slots:
-
-    /** Prepares all. */
-    void prepare();
-    /** Cleanups all. */
-    void cleanup();
-
-    /** @name Common stuff.
-     * @{ */
-        /** Handles @a manager request for emergency session shutdown. */
-        void sltHandleCommitDataRequest(QSessionManager &manager);
-    /** @} */
-
-    /** @name COM stuff.
-     * @{ */
-        /** Handles the VBoxSVC availability change. */
-        void sltHandleVBoxSVCAvailabilityChange(bool fAvailable);
-    /** @} */
-
-private:
-
-    /** Construcs global VirtualBox object of passed @a enmType. */
-    VBoxGlobal(UIType enmType);
-
-    /** Destrucs global VirtualBox object. */
-    virtual ~VBoxGlobal() /* override */;
-
-
-    /** @name COM: Virtual Media create functions.
-     * @{ */
-
-        /** Creates a VISO by using the VISO creator dialog.
-          * @param  pParent           Passes the dialog parent.
-          * @param  strDefaultFolder  Passes the folder to save the VISO file.
-          * @param  strMachineName    Passes the name of the machine, */
-        QUuid createVisoMediumWithVisoCreator(QWidget *pParent, const QString &strDefaultFolder = QString(), const QString &strMachineName = QString());
-
-        /** Creates and shows a dialog thru which user can create a new floppy disk a VISO using the file-open dialog.
-          * @param  parent            Passes the parent of the dialog,
-          * @param  strDefaultFolder  Passes the default folder,
-          * @param  strMachineName    Passes the name of the machine,
-          * returns the ID of the newly created medium if successful, a null QUuid otherwise.*/
-        QUuid showCreateFloppyDiskDialog(QWidget *pParent, const QString &strDefaultFolder = QString(),
-                                         const QString &strMachineName = QString());
-
-        /** Creates and shows a UIWizardNewVD wizard.
-          * @param  parent                    Passes the parent of the wizard,
-          * @param  strMachineFolder          Passes the machine folder,
-          * @param  strMachineName            Passes the name of the machine,
-          * @param  strMachineGuestOSTypeId   Passes the string of machine's guest OS type ID,
-          * returns the ID of the  created hard disk if successful, a null QUuid otherwise.*/
-        QUuid createHDWithNewHDWizard(QWidget *pParent, const QString &strMachineFolder = QString(),
-                                      const QString &strMachineName = QString(), const QString &strMachineGuestOSTypeId = QString());
-    /** @} */
-
-    /** @name Common stuff.
-     * @{ */
-#ifdef VBOX_WS_WIN
-        /** Wraps WinAPI ShutdownBlockReasonCreate function. */
-        static BOOL ShutdownBlockReasonCreateAPI(HWND hWnd, LPCWSTR pwszReason);
-#endif
-    /** @} */
-
-    /** @name Process arguments stuff.
-     * @{ */
-#ifdef VBOX_WITH_DEBUGGER_GUI
-        /** Initializes a debugger config variable.
-          * @param  piDbgCfgVar       Brings the debugger config variable to init.
-          * @param  pszEnvVar         Brings the environment variable name relating to this variable.
-          * @param  pszExtraDataName  Brings the extra data name relating to this variable.
-          * @param  fDefault          Brings the default value. */
-        void initDebuggerVar(int *piDbgCfgVar, const char *pszEnvVar, const char *pszExtraDataName, bool fDefault = false);
-        /** Set a debugger config variable according according to start up argument.
-          * @param  piDbgCfgVar  Brings the debugger config variable to set.
-          * @param  fState       Brings the value from the command line. */
-        void setDebuggerVar(int *piDbgCfgVar, bool fState);
-        /** Checks the state of a debugger config variable, updating it with the machine settings on the first invocation.
-          * @param  piDbgCfgVar       Brings the debugger config variable to consult.
-          * @param  pszExtraDataName  Brings the extra data name relating to this variable. */
-        bool isDebuggerWorker(int *piDbgCfgVar, const char *pszExtraDataName) const;
-#endif
-    /** @} */
-
-    /** @name COM stuff.
-     * @{ */
-        /** Re-initializes COM wrappers and containers. */
-        void comWrappersReinit();
-    /** @} */
-
-    /** Holds the singleton VBoxGlobal instance. */
-    static VBoxGlobal *s_pInstance;
-
-    /** @name Common stuff.
-     * @{ */
-        /** Holds whether VBoxGlobal cleanup is in progress. */
-        static bool  s_fCleaningUp;
-
-        /** Holds the currently loaded language ID. */
-        static QString  s_strLoadedLanguageId;
-
-        /** Holds the tr("User Defined") port name. */
-        static QString  s_strUserDefinedPortName;
-
-        /** Holds the UI type. */
-        UIType  m_enmType;
-
-        /** Holds whether VBoxGlobal instance is properly initialized. */
-        bool  m_fValid;
-
-#ifdef VBOX_WS_MAC
-        /** Mac OS X: Holds the #MacOSXRelease determined using <i>uname</i> call. */
-        MacOSXRelease  m_enmMacOSVersion;
-#endif
-
-#ifdef VBOX_WS_X11
-        /** X11: Holds the #X11WMType of the Window Manager we are running under. */
-        X11WMType  m_enmWindowManagerType;
-        /** X11: Holds whether the Window Manager we are running at is composition one. */
-        bool       m_fCompositingManagerRunning;
-#endif
-
-        /** Holds the VBox branding config file path. */
-        QString  m_strBrandingConfigFilePath;
-    /** @} */
-
-    /** @name Process arguments stuff.
-     * @{ */
-        /** Holds the URL arguments list. */
-        QList<QUrl>  m_listArgUrls;
-
-        /** Holds the --startvm option value (managed VM id). */
-        QUuid  m_strManagedVMId;
-        /** Holds the --separate option value (whether GUI process is separate from VM process). */
-        bool     m_fSeparateProcess;
-        /** Holds the --no-startvm-errormsgbox option value (whether startup VM errors are disabled). */
-        bool     m_fShowStartVMErrors;
-
-        /** Holds the --aggressive-caching / --no-aggressive-caching option value (whether medium-enumeration is required). */
-        bool  m_fAgressiveCaching;
-
-        /** Holds the --restore-current option value. */
-        bool  m_fRestoreCurrentSnapshot;
-
-        /** Holds the --fda option value (floppy image). */
-        QUuid  m_strFloppyImage;
-        /** Holds the --dvd | --cdrom option value (DVD image). */
-        QUuid  m_strDvdImage;
-
-        /** Holds the --disable-patm option value. */
-        bool      m_fDisablePatm;
-        /** Holds the --disable-csam option value. */
-        bool      m_fDisableCsam;
-        /** Holds the --recompile-supervisor option value. */
-        bool      m_fRecompileSupervisor;
-        /** Holds the --recompile-user option value. */
-        bool      m_fRecompileUser;
-        /** Holds the --execute-all-in-iem option value. */
-        bool      m_fExecuteAllInIem;
-        /** Holds the --warp-factor option value. */
-        uint32_t  m_uWarpPct;
-
-#ifdef VBOX_WITH_DEBUGGER_GUI
-        /** Holds whether the debugger should be accessible. */
-        mutable int  m_fDbgEnabled;
-        /** Holds whether to show the debugger automatically with the console. */
-        mutable int  m_fDbgAutoShow;
-        /** Holds whether to show the command line window when m_fDbgAutoShow is set. */
-        mutable int  m_fDbgAutoShowCommandLine;
-        /** Holds whether to show the statistics window when m_fDbgAutoShow is set. */
-        mutable int  m_fDbgAutoShowStatistics;
-        /** VBoxDbg module handle. */
-        RTLDRMOD     m_hVBoxDbg;
-
-        /** Holds whether --start-running, --start-paused or nothing was given. */
-        enum LaunchRunning  m_enmLaunchRunning;
-#endif
-
-        /** Holds the --settingspw option value or the content of --settingspwfile. */
-        char  m_astrSettingsPw[256];
-        /** Holds the --settingspwfile option value. */
-        bool  m_fSettingsPwSet;
-
-#ifdef VBOX_GUI_WITH_PIDFILE
-        /** Holds the --pidfile option value (application PID file path). */
-        QString m_strPidFile;
-#endif
-    /** @} */
-
-    /** @name COM stuff.
-     * @{ */
-        /** Holds the COM cleanup protection token. */
-        QReadWriteLock  m_comCleanupProtectionToken;
-
-        /** Holds the instance of VirtualBox client wrapper. */
-        CVirtualBoxClient  m_comVBoxClient;
-        /** Holds the copy of VirtualBox object wrapper. */
-        CVirtualBox        m_comVBox;
-        /** Holds the copy of VirtualBox host-object wrapper. */
-        CHost              m_comHost;
-        /** Holds the symbolic VirtualBox home-folder representation. */
-        QString            m_strHomeFolder;
-
-        /** Holds whether acquired COM wrappers are currently valid. */
-        bool  m_fWrappersValid;
-        /** Holds whether VBoxSVC is currently available. */
-        bool  m_fVBoxSVCAvailable;
-
-        /** Holds the guest OS family IDs. */
-        QList<QString>               m_guestOSFamilyIDs;
-        /** Holds the guest OS family descriptions. */
-        QMap<QString, QString>       m_guestOSFamilyDescriptions;
-        /** Holds the guest OS types for each family ID. */
-        QList<QList<CGuestOSType> >  m_guestOSTypes;
-    /** @} */
-
-    /** @name Display stuff.
-     * @{ */
-        /** Holds whether 3D is available. */
-        mutable int  m_i3DAvailable;
-    /** @} */
-
-    /** @name Thread stuff.
-     * @{ */
-        /** Holds the thread-pool instance. */
-        UIThreadPool *m_pThreadPool;
-    /** @} */
-
-    /** @name Icon/Pixmap stuff.
-     * @{ */
-        /** Holds the general icon-pool instance. */
-        UIIconPoolGeneral *m_pIconPool;
-
-        /** Holds the global file icon provider instance. */
-        QFileIconProvider  m_fileIconProvider;
-
-        /** Holds the warning pixmap. */
-        QPixmap  m_pixWarning;
-        /** Holds the error pixmap. */
-        QPixmap  m_pixError;
-    /** @} */
-
-    /** @name Media related stuff.
-     * @{ */
-        /** Holds the medium enumerator cleanup protection token. */
-        mutable QReadWriteLock  m_meCleanupProtectionToken;
-
-        /** Holds the medium enumerator. */
-        UIMediumEnumerator *m_pMediumEnumerator;
-        /** List of medium names that should not appears in the recently used media extra data. */
-        QStringList         m_recentMediaExcludeList;
-    /** @} */
-
-#if defined(VBOX_WS_WIN)
-    /** @name ATL stuff.
-     * @{ */
-        /** Holds the ATL module instance (for use with VBoxGlobal shared library only).
-          * @note  Required internally by ATL (constructor records instance in global variable). */
-        ATL::CComModule _Module;
-    /** @} */
-#endif
-
-    /** Allows for shortcut access. */
-    friend VBoxGlobal &vboxGlobal();
-};
-
-/** Singleton VBoxGlobal 'official' name. */
-inline VBoxGlobal &vboxGlobal() { return *VBoxGlobal::instance(); }
-
-#endif /* !FEQT_INCLUDED_SRC_globals_VBoxGlobal_h */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIFileManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIFileManager.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIFileManager.cpp	(revision 79365)
@@ -36,5 +36,5 @@
 #include "UIGuestControlInterface.h"
 #include "UIToolBar.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -664,5 +664,5 @@
 
     /* Make sure VBoxSVC is available: */
-    if (!vboxGlobal().isVBoxSVCAvailable())
+    if (!uiCommon().isVBoxSVCAvailable())
         return;
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIFileManagerDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIFileManagerDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIFileManagerDialog.cpp	(revision 79365)
@@ -26,5 +26,5 @@
 #include "UIFileManager.h"
 #include "UIFileManagerDialog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #ifdef VBOX_WS_MAC
 # include "VBoxUtils-darwin.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIFileManagerTable.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIFileManagerTable.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIFileManagerTable.cpp	(revision 79365)
@@ -32,5 +32,5 @@
 #include "QILineEdit.h"
 #include "QIToolButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPool.h"
 #include "UICustomFileSystemModel.h"
@@ -1480,5 +1480,5 @@
 /* static */ QString UIFileManagerTable::humanReadableSize(ULONG64 size)
 {
-    return vboxGlobal().formatSize(size);
+    return uiCommon().formatSize(size);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlInterface.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlInterface.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlInterface.cpp	(revision 79365)
@@ -19,5 +19,5 @@
 #include "UIErrorString.h"
 #include "UIGuestControlInterface.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlTreeItem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlTreeItem.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlTreeItem.cpp	(revision 79365)
@@ -21,5 +21,5 @@
 #include "UIGuestControlTreeItem.h"
 #include "UIGuestProcessControlWidget.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -90,5 +90,5 @@
 
     /* Make sure VBoxSVC is available: */
-    if (!vboxGlobal().isVBoxSVCAvailable())
+    if (!uiCommon().isVBoxSVCAvailable())
         return;
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlDialog.cpp	(revision 79365)
@@ -26,5 +26,5 @@
 #include "UIGuestControlConsole.h"
 #include "UIGuestProcessControlDialog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #ifdef VBOX_WS_MAC
 # include "VBoxUtils-darwin.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlWidget.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlWidget.cpp	(revision 79365)
@@ -33,5 +33,5 @@
 #include "UIIconPool.h"
 #include "UIVMInformationDialog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -528,5 +528,5 @@
 
     /* Make sure VBoxSVC is available: */
-    if (!vboxGlobal().isVBoxSVCAvailable())
+    if (!uiCommon().isVBoxSVCAvailable())
         return;
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/hardenedmain.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/hardenedmain.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/hardenedmain.cpp	(revision 79365)
@@ -49,5 +49,5 @@
     {
         /* NOTE: the check here must match the corresponding check for the
-         * options to start a VM in main.cpp and VBoxGlobal.cpp exactly,
+         * options to start a VM in main.cpp and UICommon.cpp exactly,
          * otherwise there will be weird error messages. */
         if (   !MyStrCmp(argv[i], "--startvm")
Index: /trunk/src/VBox/Frontends/VirtualBox/src/hostnetwork/UIHostNetworkManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/hostnetwork/UIHostNetworkManager.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/hostnetwork/UIHostNetworkManager.cpp	(revision 79365)
@@ -36,5 +36,5 @@
 # include "UIWindowMenuManager.h"
 #endif /* VBOX_WS_MAC */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -265,5 +265,5 @@
 
     /* Get host for further activities: */
-    CHost comHost = vboxGlobal().host();
+    CHost comHost = uiCommon().host();
 
     /* Find corresponding interface: */
@@ -314,5 +314,5 @@
             {
                 /* Get VBox for further activities: */
-                CVirtualBox comVBox = vboxGlobal().virtualBox();
+                CVirtualBox comVBox = uiCommon().virtualBox();
 
                 /* Find corresponding DHCP server (create if necessary): */
@@ -377,5 +377,5 @@
 {
     /* Get host for further activities: */
-    CHost comHost = vboxGlobal().host();
+    CHost comHost = uiCommon().host();
 
     /* Create interface: */
@@ -405,5 +405,5 @@
             {
                 /* Get VBox for further activities: */
-                CVirtualBox comVBox = vboxGlobal().virtualBox();
+                CVirtualBox comVBox = uiCommon().virtualBox();
 
                 /* Find corresponding DHCP server (create if necessary): */
@@ -442,5 +442,5 @@
 
     /* Get host for further activities: */
-    CHost comHost = vboxGlobal().host();
+    CHost comHost = uiCommon().host();
 
     /* Find corresponding interface: */
@@ -467,5 +467,5 @@
         {
             /* Get VBox for further activities: */
-            CVirtualBox comVBox = vboxGlobal().virtualBox();
+            CVirtualBox comVBox = uiCommon().virtualBox();
 
             /* Find corresponding DHCP server: */
@@ -565,5 +565,5 @@
 
     /* Get host for further activities: */
-    CHost comHost = vboxGlobal().host();
+    CHost comHost = uiCommon().host();
 
     /* Find corresponding interface: */
@@ -584,5 +584,5 @@
         {
             /* Get VBox for further activities: */
-            CVirtualBox comVBox = vboxGlobal().virtualBox();
+            CVirtualBox comVBox = uiCommon().virtualBox();
 
             /* Find corresponding DHCP server (create if necessary): */
@@ -826,5 +826,5 @@
 
     /* Get host for further activities: */
-    const CHost comHost = vboxGlobal().host();
+    const CHost comHost = uiCommon().host();
 
     /* Get interfaces for further activities: */
@@ -882,5 +882,5 @@
 
     /* Get VBox for further activities: */
-    CVirtualBox comVBox = vboxGlobal().virtualBox();
+    CVirtualBox comVBox = uiCommon().virtualBox();
 
     /* Find corresponding DHCP server (create if necessary): */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerDialog.cpp	(revision 79365)
@@ -34,5 +34,5 @@
 #include "UIVMLogViewerDialog.h"
 #include "UIVMLogViewerWidget.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #ifdef VBOX_WS_MAC
 # include "VBoxUtils-darwin.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerWidget.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerWidget.cpp	(revision 79365)
@@ -45,5 +45,5 @@
 #include "UIVMLogViewerOptionsPanel.h"
 #include "UIToolBar.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -798,5 +798,5 @@
     }
 
-    const CSystemProperties &sys = vboxGlobal().virtualBox().GetSystemProperties();
+    const CSystemProperties &sys = uiCommon().virtualBox().GetSystemProperties();
     unsigned cMaxLogs = sys.GetLogHistoryCount() + 1 /*VBox.log*/ + 1 /*VBoxHardening.log*/; /** @todo Add api for getting total possible log count! */
     bool logFileRead = false;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/main.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/main.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/main.cpp	(revision 79365)
@@ -26,5 +26,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIStarter.h"
 #include "UIModalWindowManager.h"
@@ -442,5 +442,5 @@
 #ifdef VBOX_WS_MAC
         /* Apply font fixes (before QApplication get created and instantiated font-hints): */
-        switch (VBoxGlobal::determineOsRelease())
+        switch (UICommon::determineOsRelease())
         {
             case MacOSXRelease_Mavericks: QFont::insertSubstitution(".Lucida Grande UI", "Lucida Grande"); break;
@@ -511,10 +511,10 @@
 
         /* Qt version check (major.minor are sensitive, fix number is ignored): */
-        if (VBoxGlobal::qtRTVersion() < (VBoxGlobal::qtCTVersion() & 0xFFFF00))
+        if (UICommon::qtRTVersion() < (UICommon::qtCTVersion() & 0xFFFF00))
         {
             QString strMsg = QApplication::tr("Executable <b>%1</b> requires Qt %2.x, found Qt %3.")
                                               .arg(qAppName())
-                                              .arg(VBoxGlobal::qtCTVersionString().section('.', 0, 1))
-                                              .arg(VBoxGlobal::qtRTVersionString());
+                                              .arg(UICommon::qtCTVersionString().section('.', 0, 1))
+                                              .arg(UICommon::qtRTVersionString());
             QMessageBox::critical(0, QApplication::tr("Incompatible Qt Library Error"),
                                   strMsg, QMessageBox::Abort, 0);
@@ -531,8 +531,8 @@
 #ifndef VBOX_RUNTIME_UI
         /* Create global app instance for Selector UI: */
-        VBoxGlobal::create(VBoxGlobal::UIType_SelectorUI);
+        UICommon::create(UICommon::UIType_SelectorUI);
 #else
         /* Create global app instance for Runtime UI: */
-        VBoxGlobal::create(VBoxGlobal::UIType_RuntimeUI);
+        UICommon::create(UICommon::UIType_RuntimeUI);
 #endif
 
@@ -540,6 +540,6 @@
         do
         {
-            /* Exit if VBoxGlobal is not valid: */
-            if (!vboxGlobal().isValid())
+            /* Exit if UICommon is not valid: */
+            if (!uiCommon().isValid())
                 break;
 
@@ -547,6 +547,6 @@
             gStarter->init();
 
-            /* Exit if VBoxGlobal pre-processed arguments: */
-            if (vboxGlobal().processArgs())
+            /* Exit if UICommon pre-processed arguments: */
+            if (uiCommon().processArgs())
                 break;
 
@@ -574,5 +574,5 @@
 
         /* Destroy global app instance: */
-        VBoxGlobal::destroy();
+        UICommon::destroy();
         /* Destroy UI starter: */
         UIStarter::destroy();
@@ -610,5 +610,5 @@
     {
         /* NOTE: the check here must match the corresponding check for the
-         * options to start a VM in hardenedmain.cpp and VBoxGlobal.cpp exactly,
+         * options to start a VM in hardenedmain.cpp and UICommon.cpp exactly,
          * otherwise there will be weird error messages. */
         if (   !::strcmp(argv[i], "--startvm")
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp	(revision 79365)
@@ -289,7 +289,7 @@
     /* Look for at least one inaccessible medium: */
     bool fIsThereAnyInaccessibleMedium = false;
-    foreach (const QUuid &uMediumID, vboxGlobal().mediumIDs())
-    {
-        if (vboxGlobal().medium(uMediumID).state() == KMediumState_Inaccessible)
+    foreach (const QUuid &uMediumID, uiCommon().mediumIDs())
+    {
+        if (uiCommon().medium(uMediumID).state() == KMediumState_Inaccessible)
         {
             fIsThereAnyInaccessibleMedium = true;
@@ -308,7 +308,7 @@
 void UIVirtualBoxManager::sltHandleOpenUrlCall(QList<QUrl> list /* = QList<QUrl>() */)
 {
-    /* If passed list is empty, we take the one from VBoxGlobal: */
+    /* If passed list is empty, we take the one from UICommon: */
     if (list.isEmpty())
-        list = vboxGlobal().takeArgumentUrls();
+        list = uiCommon().takeArgumentUrls();
 
     /* Check if we are can handle the dropped urls: */
@@ -324,16 +324,16 @@
         {
             /* And has allowed VBox config file extension: */
-            if (VBoxGlobal::hasAllowedExtension(strFile, VBoxFileExts))
+            if (UICommon::hasAllowedExtension(strFile, VBoxFileExts))
             {
                 /* Handle VBox config file: */
-                CVirtualBox comVBox = vboxGlobal().virtualBox();
+                CVirtualBox comVBox = uiCommon().virtualBox();
                 CMachine comMachine = comVBox.FindMachine(strFile);
                 if (comVBox.isOk() && comMachine.isNotNull())
-                    vboxGlobal().launchMachine(comMachine);
+                    uiCommon().launchMachine(comMachine);
                 else
                     sltOpenAddMachineDialog(strFile);
             }
             /* And has allowed VBox OVF file extension: */
-            else if (VBoxGlobal::hasAllowedExtension(strFile, OVFFileExts))
+            else if (UICommon::hasAllowedExtension(strFile, OVFFileExts))
             {
                 /* Allow only one file at the time: */
@@ -342,5 +342,5 @@
             }
             /* And has allowed VBox extension pack file extension: */
-            else if (VBoxGlobal::hasAllowedExtension(strFile, VBoxExtPackFileExts))
+            else if (UICommon::hasAllowedExtension(strFile, VBoxExtPackFileExts))
             {
 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER
@@ -349,5 +349,5 @@
 #endif
                 /* Propose the user to install EP described by the arguments @a list. */
-                vboxGlobal().doExtPackInstallation(strFile, QString(), this, NULL);
+                uiCommon().doExtPackInstallation(strFile, QString(), this, NULL);
 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER
                 /* Allow update manager to propose us to update EP: */
@@ -620,5 +620,5 @@
     QString strTmpFile = strFileName;
 #endif
-    CVirtualBox comVBox = vboxGlobal().virtualBox();
+    CVirtualBox comVBox = uiCommon().virtualBox();
 
     /* Lock the action preventing cascade calls: */
@@ -687,5 +687,5 @@
     if (!strCategory.isEmpty() && strCategory[0] != '#')
     {
-        vboxGlobal().openURL(strCategory);
+        uiCommon().openURL(strCategory);
     }
     else
@@ -746,5 +746,5 @@
 
     /* Open a session thru which we will modify the machine: */
-    CSession comSession = vboxGlobal().openSession(pItem->id(), KLockType_Write);
+    CSession comSession = uiCommon().openSession(pItem->id(), KLockType_Write);
     if (comSession.isNull())
         return;
@@ -755,5 +755,5 @@
 
     /* Open a file dialog for the user to select a destination folder. Start with the default machine folder: */
-    CVirtualBox comVBox = vboxGlobal().virtualBox();
+    CVirtualBox comVBox = uiCommon().virtualBox();
     QString strBaseFolder = comVBox.GetSystemProperties().GetDefaultMachineFolder();
     QString strTitle = tr("Select a destination folder to move the selected virtual machine");
@@ -781,5 +781,5 @@
     QList<UIVirtualMachineItem*> items = currentItems();
     AssertMsgReturnVoid(!items.isEmpty(), ("At least one item should be selected!\n"));
-    performStartOrShowVirtualMachines(items, VBoxGlobal::LaunchMode_Invalid);
+    performStartOrShowVirtualMachines(items, UICommon::LaunchMode_Invalid);
 }
 
@@ -789,5 +789,5 @@
     QList<UIVirtualMachineItem*> items = currentItems();
     AssertMsgReturnVoid(!items.isEmpty(), ("At least one item should be selected!\n"));
-    performStartOrShowVirtualMachines(items, VBoxGlobal::LaunchMode_Default);
+    performStartOrShowVirtualMachines(items, UICommon::LaunchMode_Default);
 }
 
@@ -797,5 +797,5 @@
     QList<UIVirtualMachineItem*> items = currentItems();
     AssertMsgReturnVoid(!items.isEmpty(), ("At least one item should be selected!\n"));
-    performStartOrShowVirtualMachines(items, VBoxGlobal::LaunchMode_Headless);
+    performStartOrShowVirtualMachines(items, UICommon::LaunchMode_Headless);
 }
 
@@ -805,5 +805,5 @@
     QList<UIVirtualMachineItem*> items = currentItems();
     AssertMsgReturnVoid(!items.isEmpty(), ("At least one item should be selected!\n"));
-    performStartOrShowVirtualMachines(items, VBoxGlobal::LaunchMode_Separate);
+    performStartOrShowVirtualMachines(items, UICommon::LaunchMode_Separate);
 }
 
@@ -835,5 +835,5 @@
     {
         /* Open a session to modify VM: */
-        CSession comSession = vboxGlobal().openSession(pItem->id());
+        CSession comSession = uiCommon().openSession(pItem->id());
         if (comSession.isNull())
             return;
@@ -880,5 +880,5 @@
 
         /* Open a session to modify VM state: */
-        CSession comSession = vboxGlobal().openExistingSession(pItem->id());
+        CSession comSession = uiCommon().openExistingSession(pItem->id());
         if (comSession.isNull())
             return;
@@ -931,5 +931,5 @@
     {
         /* Open a session to modify VM state: */
-        CSession comSession = vboxGlobal().openExistingSession(pItem->id());
+        CSession comSession = uiCommon().openExistingSession(pItem->id());
         if (comSession.isNull())
             return;
@@ -977,5 +977,5 @@
 
         /* Open a session to modify VM state: */
-        CSession comSession = vboxGlobal().openExistingSession(pItem->id());
+        CSession comSession = uiCommon().openExistingSession(pItem->id());
         if (comSession.isNull())
             return;
@@ -1037,5 +1037,5 @@
     {
         /* Open a session to modify VM state: */
-        CSession comSession = vboxGlobal().openExistingSession(pItem->id());
+        CSession comSession = uiCommon().openExistingSession(pItem->id());
         if (comSession.isNull())
             return;
@@ -1080,5 +1080,5 @@
     {
         /* Open a session to modify VM state: */
-        CSession comSession = vboxGlobal().openExistingSession(pItem->id());
+        CSession comSession = uiCommon().openExistingSession(pItem->id());
         if (comSession.isNull())
             return;
@@ -1259,5 +1259,5 @@
 #ifdef VBOX_WS_X11
     /* Assign same name to both WM_CLASS name & class for now: */
-    VBoxGlobal::setWMClass(this, "VirtualBox Manager", "VirtualBox Manager");
+    UICommon::setWMClass(this, "VirtualBox Manager", "VirtualBox Manager");
 #endif
 
@@ -1271,6 +1271,6 @@
 
     /* Cache medium data early if necessary: */
-    if (vboxGlobal().agressiveCaching())
-        vboxGlobal().startMediumEnumeration();
+    if (uiCommon().agressiveCaching())
+        uiCommon().startMediumEnumeration();
 
     /* Prepare: */
@@ -1293,5 +1293,5 @@
 #ifdef VBOX_WS_MAC
     /* Beta label? */
-    if (vboxGlobal().isBeta())
+    if (uiCommon().isBeta())
     {
         QPixmap betaLabel = ::betaLabel(QSize(100, 16));
@@ -1301,5 +1301,5 @@
 
     /* If there are unhandled URLs we should handle them after manager is shown: */
-    if (vboxGlobal().argumentUrlsPresent())
+    if (uiCommon().argumentUrlsPresent())
         QMetaObject::invokeMethod(this, "sltHandleOpenUrlCall", Qt::QueuedConnection);
 }
@@ -1388,5 +1388,5 @@
 
     /* Medium enumeration connections: */
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumEnumerationFinished,
+    connect(&uiCommon(), &UICommon::sigMediumEnumerationFinished,
             this, &UIVirtualBoxManager::sltHandleMediumEnumerationFinish);
 
@@ -1625,5 +1625,5 @@
 }
 
-void UIVirtualBoxManager::performStartOrShowVirtualMachines(const QList<UIVirtualMachineItem*> &items, VBoxGlobal::LaunchMode enmLaunchMode)
+void UIVirtualBoxManager::performStartOrShowVirtualMachines(const QList<UIVirtualMachineItem*> &items, UICommon::LaunchMode enmLaunchMode)
 {
     /* Do nothing while group saving is in progress: */
@@ -1658,13 +1658,13 @@
         {
             /* Fetch item launch mode: */
-            VBoxGlobal::LaunchMode enmItemLaunchMode = enmLaunchMode;
-            if (enmItemLaunchMode == VBoxGlobal::LaunchMode_Invalid)
-                enmItemLaunchMode = UIVirtualMachineItem::isItemRunningHeadless(pItem) ? VBoxGlobal::LaunchMode_Separate :
-                                    qApp->keyboardModifiers() == Qt::ShiftModifier     ? VBoxGlobal::LaunchMode_Headless :
-                                                                                         VBoxGlobal::LaunchMode_Default;
+            UICommon::LaunchMode enmItemLaunchMode = enmLaunchMode;
+            if (enmItemLaunchMode == UICommon::LaunchMode_Invalid)
+                enmItemLaunchMode = UIVirtualMachineItem::isItemRunningHeadless(pItem) ? UICommon::LaunchMode_Separate :
+                                    qApp->keyboardModifiers() == Qt::ShiftModifier     ? UICommon::LaunchMode_Headless :
+                                                                                         UICommon::LaunchMode_Default;
 
             /* Launch current VM: */
             CMachine machine = pItem->machine();
-            vboxGlobal().launchMachine(machine, enmItemLaunchMode);
+            uiCommon().launchMachine(machine, enmItemLaunchMode);
         }
     }
@@ -2037,5 +2037,5 @@
             continue;
         /* Skip session failures: */
-        CSession session = vboxGlobal().openExistingSession(pItem->id());
+        CSession session = uiCommon().openExistingSession(pItem->id());
         if (session.isNull())
             continue;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h	(revision 79365)
@@ -28,5 +28,5 @@
 #include "QIMainWindow.h"
 #include "QIWithRetranslateUI.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* Forward declarations: */
@@ -300,5 +300,5 @@
       * @{ */
         /** Launches or shows virtual machines represented by passed @a items in corresponding @a enmLaunchMode (for launch). */
-        void performStartOrShowVirtualMachines(const QList<UIVirtualMachineItem*> &items, VBoxGlobal::LaunchMode enmLaunchMode);
+        void performStartOrShowVirtualMachines(const QList<UIVirtualMachineItem*> &items, UICommon::LaunchMode enmLaunchMode);
     /** @} */
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 /* GUI includes: */
 #include "UIVirtualMachineItem.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIConverter.h"
 #include "UIExtraDataManager.h"
@@ -165,5 +165,5 @@
          * UIMessageCenter::confirm_machineDeletion() */
         QFileInfo fi(m_strSettingsFile);
-        QString name = VBoxGlobal::hasAllowedExtension(fi.completeSuffix(), VBoxFileExts) ?
+        QString name = UICommon::hasAllowedExtension(fi.completeSuffix(), VBoxFileExts) ?
                        fi.completeBaseName() : fi.fileName();
         needsResort = name != m_strName;
@@ -197,8 +197,8 @@
     {
         /* First, we are trying to acquire personal machine guest OS type icon: */
-        m_pixmap = vboxGlobal().vmUserPixmapDefault(m_machine, &m_logicalPixmapSize);
+        m_pixmap = uiCommon().vmUserPixmapDefault(m_machine, &m_logicalPixmapSize);
         /* If there is nothing, we are using icon corresponding to cached guest OS type: */
         if (m_pixmap.isNull())
-            m_pixmap = vboxGlobal().vmGuestOSTypePixmapDefault(m_strOSTypeId, &m_logicalPixmapSize);
+            m_pixmap = uiCommon().vmGuestOSTypePixmapDefault(m_strOSTypeId, &m_logicalPixmapSize);
     }
     /* Otherwise: */
@@ -206,5 +206,5 @@
     {
         /* We are using "Other" guest OS type icon: */
-        m_pixmap = vboxGlobal().vmGuestOSTypePixmapDefault("Other", &m_logicalPixmapSize);
+        m_pixmap = uiCommon().vmGuestOSTypePixmapDefault("Other", &m_logicalPixmapSize);
     }
 }
@@ -242,5 +242,5 @@
 #if defined (VBOX_WS_WIN) || defined (VBOX_WS_X11)
 
-    return vboxGlobal().activateWindow(id, true);
+    return uiCommon().activateWindow(id, true);
 
 #elif defined (VBOX_WS_MAC)
@@ -313,5 +313,5 @@
     {
         /* Open session to determine which frontend VM is started with: */
-        CSession session = vboxGlobal().openExistingSession(pItem->id());
+        CSession session = uiCommon().openExistingSession(pItem->id());
         if (!session.isNull())
         {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooser.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooser.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooser.cpp	(revision 79365)
@@ -24,5 +24,5 @@
 #include "UIChooserView.h"
 #include "UIVirtualBoxManagerWidget.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserAbstractModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserAbstractModel.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserAbstractModel.cpp	(revision 79365)
@@ -17,5 +17,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIChooser.h"
 #include "UIChooserAbstractModel.h"
@@ -210,5 +210,5 @@
         {
             /* Add new machine-item: */
-            const CMachine comMachine = vboxGlobal().virtualBox().FindMachine(uMachineId.toString());
+            const CMachine comMachine = uiCommon().virtualBox().FindMachine(uMachineId.toString());
             addMachineIntoTheTree(comMachine, true /* make it visible */);
         }
@@ -239,5 +239,5 @@
     {
         /* Add new machine-item: */
-        const CMachine comMachine = vboxGlobal().virtualBox().FindMachine(uMachineId.toString());
+        const CMachine comMachine = uiCommon().virtualBox().FindMachine(uMachineId.toString());
         addMachineIntoTheTree(comMachine, true /* make it visible */);
     }
@@ -315,5 +315,5 @@
         /* Add all the approved machine nodes into the tree: */
         LogRelFlow(("UIChooserModel: Loading VMs...\n"));
-        foreach (const CMachine &comMachine, vboxGlobal().virtualBox().GetMachines())
+        foreach (const CMachine &comMachine, uiCommon().virtualBox().GetMachines())
         {
             const QUuid uMachineID = comMachine.GetId();
@@ -757,5 +757,5 @@
         {
             /* 1. Open session: */
-            session = vboxGlobal().openSession(QUuid(strId));
+            session = uiCommon().openSession(QUuid(strId));
             if (session.isNull())
                 break;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 79365)
@@ -26,5 +26,5 @@
 /* GUI includes: */
 #include "QIMessageBox.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPoolManager.h"
 #include "UIChooser.h"
@@ -229,5 +229,5 @@
     {
         /* Check if machine-item with passed descriptor (name or id) registered: */
-        CMachine comMachine = vboxGlobal().virtualBox().FindMachine(strItemDescriptor);
+        CMachine comMachine = uiCommon().virtualBox().FindMachine(strItemDescriptor);
         if (!comMachine.isNull())
         {
@@ -659,5 +659,5 @@
 
             /* Select newly added item: */
-            CMachine comMachine = vboxGlobal().virtualBox().FindMachine(uId.toString());
+            CMachine comMachine = uiCommon().virtualBox().FindMachine(uId.toString());
             setSelectedItem(root()->searchForItem(comMachine.GetName(),
                                                  UIChooserItemSearchFlag_Machine |
@@ -681,5 +681,5 @@
 
         /* Select newly added item: */
-        CMachine comMachine = vboxGlobal().virtualBox().FindMachine(uId.toString());
+        CMachine comMachine = uiCommon().virtualBox().FindMachine(uId.toString());
         setSelectedItem(root()->searchForItem(comMachine.GetName(),
                                              UIChooserItemSearchFlag_Machine |
@@ -1130,5 +1130,5 @@
     {
         /* Check if Ext Pack is ready, some of actions my depend on it: */
-        CExtPack extPack = vboxGlobal().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
+        CExtPack extPack = uiCommon().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
         const bool fExtPackAccessible = !extPack.isNull() && extPack.GetUsable();
 
@@ -1509,5 +1509,5 @@
     /* Populate machine list: */
     QList<CMachine> machines;
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
     foreach (const QUuid &uId, ids)
     {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp	(revision 79365)
@@ -35,5 +35,5 @@
 #include "UIIconPool.h"
 #include "UIVirtualBoxManager.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 
@@ -429,5 +429,5 @@
 
         /* Fill storage-menu: */
-        vboxGlobal().prepareStorageMenu(menu, this, SLOT(sltMountStorageMedium()),
+        uiCommon().prepareStorageMenu(menu, this, SLOT(sltMountStorageMedium()),
                                         machine(), strControllerName, storageSlot);
 
@@ -447,5 +447,5 @@
 
     /* Update current machine mount-target: */
-    vboxGlobal().updateMachineStorage(machine(), target);
+    uiCommon().updateMachineStorage(machine(), target);
 }
 
@@ -605,7 +605,7 @@
 {
     if (m_fNameHovered)
-        VBoxGlobal::setCursor(this, Qt::PointingHandCursor);
+        UICommon::setCursor(this, Qt::PointingHandCursor);
     else
-        VBoxGlobal::unsetCursor(this);
+        UICommon::unsetCursor(this);
     update();
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp	(revision 79365)
@@ -27,5 +27,5 @@
 #include "UIMachinePreview.h"
 #include "UIGraphicsRotatorButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIIconPool.h"
 #include "UIConverter.h"
@@ -63,5 +63,5 @@
 {
     /* Listen for the global thread-pool: */
-    connect(vboxGlobal().threadPool(), SIGNAL(sigTaskComplete(UITask*)),
+    connect(uiCommon().threadPool(), SIGNAL(sigTaskComplete(UITask*)),
             this, SLOT(sltUpdateAppearanceFinished(UITask*)));
 
@@ -87,5 +87,5 @@
         m_pTask = createUpdateTask();
         /* Post task into global thread-pool: */
-        vboxGlobal().threadPool()->enqueueTask(m_pTask);
+        uiCommon().threadPool()->enqueueTask(m_pTask);
     }
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsGroup.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsGroup.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsGroup.cpp	(revision 79365)
@@ -28,5 +28,5 @@
 #include "UIExtraDataManager.h"
 #include "UIVirtualMachineItem.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsModel.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsModel.cpp	(revision 79365)
@@ -32,5 +32,5 @@
 #include "UIDetailsElement.h"
 #include "UIExtraDataManager.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.cpp	(revision 79365)
@@ -27,5 +27,5 @@
 #include "UIVirtualBoxEventHandler.h"
 #include "UIVirtualMachineItem.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -579,6 +579,6 @@
 
     /* Meidum-enumeration connections: */
-    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerationStarted()), this, SLOT(sltUpdateAppearance()));
-    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerationFinished()), this, SLOT(sltUpdateAppearance()));
+    connect(&uiCommon(), SIGNAL(sigMediumEnumerationStarted()), this, SLOT(sltUpdateAppearance()));
+    connect(&uiCommon(), SIGNAL(sigMediumEnumerationFinished()), this, SLOT(sltUpdateAppearance()));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIMachinePreview.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIMachinePreview.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIMachinePreview.cpp	(revision 79365)
@@ -30,5 +30,5 @@
 #include "UIConverter.h"
 #include "UIIconPool.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UITools.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UITools.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UITools.cpp	(revision 79365)
@@ -24,5 +24,5 @@
 #include "UIToolsView.h"
 #include "UIVirtualBoxManagerWidget.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsModel.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsModel.cpp	(revision 79365)
@@ -28,5 +28,5 @@
 /* GUI includes: */
 #include "QIMessageBox.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPoolManager.h"
 #include "UIIconPool.h"
@@ -450,5 +450,5 @@
 {
     /* Check if Ext Pack is ready, some of actions my depend on it: */
-    CExtPack extPack = vboxGlobal().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
+    CExtPack extPack = uiCommon().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
     const bool fExtPackAccessible = !extPack.isNull() && extPack.GetUsable();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIFDCreationDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIFDCreationDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIFDCreationDialog.cpp	(revision 79365)
@@ -29,5 +29,5 @@
 #include "UIMedium.h"
 #include "UIMessageCenter.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -161,5 +161,5 @@
     QString strInitialPath = m_strDefaultFolder;
     if (strInitialPath.isEmpty())
-        strInitialPath = vboxGlobal().virtualBox().GetSystemProperties().GetDefaultMachineFolder();
+        strInitialPath = uiCommon().virtualBox().GetSystemProperties().GetDefaultMachineFolder();
 
     if (strInitialPath.isEmpty())
@@ -167,5 +167,5 @@
 
     QString strDiskname = !(m_strMachineName.isEmpty()) ? m_strMachineName : "NewFloppyDisk";
-    strDiskname = VBoxGlobal::findUniqueFileName(m_strDefaultFolder, strDiskname);
+    strDiskname = UICommon::findUniqueFileName(m_strDefaultFolder, strDiskname);
 
     strInitialPath = QDir(strInitialPath).absoluteFilePath(strDiskname + "." + strPreferredExtension);
@@ -180,5 +180,5 @@
         return;
 
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
     QString strMediumLocation = m_pFilePathselector->path();
 
@@ -215,6 +215,6 @@
     m_uMediumID = newMedium.GetId();
 
-    /* Notify VBoxGlobal about the new medium: */
-    vboxGlobal().createMedium(UIMedium(newMedium, UIMediumDeviceType_Floppy, KMediumState_Created));
+    /* Notify UICommon about the new medium: */
+    uiCommon().createMedium(UIMedium(newMedium, UIMediumDeviceType_Floppy, KMediumState_Created));
 
     /* After a successful creation and initilization of the floppy disk we call base class accept
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMedium.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMedium.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMedium.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 /* GUI includes: */
 #include "UIMedium.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIConverter.h"
 #include "UIErrorString.h"
@@ -157,5 +157,5 @@
 
     /* Reset name/location/description/size parameters: */
-    m_strName = QApplication::translate("VBoxGlobal", "Empty", "medium");
+    m_strName = QApplication::translate("UICommon", "Empty", "medium");
     m_strLocation = m_strSize = m_strLogicalSize = QString("--");
     m_strDescription = QString();
@@ -212,7 +212,7 @@
             m_strName = m_medium.GetName();
         else if (m_strDescription.isEmpty())
-            m_strName = QApplication::translate("VBoxGlobal", "Host Drive '%1'", "medium").arg(QDir::toNativeSeparators(m_medium.GetLocation()));
+            m_strName = QApplication::translate("UICommon", "Host Drive '%1'", "medium").arg(QDir::toNativeSeparators(m_medium.GetLocation()));
         else
-            m_strName = QApplication::translate("VBoxGlobal", "Host Drive %1 (%2)", "medium").arg(m_strDescription, m_medium.GetName());
+            m_strName = QApplication::translate("UICommon", "Host Drive %1 (%2)", "medium").arg(m_strDescription, m_medium.GetName());
         /* Refresh medium location: */
         if (!m_fHostDrive)
@@ -226,9 +226,9 @@
             {
                 m_uSize = m_medium.GetSize();
-                m_strSize = vboxGlobal().formatSize(m_uSize);
+                m_strSize = uiCommon().formatSize(m_uSize);
                 if (m_type == UIMediumDeviceType_HardDisk)
                 {
                     m_uLogicalSize = m_medium.GetLogicalSize();
-                    m_strLogicalSize = vboxGlobal().formatSize(m_uLogicalSize);
+                    m_strLogicalSize = uiCommon().formatSize(m_uLogicalSize);
                 }
                 else
@@ -314,5 +314,5 @@
         {
             /* Get CVirtualBox object: */
-            CVirtualBox vbox = vboxGlobal().virtualBox();
+            CVirtualBox vbox = uiCommon().virtualBox();
 
             /* By default we assuming that this medium is attached
@@ -392,14 +392,14 @@
         if (m_type == UIMediumDeviceType_HardDisk)
         {
-            m_strToolTip += m_sstrRow.arg(QApplication::translate("VBoxGlobal", "<p style=white-space:pre>Type (Format):  %1 (%2)</p>", "medium")
+            m_strToolTip += m_sstrRow.arg(QApplication::translate("UICommon", "<p style=white-space:pre>Type (Format):  %1 (%2)</p>", "medium")
                                                                   .arg(m_strHardDiskType).arg(m_strHardDiskFormat));
         }
-        m_strToolTip += m_sstrRow.arg(QApplication::translate("VBoxGlobal", "<p>Attached to:  %1</p>", "image")
-                                                              .arg(m_strUsage.isNull() ? QApplication::translate("VBoxGlobal", "<i>Not Attached</i>", "image") : m_strUsage));
+        m_strToolTip += m_sstrRow.arg(QApplication::translate("UICommon", "<p>Attached to:  %1</p>", "image")
+                                                              .arg(m_strUsage.isNull() ? QApplication::translate("UICommon", "<i>Not Attached</i>", "image") : m_strUsage));
         switch (m_state)
         {
             case KMediumState_NotCreated:
             {
-                m_strToolTip += m_sstrRow.arg(QApplication::translate("VBoxGlobal", "<i>Checking accessibility...</i>", "medium"));
+                m_strToolTip += m_sstrRow.arg(QApplication::translate("UICommon", "<i>Checking accessibility...</i>", "medium"));
                 break;
             }
@@ -409,10 +409,10 @@
                 {
                     /* Not Accessible: */
-                    m_strToolTip += m_sstrRow.arg("<hr>") + m_sstrRow.arg(VBoxGlobal::highlight(m_strLastAccessError, true /* aToolTip */));
+                    m_strToolTip += m_sstrRow.arg("<hr>") + m_sstrRow.arg(UICommon::highlight(m_strLastAccessError, true /* aToolTip */));
                 }
                 else
                 {
                     /* Accessibility check (eg GetState()) itself failed: */
-                    m_strToolTip += m_sstrRow.arg("<hr>") + m_sstrRow.arg(QApplication::translate("VBoxGlobal", "Failed to check accessibility of disk image files.", "medium")) +
+                    m_strToolTip += m_sstrRow.arg("<hr>") + m_sstrRow.arg(QApplication::translate("UICommon", "Failed to check accessibility of disk image files.", "medium")) +
                                     m_sstrRow.arg(UIErrorString::formatErrorInfo(m_result) + ".");
                 }
@@ -442,8 +442,8 @@
     if (m_medium.isNull())
     {
-        strTip = fNullAllowed ? m_sstrRow.arg(QApplication::translate("VBoxGlobal", "<b>No disk image file selected</b>", "medium")) +
-                                m_sstrRow.arg(QApplication::translate("VBoxGlobal", "You can also change this while the machine is running.")) :
-                                m_sstrRow.arg(QApplication::translate("VBoxGlobal", "<b>No disk image files available</b>", "medium")) +
-                                m_sstrRow.arg(QApplication::translate("VBoxGlobal", "You can create or add disk image files in the virtual machine settings."));
+        strTip = fNullAllowed ? m_sstrRow.arg(QApplication::translate("UICommon", "<b>No disk image file selected</b>", "medium")) +
+                                m_sstrRow.arg(QApplication::translate("UICommon", "You can also change this while the machine is running.")) :
+                                m_sstrRow.arg(QApplication::translate("UICommon", "<b>No disk image files available</b>", "medium")) +
+                                m_sstrRow.arg(QApplication::translate("UICommon", "You can create or add disk image files in the virtual machine settings."));
     }
     else
@@ -455,5 +455,5 @@
         if (fCheckRO && m_fReadOnly)
             strTip += m_sstrRow.arg("<hr>") +
-                      m_sstrRow.arg(QApplication::translate("VBoxGlobal",
+                      m_sstrRow.arg(QApplication::translate("UICommon",
                                                             "Attaching this hard disk will be performed indirectly using "
                                                             "a newly created differencing hard disk.", "medium"));
@@ -468,10 +468,10 @@
 
     if (state(fNoDiffs) == KMediumState_Inaccessible)
-        pixmap = result(fNoDiffs).isOk() ? vboxGlobal().warningIcon() : vboxGlobal().errorIcon();
+        pixmap = result(fNoDiffs).isOk() ? uiCommon().warningIcon() : uiCommon().errorIcon();
 
     if (fCheckRO && m_fReadOnly)
     {
         QIcon icon = UIIconPool::iconSet(":/hd_new_16px.png");
-        pixmap = VBoxGlobal::joinPixmaps(pixmap, icon.pixmap(icon.availableSizes().value(0, QSize(16, 16))));
+        pixmap = UICommon::joinPixmaps(pixmap, icon.pixmap(icon.availableSizes().value(0, QSize(16, 16))));
     }
 
@@ -532,5 +532,5 @@
         /* Add encryption status: */
         if (m_fEncrypted)
-            strDetails += QString("%1, ").arg(QApplication::translate("VBoxGlobal", "Encrypted", "medium"));
+            strDetails += QString("%1, ").arg(QApplication::translate("UICommon", "Encrypted", "medium"));
     }
 
@@ -540,9 +540,9 @@
     {
         case KMediumState_NotCreated:
-            strText = QApplication::translate("VBoxGlobal", "Checking...", "medium");
+            strText = QApplication::translate("UICommon", "Checking...", "medium");
             strDetails += fUseHTML ? QString("<i>%1</i>").arg(strText) : strText;
             break;
         case KMediumState_Inaccessible:
-            strText = QApplication::translate("VBoxGlobal", "Inaccessible", "medium");
+            strText = QApplication::translate("UICommon", "Inaccessible", "medium");
             strDetails += fUseHTML ? QString("<b>%1</b>").arg(strText) : strText;
             break;
@@ -593,12 +593,12 @@
 UIMedium UIMedium::root() const
 {
-    /* Redirect call to VBoxGlobal: */
-    return vboxGlobal().medium(m_uRootId);
+    /* Redirect call to UICommon: */
+    return uiCommon().medium(m_uRootId);
 }
 
 UIMedium UIMedium::parent() const
 {
-    /* Redirect call to VBoxGlobal: */
-    return vboxGlobal().medium(m_uParentId);
+    /* Redirect call to UICommon: */
+    return uiCommon().medium(m_uParentId);
 }
 
@@ -618,5 +618,5 @@
 
             if (m_noDiffs.toolTip.isNull())
-                m_noDiffs.toolTip = m_sstrRow.arg(QApplication::translate("VBoxGlobal",
+                m_noDiffs.toolTip = m_sstrRow.arg(QApplication::translate("UICommon",
                                                                           "Some of the files in this hard disk chain "
                                                                           "are inaccessible. Please use the Virtual Medium "
@@ -635,5 +635,5 @@
         m_noDiffs.toolTip = root().tip() +
                             m_sstrRow.arg("<hr>") +
-                            m_sstrRow.arg(QApplication::translate("VBoxGlobal",
+                            m_sstrRow.arg(QApplication::translate("UICommon",
                                                                   "This base hard disk is indirectly attached using "
                                                                   "the following differencing hard disk:", "medium")) +
@@ -653,5 +653,5 @@
     {
         Assert(comMedium.GetType() == KMediumType_Normal);
-        return QApplication::translate("VBoxGlobal", "Differencing", "MediumType");
+        return QApplication::translate("UICommon", "Differencing", "MediumType");
     }
     return gpConverter->toString(comMedium.GetType());
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDefs.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDefs.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDefs.cpp	(revision 79365)
@@ -18,5 +18,5 @@
 /* GUI includes: */
 #include "UIMediumDefs.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -106,5 +106,5 @@
 QString UIMediumDefs::getPreferredExtensionForMedium(KDeviceType enmDeviceType)
 {
-    CSystemProperties comSystemProperties = vboxGlobal().virtualBox().GetSystemProperties();
+    CSystemProperties comSystemProperties = uiCommon().virtualBox().GetSystemProperties();
     QVector<CMediumFormat> mediumFormats = comSystemProperties.GetMediumFormats();
     for (int i = 0; i < mediumFormats.size(); ++i)
@@ -128,5 +128,5 @@
 QVector<CMediumFormat> UIMediumDefs::getFormatsForDeviceType(KDeviceType enmDeviceType)
 {
-    CSystemProperties comSystemProperties = vboxGlobal().virtualBox().GetSystemProperties();
+    CSystemProperties comSystemProperties = uiCommon().virtualBox().GetSystemProperties();
     QVector<CMediumFormat> mediumFormats = comSystemProperties.GetMediumFormats();
     QVector<CMediumFormat> formatList;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.cpp	(revision 79365)
@@ -38,5 +38,5 @@
 #include "UIMediumManager.h"
 #include "UIMediumSizeEditor.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -777,6 +777,6 @@
     if (!pWidget || pWidget == m_pErrorPaneSize)
         m_pErrorPaneSize->setToolTip(tr("Cannot change medium size from <b>%1</b> to <b>%2</b> as storage shrinking is currently not implemented.")
-                                        .arg(vboxGlobal().formatSize(m_oldData.m_options.m_uLogicalSize))
-                                        .arg(vboxGlobal().formatSize(m_newData.m_options.m_uLogicalSize)));
+                                        .arg(uiCommon().formatSize(m_oldData.m_options.m_uLogicalSize))
+                                        .arg(uiCommon().formatSize(m_newData.m_options.m_uLogicalSize)));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumEnumerator.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumEnumerator.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumEnumerator.cpp	(revision 79365)
@@ -20,5 +20,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMediumEnumerator.h"
 #include "UIMessageCenter.h"
@@ -128,5 +128,5 @@
 
     /* Prepare global thread-pool listener: */
-    connect(vboxGlobal().threadPool(), &UIThreadPool::sigTaskComplete,
+    connect(uiCommon().threadPool(), &UIThreadPool::sigTaskComplete,
             this, &UIMediumEnumerator::sltHandleMediumEnumerationTaskComplete);
 }
@@ -203,9 +203,9 @@
         m_fMediumEnumerationRequested = true;
 #endif
-        addMediaToMap(vboxGlobal().virtualBox().GetHardDisks(), media);
-        addMediaToMap(vboxGlobal().host().GetDVDDrives(), media);
-        addMediaToMap(vboxGlobal().virtualBox().GetDVDImages(), media);
-        addMediaToMap(vboxGlobal().host().GetFloppyDrives(), media);
-        addMediaToMap(vboxGlobal().virtualBox().GetFloppyImages(), media);
+        addMediaToMap(uiCommon().virtualBox().GetHardDisks(), media);
+        addMediaToMap(uiCommon().host().GetDVDDrives(), media);
+        addMediaToMap(uiCommon().virtualBox().GetDVDImages(), media);
+        addMediaToMap(uiCommon().host().GetFloppyDrives(), media);
+        addMediaToMap(uiCommon().virtualBox().GetFloppyImages(), media);
     }
     else
@@ -214,11 +214,11 @@
         m_fMediumEnumerationRequested = false;
 #endif
-        addMediaToMap(vboxGlobal().host().GetDVDDrives(), media);
-        addMediaToMap(vboxGlobal().virtualBox().GetDVDImages(), media);
+        addMediaToMap(uiCommon().host().GetDVDDrives(), media);
+        addMediaToMap(uiCommon().virtualBox().GetDVDImages(), media);
         addMediaToMap(comMedia, media);
     }
 
-    /* VBoxGlobal is cleaning up, abort immediately: */
-    if (VBoxGlobal::isCleaningUp())
+    /* UICommon is cleaning up, abort immediately: */
+    if (UICommon::isCleaningUp())
         return;
 
@@ -257,6 +257,6 @@
     addMediaToMap(inputMedia, media);
 
-    /* VBoxGlobal is cleaning up, abort immediately: */
-    if (VBoxGlobal::isCleaningUp())
+    /* UICommon is cleaning up, abort immediately: */
+    if (UICommon::isCleaningUp())
         return;
 
@@ -468,5 +468,5 @@
         {
             /* Get VBox for temporary usage, it will cache the error info: */
-            CVirtualBox comVBox = vboxGlobal().virtualBox();
+            CVirtualBox comVBox = uiCommon().virtualBox();
             /* Open existing medium, this API can be used to open known medium as well, using ID as location for that: */
             CMedium comMedium = comVBox.OpenMedium(uMediumId.toString(), enmMediumType, KAccessMode_ReadWrite, false);
@@ -609,5 +609,5 @@
     m_tasks << pTask;
     /* Post into global thread-pool: */
-    vboxGlobal().threadPool()->enqueueTask(pTask);
+    uiCommon().threadPool()->enqueueTask(pTask);
 }
 
@@ -627,6 +627,6 @@
     foreach (const CMedium &comMedium, inputMedia)
     {
-        /* If VBoxGlobal is cleaning up, abort immediately: */
-        if (VBoxGlobal::isCleaningUp())
+        /* If UICommon is cleaning up, abort immediately: */
+        if (UICommon::isCleaningUp())
             break;
 
@@ -673,5 +673,5 @@
 {
     /* Search for corresponding machine: */
-    CMachine comMachine = vboxGlobal().virtualBox().FindMachine(uMachineID.toString());
+    CMachine comMachine = uiCommon().virtualBox().FindMachine(uMachineID.toString());
     if (comMachine.isNull())
     {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumItem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumItem.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumItem.cpp	(revision 79365)
@@ -27,5 +27,5 @@
 #include "UIMediumItem.h"
 #include "UIMessageCenter.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -169,6 +169,6 @@
 {
     int iColumn = treeWidget()->sortColumn();
-    ULONG64 uThisValue = vboxGlobal().parseSize(      text(iColumn));
-    ULONG64 uThatValue = vboxGlobal().parseSize(other.text(iColumn));
+    ULONG64 uThisValue = uiCommon().parseSize(      text(iColumn));
+    ULONG64 uThatValue = uiCommon().parseSize(other.text(iColumn));
     return uThisValue && uThatValue ? uThisValue < uThatValue : QTreeWidgetItem::operator<(other);
 }
@@ -182,5 +182,5 @@
     foreach (const QUuid &uMachineId, medium().curStateMachineIds())
     {
-        CMachine comMachine = vboxGlobal().virtualBox().FindMachine(uMachineId.toString());
+        CMachine comMachine = uiCommon().virtualBox().FindMachine(uMachineId.toString());
         if (comMachine.isNull())
             continue;
@@ -205,5 +205,5 @@
     foreach (const QUuid &uMachineId, medium().curStateMachineIds())
     {
-        const CMachine &comMachine = vboxGlobal().virtualBox().FindMachine(uMachineId.toString());
+        const CMachine &comMachine = uiCommon().virtualBox().FindMachine(uMachineId.toString());
         if (comMachine.isNull())
             continue;
@@ -228,5 +228,5 @@
 
     /* Search for corresponding medium: */
-    CMedium comMedium = vboxGlobal().medium(id()).medium();
+    CMedium comMedium = uiCommon().medium(id()).medium();
 
     /* Attempt to change medium type: */
@@ -320,5 +320,5 @@
 {
     /* Open session: */
-    CSession session = vboxGlobal().openSession(uMachineId);
+    CSession session = uiCommon().openSession(uMachineId);
     if (session.isNull())
         return false;
@@ -356,5 +356,5 @@
 
     /* Open session: */
-    CSession session = vboxGlobal().openSession(attachmentCache.m_uMachineId);
+    CSession session = uiCommon().openSession(attachmentCache.m_uMachineId);
     if (session.isNull())
         return false;
@@ -441,5 +441,5 @@
 #ifndef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
     /* Remove UIMedium finally: */
-    vboxGlobal().deleteMedium(uMediumID);
+    uiCommon().deleteMedium(uMediumID);
 #endif
 
@@ -568,5 +568,5 @@
 #ifndef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
     /* Remove UIMedium finally: */
-    vboxGlobal().deleteMedium(uMediumID);
+    uiCommon().deleteMedium(uMediumID);
 #endif
 
@@ -643,5 +643,5 @@
 #ifndef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
     /* Remove UIMedium finally: */
-    vboxGlobal().deleteMedium(uMediumID);
+    uiCommon().deleteMedium(uMediumID);
 #endif
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 79365)
@@ -31,5 +31,5 @@
 #include "QIMessageBox.h"
 #include "QITabWidget.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPoolManager.h"
 #include "UIExtraDataManager.h"
@@ -268,5 +268,5 @@
 
     /* Search for corresponding medium: */
-    CMedium comMedium = vboxGlobal().medium(pMediumItem->id()).medium();
+    CMedium comMedium = uiCommon().medium(pMediumItem->id()).medium();
 
     /* Try to assign new medium type: */
@@ -314,6 +314,6 @@
             msgCenter().cannotResizeHardDiskStorage(comMedium,
                                                     oldData.m_options.m_strLocation,
-                                                    vboxGlobal().formatSize(oldData.m_options.m_uLogicalSize),
-                                                    vboxGlobal().formatSize(newData.m_options.m_uLogicalSize),
+                                                    uiCommon().formatSize(oldData.m_options.m_uLogicalSize),
+                                                    uiCommon().formatSize(newData.m_options.m_uLogicalSize),
                                                     this);
         else
@@ -327,6 +327,6 @@
                 msgCenter().cannotResizeHardDiskStorage(comProgress,
                                                         oldData.m_options.m_strLocation,
-                                                        vboxGlobal().formatSize(oldData.m_options.m_uLogicalSize),
-                                                        vboxGlobal().formatSize(newData.m_options.m_uLogicalSize),
+                                                        uiCommon().formatSize(oldData.m_options.m_uLogicalSize),
+                                                        uiCommon().formatSize(newData.m_options.m_uLogicalSize),
                                                         this);
         }
@@ -356,5 +356,5 @@
 {
     /* Search for corresponding medium: */
-    UIMedium medium = vboxGlobal().medium(uMediumID);
+    UIMedium medium = uiCommon().medium(uMediumID);
 
     /* Ignore non-interesting media: */
@@ -379,5 +379,5 @@
      * we have to choose newly added medium-item as current one: */
     if (   !m_fPreventChangeCurrentItem
-        && (   !vboxGlobal().isMediumEnumerationInProgress()
+        && (   !uiCommon().isMediumEnumerationInProgress()
             || !mediumItem(medium.type())))
         setCurrentItem(treeWidget(medium.type()), pMediumItem);
@@ -403,5 +403,5 @@
     if (m_pProgressBar)
     {
-        m_pProgressBar->setMaximum(vboxGlobal().mediumIDs().size());
+        m_pProgressBar->setMaximum(uiCommon().mediumIDs().size());
         m_pProgressBar->setValue(0);
         m_pProgressBar->show();
@@ -432,5 +432,5 @@
 {
     /* Search for corresponding medium: */
-    UIMedium medium = vboxGlobal().medium(uMediumID);
+    UIMedium medium = uiCommon().medium(uMediumID);
 
     /* Ignore non-interesting media: */
@@ -486,6 +486,6 @@
 void UIMediumManagerWidget::sltAddMedium()
 {
-    QString strDefaultMachineFolder = vboxGlobal().virtualBox().GetSystemProperties().GetDefaultMachineFolder();
-    vboxGlobal().openMediumWithFileOpenDialog(currentMediumType(), this,
+    QString strDefaultMachineFolder = uiCommon().virtualBox().GetSystemProperties().GetDefaultMachineFolder();
+    uiCommon().openMediumWithFileOpenDialog(currentMediumType(), this,
                                               strDefaultMachineFolder, true /* use most recent medium folder */);
 }
@@ -493,5 +493,5 @@
 void UIMediumManagerWidget::sltCreateMedium()
 {
-    vboxGlobal().openMediumCreatorDialog(this, currentMediumType());
+    uiCommon().openMediumCreatorDialog(this, currentMediumType());
 }
 
@@ -580,5 +580,5 @@
 {
     /* Start medium-enumeration: */
-    vboxGlobal().startMediumEnumeration();
+    uiCommon().startMediumEnumeration();
 }
 
@@ -696,9 +696,9 @@
     /* Start medium-enumeration (if necessary): */
 #ifndef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
-    if (!vboxGlobal().isMediumEnumerationInProgress())
+    if (!uiCommon().isMediumEnumerationInProgress())
 #else
-    if (!vboxGlobal().isFullMediumEnumerationRequested())
+    if (!uiCommon().isFullMediumEnumerationRequested())
 #endif
-        vboxGlobal().startMediumEnumeration();
+        uiCommon().startMediumEnumeration();
     /* Emulate medium-enumeration otherwise: */
     else
@@ -708,5 +708,5 @@
 
         /* Finish medium-enumeration (if necessary): */
-        if (!vboxGlobal().isMediumEnumerationInProgress())
+        if (!uiCommon().isMediumEnumerationInProgress())
             sltHandleMediumEnumerationFinish();
     }
@@ -720,15 +720,15 @@
 
     /* Configure medium-processing connections: */
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumCreated,
+    connect(&uiCommon(), &UICommon::sigMediumCreated,
             this, &UIMediumManagerWidget::sltHandleMediumCreated);
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumDeleted,
+    connect(&uiCommon(), &UICommon::sigMediumDeleted,
             this, &UIMediumManagerWidget::sltHandleMediumDeleted);
 
     /* Configure medium-enumeration connections: */
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumEnumerationStarted,
+    connect(&uiCommon(), &UICommon::sigMediumEnumerationStarted,
             this, &UIMediumManagerWidget::sltHandleMediumEnumerationStart);
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumEnumerated,
+    connect(&uiCommon(), &UICommon::sigMediumEnumerated,
             this, &UIMediumManagerWidget::sltHandleMediumEnumerated);
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumEnumerationFinished,
+    connect(&uiCommon(), &UICommon::sigMediumEnumerationFinished,
             this, &UIMediumManagerWidget::sltHandleMediumEnumerationFinish);
 }
@@ -1002,5 +1002,5 @@
     /* Create medium-items (do not change current one): */
     m_fPreventChangeCurrentItem = true;
-    foreach (const QUuid &uMediumID, vboxGlobal().mediumIDs())
+    foreach (const QUuid &uMediumID, uiCommon().mediumIDs())
         sltHandleMediumCreated(uMediumID);
     m_fPreventChangeCurrentItem = false;
@@ -1065,5 +1065,5 @@
 
     /* Calculate actions accessibility: */
-    bool fNotInEnumeration = !vboxGlobal().isMediumEnumerationInProgress();
+    bool fNotInEnumeration = !uiCommon().isMediumEnumerationInProgress();
 
     /* Apply actions accessibility: */
@@ -1134,5 +1134,5 @@
 
             if (m_pTabWidget)
-                m_pTabWidget->setTabIcon(tabIndex(mediumType), vboxGlobal().warningIcon());
+                m_pTabWidget->setTabIcon(tabIndex(mediumType), uiCommon().warningIcon());
 
             break;
@@ -1171,5 +1171,5 @@
             {
                 if (*pfInaccessible)
-                    m_pTabWidget->setTabIcon(tabIndex(mediumType), vboxGlobal().warningIcon());
+                    m_pTabWidget->setTabIcon(tabIndex(mediumType), uiCommon().warningIcon());
                 else
                     m_pTabWidget->setTabIcon(tabIndex(mediumType), *pIcon);
@@ -1300,5 +1300,5 @@
                 {
                     /* Make sure corresponding parent medium is already cached! */
-                    UIMedium parentMedium = vboxGlobal().medium(medium.parentID());
+                    UIMedium parentMedium = uiCommon().medium(medium.parentID());
                     if (parentMedium.isNull())
                         AssertMsgFailed(("Parent medium with ID={%s} was not found!\n", medium.parentID().toString().toUtf8().constData()));
@@ -1359,7 +1359,7 @@
 #ifdef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
     /* Update all the children recursively as well: */
-    foreach(const QUuid &uMediumId, vboxGlobal().mediumIDs())
-    {
-        UIMedium guiMedium = vboxGlobal().medium(uMediumId);
+    foreach(const QUuid &uMediumId, uiCommon().mediumIDs())
+    {
+        UIMedium guiMedium = uiCommon().medium(uMediumId);
         if (   !guiMedium.isNull()
             && guiMedium.parentID() == medium.id())
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h	(revision 79365)
@@ -148,7 +148,7 @@
     /** @name Medium operation stuff.
       * @{ */
-        /** Handles VBoxGlobal::sigMediumCreated signal. */
+        /** Handles UICommon::sigMediumCreated signal. */
         void sltHandleMediumCreated(const QUuid &uMediumID);
-        /** Handles VBoxGlobal::sigMediumDeleted signal. */
+        /** Handles UICommon::sigMediumDeleted signal. */
         void sltHandleMediumDeleted(const QUuid &uMediumID);
     /** @} */
@@ -156,9 +156,9 @@
     /** @name Medium enumeration stuff.
       * @{ */
-        /** Handles VBoxGlobal::sigMediumEnumerationStarted signal. */
+        /** Handles UICommon::sigMediumEnumerationStarted signal. */
         void sltHandleMediumEnumerationStart();
-        /** Handles VBoxGlobal::sigMediumEnumerated signal. */
+        /** Handles UICommon::sigMediumEnumerated signal. */
         void sltHandleMediumEnumerated(const QUuid &uMediumID);
-        /** Handles VBoxGlobal::sigMediumEnumerationFinished signal. */
+        /** Handles UICommon::sigMediumEnumerationFinished signal. */
         void sltHandleMediumEnumerationFinish();
         void sltHandleMachineStateChange(const QUuid &uId, const KMachineState state);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp	(revision 79365)
@@ -29,5 +29,5 @@
 #include "QITabWidget.h"
 #include "QIToolButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDesktopWidgetWatchdog.h"
 #include "UIExtraDataManager.h"
@@ -82,9 +82,9 @@
     /* Start medium-enumeration (if necessary): */
 #ifndef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
-    if (vboxGlobal().uiType() == VBoxGlobal::UIType_RuntimeUI)
+    if (uiCommon().uiType() == UICommon::UIType_RuntimeUI)
 #else
-    if (!vboxGlobal().isFullMediumEnumerationRequested())
+    if (!uiCommon().isFullMediumEnumerationRequested())
 #endif
-        vboxGlobal().startMediumEnumeration();
+        uiCommon().startMediumEnumeration();
     configure();
     finalize();
@@ -239,9 +239,9 @@
 {
     /* Configure medium-enumeration connections: */
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumEnumerationStarted,
+    connect(&uiCommon(), &UICommon::sigMediumEnumerationStarted,
             this, &UIMediumSelector::sltHandleMediumEnumerationStart);
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumEnumerated,
+    connect(&uiCommon(), &UICommon::sigMediumEnumerated,
             this, &UIMediumSelector::sltHandleMediumEnumerated);
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumEnumerationFinished,
+    connect(&uiCommon(), &UICommon::sigMediumEnumerationFinished,
             this, &UIMediumSelector::sltHandleMediumEnumerationFinish);
     if (m_pActionAdd)
@@ -313,5 +313,5 @@
         {
             /* Make sure corresponding parent medium is already cached! */
-            UIMedium parentMedium = vboxGlobal().medium(medium.parentID());
+            UIMedium parentMedium = uiCommon().medium(medium.parentID());
             if (parentMedium.isNull())
                 AssertMsgFailed(("Parent medium with ID={%s} was not found!\n", medium.parentID().toString().toUtf8().constData()));
@@ -445,5 +445,5 @@
 void UIMediumSelector::sltAddMedium()
 {
-    QUuid uMediumID = vboxGlobal().openMediumWithFileOpenDialog(m_enmMediumType, this, m_strMachineFolder);
+    QUuid uMediumID = uiCommon().openMediumWithFileOpenDialog(m_enmMediumType, this, m_strMachineFolder);
     if (uMediumID.isNull())
         return;
@@ -454,5 +454,5 @@
 void UIMediumSelector::sltCreateMedium()
 {
-    QUuid uMediumId = vboxGlobal().openMediumCreatorDialog(this, m_enmMediumType, m_strMachineFolder,
+    QUuid uMediumId = uiCommon().openMediumCreatorDialog(this, m_enmMediumType, m_strMachineFolder,
                                                            m_strMachineName, m_strMachineGuestOSTypeId);
     if (uMediumId.isNull())
@@ -501,5 +501,5 @@
 {
     /* Initialize media enumation: */
-    vboxGlobal().startMediumEnumeration();
+    uiCommon().startMediumEnumeration();
     /* Update the search: */
     m_pSearchWidget->search(m_pTreeWidget);
@@ -620,5 +620,5 @@
 
     if (m_pParent)
-        VBoxGlobal::centerWidget(this, m_pParent, false);
+        UICommon::centerWidget(this, m_pParent, false);
 
 }
@@ -639,7 +639,7 @@
     QVector<UIMediumItem*> menuItemVector;
 
-    foreach (const QUuid &uMediumID, vboxGlobal().mediumIDs())
-    {
-        UIMedium medium = vboxGlobal().medium(uMediumID);
+    foreach (const QUuid &uMediumID, uiCommon().mediumIDs())
+    {
+        UIMedium medium = uiCommon().medium(uMediumID);
         if (medium.type() == m_enmMediumType)
         {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.cpp	(revision 79365)
@@ -33,5 +33,5 @@
 #include "UIVisoCreatorOptionsPanel.h"
 #include "UIVisoContentBrowser.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #ifdef VBOX_WS_MAC
 # include "VBoxUtils-darwin.h"
@@ -611,5 +611,5 @@
 #else /* VBOX_WS_MAC */
     /* Use the new approach for Windows/X11: */
-    VBoxGlobal::setTopLevelGeometry(this, geometry);
+    UICommon::setTopLevelGeometry(this, geometry);
 #endif /* !VBOX_WS_MAC */
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UIDownloader.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UIDownloader.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UIDownloader.cpp	(revision 79365)
@@ -17,5 +17,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "VBoxUtils.h"
 #include "UIDownloader.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UIDownloaderAdditions.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UIDownloaderAdditions.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UIDownloaderAdditions.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 /* GUI includes: */
 #include "QIFileDialog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDownloaderAdditions.h"
 #include "UIMessageCenter.h"
@@ -52,5 +52,5 @@
 
     /* Get version number and adjust it for test and trunk builds. The server only has official releases. */
-    const QString strVersion = UIVersion(vboxGlobal().vboxVersionStringNormalized()).effectiveReleasedVersion().toString();
+    const QString strVersion = UIVersion(uiCommon().vboxVersionStringNormalized()).effectiveReleasedVersion().toString();
 
     /* Prepare source/target: */
@@ -59,5 +59,5 @@
     const QString strSource = strSourcePath + strSourceName;
     const QString strPathSHA256SumsFile = QString("https://www.virtualbox.org/download/hashes/%1/SHA256SUMS").arg(strVersion);
-    const QString strTarget = QDir(vboxGlobal().homeFolder()).absoluteFilePath(QString("%1.tmp").arg(strSourceName));
+    const QString strTarget = QDir(uiCommon().homeFolder()).absoluteFilePath(QString("%1.tmp").arg(strSourceName));
 
     /* Set source/target: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UIDownloaderExtensionPack.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UIDownloaderExtensionPack.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UIDownloaderExtensionPack.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 /* GUI includes: */
 #include "QIFileDialog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDownloaderExtensionPack.h"
 #include "UIMessageCenter.h"
@@ -52,5 +52,5 @@
 
     /* Get version number and adjust it for test and trunk builds. The server only has official releases. */
-    const QString strVersion = UIVersion(vboxGlobal().vboxVersionStringNormalized()).effectiveReleasedVersion().toString();
+    const QString strVersion = UIVersion(uiCommon().vboxVersionStringNormalized()).effectiveReleasedVersion().toString();
 
     /* Prepare source/target: */
@@ -60,5 +60,5 @@
     const QString strSource = strSourcePath + strSourceName;
     const QString strPathSHA256SumsFile = QString("https://www.virtualbox.org/download/hashes/%1/SHA256SUMS").arg(strVersion);
-    const QString strTarget = QDir(vboxGlobal().homeFolder()).absoluteFilePath(strSourceName);
+    const QString strTarget = QDir(uiCommon().homeFolder()).absoluteFilePath(strSourceName);
 
     /* Set source/target: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UIDownloaderUserManual.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UIDownloaderUserManual.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UIDownloaderUserManual.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 /* GUI includes: */
 #include "QIFileDialog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDownloaderUserManual.h"
 #include "UIMessageCenter.h"
@@ -49,8 +49,8 @@
 
     /* Get version number and adjust it for test and trunk builds. The server only has official releases. */
-    const QString strVersion = UIVersion(vboxGlobal().vboxVersionStringNormalized()).effectiveReleasedVersion().toString();
+    const QString strVersion = UIVersion(uiCommon().vboxVersionStringNormalized()).effectiveReleasedVersion().toString();
 
     /* Compose User Manual filename: */
-    QString strUserManualFullFileName = vboxGlobal().helpFile();
+    QString strUserManualFullFileName = uiCommon().helpFile();
     QString strUserManualShortFileName = QFileInfo(strUserManualFullFileName).fileName();
 
@@ -62,5 +62,5 @@
 
     /* Set target: */
-    QString strUserManualDestination = QDir(vboxGlobal().homeFolder()).absoluteFilePath(strUserManualShortFileName);
+    QString strUserManualDestination = QDir(uiCommon().homeFolder()).absoluteFilePath(strUserManualShortFileName);
     setTarget(strUserManualDestination);
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkManager.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkManager.cpp	(revision 79365)
@@ -21,5 +21,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UINetworkCustomer.h"
 #include "UINetworkManager.h"
@@ -65,5 +65,5 @@
 {
     /* For Selector UI only: */
-    AssertReturn(vboxGlobal().uiType() == VBoxGlobal::UIType_SelectorUI, 0);
+    AssertReturn(uiCommon().uiType() == UICommon::UIType_SelectorUI, 0);
 
     /* Create network-manager state-indicator: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkManagerDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkManagerDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkManagerDialog.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 /* GUI includes: */
 #include "QIDialogButtonBox.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIIconPool.h"
 #include "UIMessageCenter.h"
@@ -167,5 +167,5 @@
 
     /* Center according current main application window: */
-    vboxGlobal().centerWidget(this, windowManager().mainWindowShown(), false);
+    uiCommon().centerWidget(this, windowManager().mainWindowShown(), false);
 
     /* Pass event to the base-class: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkManagerIndicator.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkManagerIndicator.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkManagerIndicator.cpp	(revision 79365)
@@ -17,5 +17,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIIconPool.h"
 #include "UINetworkManagerIndicator.h"
@@ -62,6 +62,6 @@
             QString strStatus(data.failed ? tr("failed", "network operation") :
                                             tr("(%1 of %2)")
-                                               .arg(vboxGlobal().formatSize(data.bytesReceived))
-                                               .arg(vboxGlobal().formatSize(data.bytesTotal)));
+                                               .arg(uiCommon().formatSize(data.bytesReceived))
+                                               .arg(uiCommon().formatSize(data.bytesTotal)));
             QString strBodyLine(strBodyItem.arg(strNobreak.arg(strDescription)).arg(strNobreak.arg(strStatus)));
             strBody += strBodyLine;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkReply.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkReply.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkReply.cpp	(revision 79365)
@@ -29,5 +29,5 @@
 #include "UIExtraDataManager.h"
 #ifndef VBOX_GUI_IN_TST_SSL_CERT_DOWNLOADS
-# include "VBoxGlobal.h"
+# include "UICommon.h"
 # include "VBoxUtils.h"
 # include "CSystemProperties.h"
@@ -384,5 +384,5 @@
     /* If the specific proxy settings are enabled, we'll use them
      * unless user disabled that functionality manually. */
-    const CSystemProperties comProperties = vboxGlobal().virtualBox().GetSystemProperties();
+    const CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     const KProxyMode enmProxyMode = comProperties.GetProxyMode();
     AssertReturn(comProperties.isOk(), VERR_INTERNAL_ERROR_3);
@@ -647,5 +647,5 @@
 {
 #ifndef VBOX_GUI_IN_TST_SSL_CERT_DOWNLOADS
-    const QDir homeDir(QDir::toNativeSeparators(vboxGlobal().homeFolder()));
+    const QDir homeDir(QDir::toNativeSeparators(uiCommon().homeFolder()));
     return QDir::toNativeSeparators(homeDir.absoluteFilePath(s_strCertificateFileName));
 #else /* VBOX_GUI_IN_TST_SSL_CERT_DOWNLOADS */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkRequest.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkRequest.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UINetworkRequest.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 #include "UINetworkManagerIndicator.h"
 #include "UINetworkCustomer.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UIUpdateDefs.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UIUpdateDefs.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UIUpdateDefs.cpp	(revision 79365)
@@ -21,5 +21,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIUpdateDefs.h"
 
@@ -97,5 +97,5 @@
 
     /* Return 'true' if saved version value is NOT valid or NOT equal to current: */
-    if (!version().isValid() || version() != UIVersion(vboxGlobal().vboxVersionStringNormalized()))
+    if (!version().isValid() || version() != UIVersion(uiCommon().vboxVersionStringNormalized()))
         return true;
 
@@ -214,5 +214,5 @@
 
         /* Encode 'version' value: */
-        QString versionValue = UIVersion(vboxGlobal().vboxVersionStringNormalized()).toString();
+        QString versionValue = UIVersion(uiCommon().vboxVersionStringNormalized()).toString();
 
         /* Composite m_strData: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 /* GUI includes: */
 #include "QIProcess.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "VBoxUtils.h"
 #include "UIDownloaderExtensionPack.h"
@@ -286,23 +286,23 @@
     /* Compose query: */
     QUrlQuery url;
-    url.addQueryItem("platform", vboxGlobal().virtualBox().GetPackageType());
+    url.addQueryItem("platform", uiCommon().virtualBox().GetPackageType());
     /* Check if branding is active: */
-    if (vboxGlobal().brandingIsActive())
+    if (uiCommon().brandingIsActive())
     {
         /* Branding: Check whether we have a local branding file which tells us our version suffix "FOO"
                      (e.g. 3.06.54321_FOO) to identify this installation: */
-        url.addQueryItem("version", QString("%1_%2_%3").arg(vboxGlobal().virtualBox().GetVersion())
-                                                       .arg(vboxGlobal().virtualBox().GetRevision())
-                                                       .arg(vboxGlobal().brandingGetKey("VerSuffix")));
+        url.addQueryItem("version", QString("%1_%2_%3").arg(uiCommon().virtualBox().GetVersion())
+                                                       .arg(uiCommon().virtualBox().GetRevision())
+                                                       .arg(uiCommon().brandingGetKey("VerSuffix")));
     }
     else
     {
         /* Use hard coded version set by VBOX_VERSION_STRING: */
-        url.addQueryItem("version", QString("%1_%2").arg(vboxGlobal().virtualBox().GetVersion())
-                                                    .arg(vboxGlobal().virtualBox().GetRevision()));
+        url.addQueryItem("version", QString("%1_%2").arg(uiCommon().virtualBox().GetVersion())
+                                                    .arg(uiCommon().virtualBox().GetRevision()));
     }
     url.addQueryItem("count", QString::number(gEDataManager->applicationUpdateCheckCounter()));
     url.addQueryItem("branch", VBoxUpdateData(gEDataManager->applicationUpdateData()).branchName());
-    QString strUserAgent(QString("VirtualBox %1 <%2>").arg(vboxGlobal().virtualBox().GetVersion()).arg(platformInfo()));
+    QString strUserAgent(QString("VirtualBox %1 <%2>").arg(uiCommon().virtualBox().GetVersion()).arg(platformInfo()));
 
     /* Send GET request: */
@@ -410,5 +410,5 @@
 
     /* Get extension pack: */
-    CExtPack extPack = vboxGlobal().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
+    CExtPack extPack = uiCommon().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
     /* Return if extension pack is NOT installed: */
     if (extPack.isNull())
@@ -419,5 +419,5 @@
 
     /* Get VirtualBox version: */
-    UIVersion vboxVersion(vboxGlobal().vboxVersionStringNormalized());
+    UIVersion vboxVersion(uiCommon().vboxVersionStringNormalized());
     /* Get extension pack version: */
     QString strExtPackVersion(extPack.GetVersion());
@@ -482,5 +482,5 @@
     /* Warn the user about extension pack was downloaded and saved, propose to install it: */
     if (msgCenter().proposeInstallExtentionPack(GUI_ExtPackName, strSource, QDir::toNativeSeparators(strTarget)))
-        vboxGlobal().doExtPackInstallation(strTarget, strDigest, windowManager().networkManagerOrMainWindowShown(), NULL);
+        uiCommon().doExtPackInstallation(strTarget, strDigest, windowManager().networkManagerOrMainWindowShown(), NULL);
     /* Propose to delete the downloaded extension pack: */
     if (msgCenter().proposeDeleteExtentionPack(QDir::toNativeSeparators(strTarget)))
@@ -489,5 +489,5 @@
         QFile::remove(QDir::toNativeSeparators(strTarget));
         /* Get the list of old extension pack files in VirtualBox homefolder: */
-        const QStringList oldExtPackFiles = QDir(vboxGlobal().homeFolder()).entryList(QStringList("*.vbox-extpack"),
+        const QStringList oldExtPackFiles = QDir(uiCommon().homeFolder()).entryList(QStringList("*.vbox-extpack"),
                                                                                       QDir::Files);
         /* Propose to delete old extension pack files if there are any: */
@@ -499,5 +499,5 @@
                 {
                     /* Delete the old extension pack file: */
-                    QFile::remove(QDir::toNativeSeparators(QDir(vboxGlobal().homeFolder()).filePath(strExtPackFile)));
+                    QFile::remove(QDir::toNativeSeparators(QDir(uiCommon().homeFolder()).filePath(strExtPackFile)));
                 }
             }
@@ -529,5 +529,5 @@
 #ifdef VBOX_WITH_UPDATE_REQUEST
     /* Ask updater to check for the first time, for Selector UI only: */
-    if (gEDataManager->applicationUpdateEnabled() && vboxGlobal().uiType() == VBoxGlobal::UIType_SelectorUI)
+    if (gEDataManager->applicationUpdateEnabled() && uiCommon().uiType() == UICommon::UIType_SelectorUI)
         QTimer::singleShot(0, this, SLOT(sltCheckIfUpdateIsNecessary()));
 #endif /* VBOX_WITH_UPDATE_REQUEST */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/platform/darwin/UIAbstractDockIconPreview.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/platform/darwin/UIAbstractDockIconPreview.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/platform/darwin/UIAbstractDockIconPreview.cpp	(revision 79365)
@@ -27,5 +27,5 @@
 #include "UIMachineView.h"
 #include "UISession.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -116,5 +116,5 @@
 {
     /* Determine whether dock icon overlay is not disabled: */
-    if (!gEDataManager->dockIconDisableOverlay(vboxGlobal().managedVMUuid()))
+    if (!gEDataManager->dockIconDisableOverlay(uiCommon().managedVMUuid()))
     {
         /* Initialize overlay rectangle: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp	(revision 79365)
@@ -20,5 +20,5 @@
 #include "UIMainEventListener.h"
 #include "UIExtraDataManager.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UISession.h"
 #ifdef VBOX_WS_MAC
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp	(revision 79365)
@@ -32,5 +32,5 @@
 #include "UIPopupCenter.h"
 #include "UIExtraDataManager.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #ifdef VBOX_WITH_MASKED_SEAMLESS
 # include "UIMachineWindow.h"
@@ -719,5 +719,5 @@
 
     com::SafeArray<FramebufferCapabilities_T> caps;
-    if (vboxGlobal().isSeparateProcess())
+    if (uiCommon().isSeparateProcess())
     {
        caps.resize(2);
@@ -740,5 +740,5 @@
 {
     CDisplaySourceBitmap sourceBitmap;
-    if (!vboxGlobal().isSeparateProcess())
+    if (!uiCommon().isSeparateProcess())
         display().QuerySourceBitmap(uScreenId, sourceBitmap);
 
@@ -767,5 +767,5 @@
     m_pendingSyncVisibleRegion = QRegion();
 
-    if (!vboxGlobal().isSeparateProcess())
+    if (!uiCommon().isSeparateProcess())
     {
        /* Acquire new pending bitmap: */
@@ -1087,5 +1087,5 @@
 
     /* If there is NO pending source-bitmap: */
-    if (!vboxGlobal().isSeparateProcess() && !m_fPendingSourceBitmap)
+    if (!uiCommon().isSeparateProcess() && !m_fPendingSourceBitmap)
     {
         /* Do nothing, change-event already processed: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp	(revision 79365)
@@ -35,5 +35,5 @@
 #include "UIHostComboEditor.h"
 #include "QIStatusBarIndicator.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -472,5 +472,5 @@
                 this, SLOT(sltHandleMachineStateChange()));
         /* Fetch maximum network adapters count: */
-        const CVirtualBox vbox = vboxGlobal().virtualBox();
+        const CVirtualBox vbox = uiCommon().virtualBox();
         const CMachine machine = m_pSession->machine();
         m_cMaxNetworkAdapters = vbox.GetSystemProperties().GetMaxNetworkAdapters(machine.GetChipsetType());
@@ -631,5 +631,5 @@
             const CConsole console = m_pSession->console();
             foreach (const CUSBDevice &usbDevice, console.GetUSBDevices())
-                strFullData += s_strTableRow1.arg(vboxGlobal().details(usbDevice));
+                strFullData += s_strTableRow1.arg(uiCommon().details(usbDevice));
             /* Handle 'no-usb-devices' case: */
             if (strFullData.isNull())
@@ -694,5 +694,5 @@
         {
             /* Select slashes depending on the OS type: */
-            if (VBoxGlobal::isDOSType(guest.GetOSTypeId()))
+            if (UICommon::isDOSType(guest.GetOSTypeId()))
                 strFullData += s_strTableRow2.arg(QString("<b>\\\\vboxsvr\\%1</b>").arg(it.key()), it.value());
             else
@@ -744,5 +744,5 @@
         /* Video Memory: */
         const ULONG uVRAMSize = machine.GetVRAMSize();
-        const QString strVRAMSize = VBoxGlobal::tr("<nobr>%1 MB</nobr>", "details report").arg(uVRAMSize);
+        const QString strVRAMSize = UICommon::tr("<nobr>%1 MB</nobr>", "details report").arg(uVRAMSize);
         strFullData += s_strTableRow2
             .arg(QApplication::translate("UIIndicatorsPool", "Video memory", "Display tooltip"), strVRAMSize);
@@ -758,10 +758,10 @@
 
         /* 3D acceleration: */
-        const bool fAcceleration3D = machine.GetAccelerate3DEnabled() && vboxGlobal().is3DAvailable();
+        const bool fAcceleration3D = machine.GetAccelerate3DEnabled() && uiCommon().is3DAvailable();
         if (fAcceleration3D)
         {
             const QString strAcceleration3D = fAcceleration3D ?
-                VBoxGlobal::tr("Enabled", "details report (3D Acceleration)") :
-                VBoxGlobal::tr("Disabled", "details report (3D Acceleration)");
+                UICommon::tr("Enabled", "details report (3D Acceleration)") :
+                UICommon::tr("Disabled", "details report (3D Acceleration)");
             strFullData += s_strTableRow2
                 .arg(QApplication::translate("UIIndicatorsPool", "3D acceleration", "Display tooltip"), strAcceleration3D);
@@ -1017,5 +1017,5 @@
                 RT_FALL_THRU();
             case KVMExecutionEngine_NotSet:
-                strExecutionEngine = VBoxGlobal::tr("not set", "details report (execution engine)");
+                strExecutionEngine = UICommon::tr("not set", "details report (execution engine)");
                 break;
         }
@@ -1023,11 +1023,11 @@
         /* Nested Paging feature: */
         const QString strNestedPaging = m_pSession->isHWVirtExNestedPagingEnabled() ?
-                                        VBoxGlobal::tr("Active", "details report (Nested Paging)") :
-                                        VBoxGlobal::tr("Inactive", "details report (Nested Paging)");
+                                        UICommon::tr("Active", "details report (Nested Paging)") :
+                                        UICommon::tr("Inactive", "details report (Nested Paging)");
 
         /* Unrestricted Execution feature: */
         const QString strUnrestrictExec = m_pSession->isHWVirtExUXEnabled() ?
-                                          VBoxGlobal::tr("Active", "details report (Unrestricted Execution)") :
-                                          VBoxGlobal::tr("Inactive", "details report (Unrestricted Execution)");
+                                          UICommon::tr("Active", "details report (Unrestricted Execution)") :
+                                          UICommon::tr("Inactive", "details report (Unrestricted Execution)");
 
         /* CPU Execution Cap feature: */
@@ -1039,13 +1039,13 @@
         /* Prepare tool-tip: */
         QString strFullData;
-        //strFullData += s_strTableRow2.arg(VBoxGlobal::tr("VT-x/AMD-V", "details report"),                   strVirtualization);
-        strFullData += s_strTableRow2.arg(VBoxGlobal::tr("Execution engine", "details report"),             strExecutionEngine);
-        strFullData += s_strTableRow2.arg(VBoxGlobal::tr("Nested Paging"),                                  strNestedPaging);
-        strFullData += s_strTableRow2.arg(VBoxGlobal::tr("Unrestricted Execution"),                         strUnrestrictExec);
-        strFullData += s_strTableRow2.arg(VBoxGlobal::tr("Execution Cap", "details report"),                strCPUExecCap);
-        strFullData += s_strTableRow2.arg(VBoxGlobal::tr("Paravirtualization Interface", "details report"), strParavirt);
+        //strFullData += s_strTableRow2.arg(UICommon::tr("VT-x/AMD-V", "details report"),                   strVirtualization);
+        strFullData += s_strTableRow2.arg(UICommon::tr("Execution engine", "details report"),             strExecutionEngine);
+        strFullData += s_strTableRow2.arg(UICommon::tr("Nested Paging"),                                  strNestedPaging);
+        strFullData += s_strTableRow2.arg(UICommon::tr("Unrestricted Execution"),                         strUnrestrictExec);
+        strFullData += s_strTableRow2.arg(UICommon::tr("Execution Cap", "details report"),                strCPUExecCap);
+        strFullData += s_strTableRow2.arg(UICommon::tr("Paravirtualization Interface", "details report"), strParavirt);
         const int cpuCount = machine.GetCPUCount();
         if (cpuCount > 1)
-            strFullData += s_strTableRow2.arg(VBoxGlobal::tr("Processors", "details report"), QString::number(cpuCount));
+            strFullData += s_strTableRow2.arg(UICommon::tr("Processors", "details report"), QString::number(cpuCount));
 
         /* Update tool-tip: */
@@ -1277,5 +1277,5 @@
 {
     /* Skip unrelated machine IDs: */
-    if (vboxGlobal().managedVMUuid() != uMachineID)
+    if (uiCommon().managedVMUuid() != uMachineID)
         return;
 
@@ -1393,5 +1393,5 @@
 {
     /* Acquire status-bar availability: */
-    m_fEnabled = gEDataManager->statusBarEnabled(vboxGlobal().managedVMUuid());
+    m_fEnabled = gEDataManager->statusBarEnabled(uiCommon().managedVMUuid());
     /* If status-bar is not enabled: */
     if (!m_fEnabled)
@@ -1409,5 +1409,5 @@
 
     /* Acquire status-bar restrictions: */
-    m_restrictions = gEDataManager->restrictedStatusBarIndicators(vboxGlobal().managedVMUuid());
+    m_restrictions = gEDataManager->restrictedStatusBarIndicators(uiCommon().managedVMUuid());
     /* Remove restricted indicators: */
     foreach (const IndicatorType &indicatorType, m_restrictions)
@@ -1421,5 +1421,5 @@
 
     /* Acquire status-bar order: */
-    m_order = gEDataManager->statusBarIndicatorOrder(vboxGlobal().managedVMUuid());
+    m_order = gEDataManager->statusBarIndicatorOrder(uiCommon().managedVMUuid());
     /* Make sure the order is complete taking restrictions into account: */
     for (int iType = IndicatorType_Invalid; iType < IndicatorType_Max; ++iType)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp	(revision 79365)
@@ -39,5 +39,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIExtraDataManager.h"
 #include "UIMessageCenter.h"
@@ -648,5 +648,5 @@
             // Can't do COM inter-process calls from a SendMessage handler,
             // see http://support.microsoft.com/kb/131056.
-            if (vboxGlobal().isSeparateProcess() && InSendMessage())
+            if (uiCommon().isSeparateProcess() && InSendMessage())
             {
                 PostMessage(pMsg->hwnd, pMsg->message, pMsg->wParam, pMsg->lParam);
@@ -1020,5 +1020,5 @@
     {
         /* CAD setting: */
-        m_fPassCADtoGuest = gEDataManager->passCADtoGuest(vboxGlobal().managedVMUuid());
+        m_fPassCADtoGuest = gEDataManager->passCADtoGuest(uiCommon().managedVMUuid());
     }
 }
@@ -1520,5 +1520,5 @@
                         if (fCaptureMouse)
                         {
-                            const MouseCapturePolicy mcp = gEDataManager->mouseCapturePolicy(vboxGlobal().managedVMUuid());
+                            const MouseCapturePolicy mcp = gEDataManager->mouseCapturePolicy(uiCommon().managedVMUuid());
                             if (mcp == MouseCapturePolicy_Default || mcp == MouseCapturePolicy_HostComboOnly)
                                 machineLogic()->mouseHandler()->captureMouse(uScreenId);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachine.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachine.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachine.cpp	(revision 79365)
@@ -17,5 +17,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIExtraDataManager.h"
 #include "UIMachine.h"
@@ -44,8 +44,8 @@
 
     /* Restore current snapshot if requested: */
-    if (vboxGlobal().shouldRestoreCurrentSnapshot())
+    if (uiCommon().shouldRestoreCurrentSnapshot())
     {
         /* Create temporary session: */
-        CSession session = vboxGlobal().openSession(uID, KLockType_VM);
+        CSession session = uiCommon().openSession(uID, KLockType_VM);
         if (session.isNull())
             return false;
@@ -70,16 +70,16 @@
 
         /* Clear snapshot-restoring request: */
-        vboxGlobal().setShouldRestoreCurrentSnapshot(false);
+        uiCommon().setShouldRestoreCurrentSnapshot(false);
     }
 
     /* For separate process we should launch VM before UI: */
-    if (vboxGlobal().isSeparateProcess())
+    if (uiCommon().isSeparateProcess())
     {
         /* Get corresponding machine: */
-        CMachine machine = vboxGlobal().virtualBox().FindMachine(vboxGlobal().managedVMUuid().toString());
-        AssertMsgReturn(!machine.isNull(), ("VBoxGlobal::managedVMUuid() should have filter that case before!\n"), false);
+        CMachine machine = uiCommon().virtualBox().FindMachine(uiCommon().managedVMUuid().toString());
+        AssertMsgReturn(!machine.isNull(), ("UICommon::managedVMUuid() should have filter that case before!\n"), false);
 
         /* Try to launch corresponding machine: */
-        if (!vboxGlobal().launchMachine(machine, VBoxGlobal::LaunchMode_Separate))
+        if (!uiCommon().launchMachine(machine, UICommon::LaunchMode_Separate))
             return false;
     }
@@ -207,8 +207,8 @@
 
     /* Cache medium data early if necessary: */
-    if (vboxGlobal().agressiveCaching())
+    if (uiCommon().agressiveCaching())
     {
         AssertReturn(m_pSession, false);
-        vboxGlobal().startMediumEnumeration(m_pSession->getMachineMedia());
+        uiCommon().startMediumEnumeration(m_pSession->getMachineMedia());
     }
     /* Prepare machine-logic: */
@@ -242,10 +242,10 @@
 
     /* Load restricted visual states: */
-    UIVisualStateType restrictedVisualStates = gEDataManager->restrictedVisualStates(vboxGlobal().managedVMUuid());
+    UIVisualStateType restrictedVisualStates = gEDataManager->restrictedVisualStates(uiCommon().managedVMUuid());
     /* Acquire allowed visual states: */
     m_allowedVisualStates = static_cast<UIVisualStateType>(UIVisualStateType_All ^ restrictedVisualStates);
 
     /* Load requested visual state: */
-    UIVisualStateType requestedVisualState = gEDataManager->requestedVisualState(vboxGlobal().managedVMUuid());
+    UIVisualStateType requestedVisualState = gEDataManager->requestedVisualState(uiCommon().managedVMUuid());
     /* Check if requested visual state is allowed: */
     if (isVisualStateAllowed(requestedVisualState))
@@ -278,5 +278,5 @@
 
         /* Save requested visual state: */
-        gEDataManager->setRequestedVisualState(requestedVisualState, vboxGlobal().managedVMUuid());
+        gEDataManager->setRequestedVisualState(requestedVisualState, uiCommon().managedVMUuid());
     }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 79365)
@@ -50,5 +50,5 @@
 #include "UIMachineWindow.h"
 #include "UISession.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 #include "UIPopupCenter.h"
@@ -507,5 +507,5 @@
 {
     /* Do nothing if VBoxSVC still availabile: */
-    if (vboxGlobal().isVBoxSVCAvailable())
+    if (uiCommon().isVBoxSVCAvailable())
         return;
 
@@ -563,5 +563,5 @@
             takeScreenshot(strLogFolder + "/VBox.png", "png");
             /* How should we handle Guru Meditation? */
-            switch (gEDataManager->guruMeditationHandlerType(vboxGlobal().managedVMUuid()))
+            switch (gEDataManager->guruMeditationHandlerType(uiCommon().managedVMUuid()))
             {
                 /* Ask how to proceed; Power off VM if proposal accepted: */
@@ -626,5 +626,5 @@
                 /* VM has been powered off, saved, teleported or aborted.
                  * We must close Runtime UI: */
-                if (vboxGlobal().isSeparateProcess())
+                if (uiCommon().isSeparateProcess())
                 {
                     /* Hack: The VM process is terminating, so wait a bit to make sure that
@@ -744,7 +744,7 @@
     {
         if (fIsAttached)
-            popupCenter().cannotAttachUSBDevice(activeMachineWindow(), error, vboxGlobal().details(device), machineName());
+            popupCenter().cannotAttachUSBDevice(activeMachineWindow(), error, uiCommon().details(device), machineName());
         else
-            popupCenter().cannotDetachUSBDevice(activeMachineWindow(), error, vboxGlobal().details(device), machineName());
+            popupCenter().cannotDetachUSBDevice(activeMachineWindow(), error, uiCommon().details(device), machineName());
     }
 }
@@ -963,5 +963,5 @@
 {
     /* We should watch for VBoxSVC availability changes: */
-    connect(&vboxGlobal(), SIGNAL(sigVBoxSVCAvailabilityChange()),
+    connect(&uiCommon(), SIGNAL(sigVBoxSVCAvailabilityChange()),
             this, SLOT(sltHandleVBoxSVCAvailabilityChange()));
 
@@ -1272,5 +1272,5 @@
     QAction *pDockIconDisableOverlay = actionPool()->action(UIActionIndexRT_M_Dock_M_DockSettings_T_DisableOverlay);
     /* Prepare dock icon disable overlay action with initial data: */
-    pDockIconDisableOverlay->setChecked(gEDataManager->dockIconDisableOverlay(vboxGlobal().managedVMUuid()));
+    pDockIconDisableOverlay->setChecked(gEDataManager->dockIconDisableOverlay(uiCommon().managedVMUuid()));
     /* Connect dock icon disable overlay related signals: */
     connect(pDockIconDisableOverlay, SIGNAL(triggered(bool)),
@@ -1289,5 +1289,5 @@
         m_pDockSettingsMenuSeparator = pDockSettingsMenu->addSeparator();
 
-        int extraDataUpdateMonitor = gEDataManager->realtimeDockIconUpdateMonitor(vboxGlobal().managedVMUuid());
+        int extraDataUpdateMonitor = gEDataManager->realtimeDockIconUpdateMonitor(uiCommon().managedVMUuid());
         if (visibleWindowsList.contains(extraDataUpdateMonitor))
             m_DockIconPreviewMonitor = extraDataUpdateMonitor;
@@ -1317,11 +1317,11 @@
 
     /* Now the dock icon preview: */
-    QPixmap pixmap = vboxGlobal().vmUserPixmap(machine(), QSize(42, 42));
+    QPixmap pixmap = uiCommon().vmUserPixmap(machine(), QSize(42, 42));
     if (pixmap.isNull())
-        pixmap = vboxGlobal().vmGuestOSTypePixmap(guest().GetOSTypeId(), QSize(42, 42));
+        pixmap = uiCommon().vmGuestOSTypePixmap(guest().GetOSTypeId(), QSize(42, 42));
     m_pDockIconPreview = new UIDockIconPreview(uisession(), pixmap);
 
     /* Should the dock-icon be updated at runtime? */
-    bool fEnabled = gEDataManager->realtimeDockIconUpdateEnabled(vboxGlobal().managedVMUuid());
+    bool fEnabled = gEDataManager->realtimeDockIconUpdateEnabled(uiCommon().managedVMUuid());
     if (fEnabled)
         pDockEnablePreviewMonitor->setChecked(true);
@@ -1403,5 +1403,5 @@
         if (!visibleWindowsList.contains(m_DockIconPreviewMonitor))
         {
-            int iExtraDataUpdateMonitor = gEDataManager->realtimeDockIconUpdateMonitor(vboxGlobal().managedVMUuid());
+            int iExtraDataUpdateMonitor = gEDataManager->realtimeDockIconUpdateMonitor(uiCommon().managedVMUuid());
             if (visibleWindowsList.contains(iExtraDataUpdateMonitor))
                 m_DockIconPreviewMonitor = iExtraDataUpdateMonitor;
@@ -1441,9 +1441,9 @@
 void UIMachineLogic::prepareDebugger()
 {
-    if (vboxGlobal().isDebuggerAutoShowEnabled())
-    {
-        if (vboxGlobal().isDebuggerAutoShowStatisticsEnabled())
+    if (uiCommon().isDebuggerAutoShowEnabled())
+    {
+        if (uiCommon().isDebuggerAutoShowStatisticsEnabled())
             sltShowDebugStatistics();
-        if (vboxGlobal().isDebuggerAutoShowCommandLineEnabled())
+        if (uiCommon().isDebuggerAutoShowCommandLineEnabled())
             sltShowDebugCommandLine();
     }
@@ -1455,5 +1455,5 @@
 #if defined(VBOX_WS_MAC) || defined(VBOX_WS_WIN)
     /* Read cached extra-data value: */
-    m_fIsHidLedsSyncEnabled = gEDataManager->hidLedsSyncState(vboxGlobal().managedVMUuid());
+    m_fIsHidLedsSyncEnabled = gEDataManager->hidLedsSyncState(uiCommon().managedVMUuid());
     /* Subscribe to extra-data changes to be able to enable/disable feature dynamically: */
     connect(gEDataManager, SIGNAL(sigHidLedsSyncStateChange(bool)), this, SLOT(sltHidLedsSyncStateChanged(bool)));
@@ -1500,5 +1500,5 @@
 {
     /* We should stop watching for VBoxSVC availability changes: */
-    disconnect(&vboxGlobal(), SIGNAL(sigVBoxSVCAvailabilityChange()),
+    disconnect(&uiCommon(), SIGNAL(sigVBoxSVCAvailabilityChange()),
                this, SLOT(sltHandleVBoxSVCAvailabilityChange()));
 
@@ -1914,5 +1914,5 @@
 
     LogRel(("GUI: User request to power VM off.\n"));
-    MachineCloseAction enmLastCloseAction = gEDataManager->lastMachineCloseAction(vboxGlobal().managedVMUuid());
+    MachineCloseAction enmLastCloseAction = gEDataManager->lastMachineCloseAction(uiCommon().managedVMUuid());
     powerOff(machine().GetSnapshotCount() > 0 && enmLastCloseAction == MachineCloseAction_PowerOff_RestoringSnapshot);
 }
@@ -2298,5 +2298,5 @@
 
     /* Update current machine mount-target: */
-    vboxGlobal().updateMachineStorage(machine(), target);
+    uiCommon().updateMachineStorage(machine(), target);
 }
 
@@ -2319,5 +2319,5 @@
         {
             /* Get current host: */
-            CHost host = vboxGlobal().host();
+            CHost host = uiCommon().host();
             /* Search the host for the corresponding USB device: */
             CHostUSBDevice hostDevice = host.FindUSBDeviceById(target.id);
@@ -2325,5 +2325,5 @@
             CUSBDevice device(hostDevice);
             /* Show a message about procedure failure: */
-            popupCenter().cannotAttachUSBDevice(activeMachineWindow(), console(), vboxGlobal().details(device));
+            popupCenter().cannotAttachUSBDevice(activeMachineWindow(), console(), uiCommon().details(device));
         }
     }
@@ -2339,5 +2339,5 @@
         {
             /* Show a message about procedure failure: */
-            popupCenter().cannotDetachUSBDevice(activeMachineWindow(), console(), vboxGlobal().details(device));
+            popupCenter().cannotDetachUSBDevice(activeMachineWindow(), console(), uiCommon().details(device));
         }
     }
@@ -2423,5 +2423,5 @@
         return;
 
-    CSystemProperties systemProperties = vboxGlobal().virtualBox().GetSystemProperties();
+    CSystemProperties systemProperties = uiCommon().virtualBox().GetSystemProperties();
     QString strAdditions = systemProperties.GetDefaultAdditionsISO();
     if (systemProperties.isOk() && !strAdditions.isEmpty())
@@ -2429,6 +2429,6 @@
 
     /* Check for the already registered image */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
-    const QString &strName = QString("%1_%2.iso").arg(GUI_GuestAdditionsName, vboxGlobal().vboxVersionStringNormalized());
+    CVirtualBox vbox = uiCommon().virtualBox();
+    const QString &strName = QString("%1_%2.iso").arg(GUI_GuestAdditionsName, uiCommon().vboxVersionStringNormalized());
 
     CMediumVector vec = vbox.GetDVDImages();
@@ -2590,5 +2590,5 @@
 {
     bool fEnabled = pAction != actionPool()->action(UIActionIndexRT_M_Dock_M_DockSettings_T_DisableMonitor);
-    gEDataManager->setRealtimeDockIconUpdateEnabled(fEnabled, vboxGlobal().managedVMUuid());
+    gEDataManager->setRealtimeDockIconUpdateEnabled(fEnabled, uiCommon().managedVMUuid());
     updateDockOverlay();
 }
@@ -2596,5 +2596,5 @@
 void UIMachineLogic::sltDockPreviewMonitorChanged(QAction *pAction)
 {
-    gEDataManager->setRealtimeDockIconUpdateMonitor(pAction->data().toInt(), vboxGlobal().managedVMUuid());
+    gEDataManager->setRealtimeDockIconUpdateMonitor(pAction->data().toInt(), uiCommon().managedVMUuid());
     updateDockOverlay();
 }
@@ -2608,5 +2608,5 @@
         {
             m_pDockPreviewSelectMonitorGroup->setEnabled(fEnabled);
-            m_DockIconPreviewMonitor = qMin(gEDataManager->realtimeDockIconUpdateMonitor(vboxGlobal().managedVMUuid()),
+            m_DockIconPreviewMonitor = qMin(gEDataManager->realtimeDockIconUpdateMonitor(uiCommon().managedVMUuid()),
                                             (int)machine().GetMonitorCount() - 1);
         }
@@ -2639,5 +2639,5 @@
 {
     /* Write dock icon disable overlay flag to extra-data: */
-    gEDataManager->setDockIconDisableOverlay(fDisabled, vboxGlobal().managedVMUuid());
+    gEDataManager->setDockIconDisableOverlay(fDisabled, uiCommon().managedVMUuid());
 }
 #endif /* VBOX_WS_MAC */
@@ -2787,5 +2787,5 @@
 
             /* Fill current storage menu: */
-            vboxGlobal().prepareStorageMenu(*pStorageMenu,
+            uiCommon().prepareStorageMenu(*pStorageMenu,
                                             this, SLOT(sltMountStorageMedium()),
                                             machine(), strControllerName, storageSlot);
@@ -2798,5 +2798,5 @@
     /* Determine how many adapters we should display: */
     const KChipsetType chipsetType = machine().GetChipsetType();
-    const ULONG uCount = qMin((ULONG)4, vboxGlobal().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(chipsetType));
+    const ULONG uCount = qMin((ULONG)4, uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(chipsetType));
 
     /* Enumerate existing network adapters: */
@@ -2836,5 +2836,5 @@
 {
     /* Get current host: */
-    const CHost host = vboxGlobal().host();
+    const CHost host = uiCommon().host();
     /* Get host USB device list: */
     const CHostUSBDeviceVector devices = host.GetUSBDevices();
@@ -2860,7 +2860,7 @@
 
             /* Create USB device action: */
-            QAction *pAttachUSBAction = pMenu->addAction(vboxGlobal().details(device),
+            QAction *pAttachUSBAction = pMenu->addAction(uiCommon().details(device),
                                                          this, SLOT(sltAttachUSBDevice()));
-            pAttachUSBAction->setToolTip(vboxGlobal().toolTip(device));
+            pAttachUSBAction->setToolTip(uiCommon().toolTip(device));
             pAttachUSBAction->setCheckable(true);
 
@@ -2882,5 +2882,5 @@
 
     /* Get current host: */
-    const CHost host = vboxGlobal().host();
+    const CHost host = uiCommon().host();
     /* Get host webcam list: */
     const CHostVideoInputDeviceVector webcams = host.GetVideoInputDevices();
@@ -2910,5 +2910,5 @@
             QAction *pAttachWebcamAction = pMenu->addAction(strWebcamName,
                                                             this, SLOT(sltAttachWebCamDevice()));
-            pAttachWebcamAction->setToolTip(vboxGlobal().toolTip(webcam));
+            pAttachWebcamAction->setToolTip(uiCommon().toolTip(webcam));
             pAttachWebcamAction->setCheckable(true);
 
@@ -3152,5 +3152,5 @@
         QImage shot = QImage(width, height, QImage::Format_RGB32);
         /* For separate process: */
-        if (vboxGlobal().isSeparateProcess())
+        if (uiCommon().isSeparateProcess())
         {
             /* Take screen-data to array first: */
@@ -3194,5 +3194,5 @@
         return true;
 
-    RTLDRMOD hLdrMod = vboxGlobal().getDebuggerModule();
+    RTLDRMOD hLdrMod = uiCommon().getDebuggerModule();
     if (hLdrMod == NIL_RTLDRMOD)
         return false;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp	(revision 79365)
@@ -24,5 +24,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPoolRuntime.h"
 #include "UIDesktopWidgetWatchdog.h"
@@ -229,5 +229,5 @@
 
     /* Acquire selected scale-factor: */
-    double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid(), m_uScreenId);
+    double dScaleFactor = gEDataManager->scaleFactor(uiCommon().managedVMUuid(), m_uScreenId);
 
     /* Take the device-pixel-ratio into account: */
@@ -243,5 +243,5 @@
 
     /* Propagate the scale-factor related attributes to 3D service if necessary: */
-    if (machine().GetAccelerate3DEnabled() && vboxGlobal().is3DAvailable())
+    if (machine().GetAccelerate3DEnabled() && uiCommon().is3DAvailable())
     {
         double dScaleFactorFor3D = dScaleFactor;
@@ -306,5 +306,5 @@
 
     /* If auto-mount of guest-screens (auto-pilot) enabled: */
-    if (gEDataManager->autoMountGuestScreensEnabled(vboxGlobal().managedVMUuid()))
+    if (gEDataManager->autoMountGuestScreensEnabled(uiCommon().managedVMUuid()))
     {
         /* Do not send a hint if nothing has changed to prevent the guest being notified about its own changes: */
@@ -503,9 +503,9 @@
 {
     /* Skip unrelated machine IDs: */
-    if (uMachineID != vboxGlobal().managedVMUuid())
+    if (uMachineID != uiCommon().managedVMUuid())
         return;
 
     /* Acquire selected scale-factor: */
-    double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid(), m_uScreenId);
+    double dScaleFactor = gEDataManager->scaleFactor(uiCommon().managedVMUuid(), m_uScreenId);
 
     /* Take the device-pixel-ratio into account: */
@@ -519,5 +519,5 @@
 
     /* Propagate the scale-factor related attributes to 3D service if necessary: */
-    if (machine().GetAccelerate3DEnabled() && vboxGlobal().is3DAvailable())
+    if (machine().GetAccelerate3DEnabled() && uiCommon().is3DAvailable())
     {
         double dScaleFactorFor3D = dScaleFactor;
@@ -551,9 +551,9 @@
 {
     /* Skip unrelated machine IDs: */
-    if (uMachineID != vboxGlobal().managedVMUuid())
+    if (uMachineID != uiCommon().managedVMUuid())
         return;
 
     /* Take the scaling-optimization type into account: */
-    frameBuffer()->setScalingOptimizationType(gEDataManager->scalingOptimizationType(vboxGlobal().managedVMUuid()));
+    frameBuffer()->setScalingOptimizationType(gEDataManager->scalingOptimizationType(uiCommon().managedVMUuid()));
 
     /* Update viewport: */
@@ -697,8 +697,8 @@
 
         /* Take scaling optimization type into account: */
-        m_pFrameBuffer->setScalingOptimizationType(gEDataManager->scalingOptimizationType(vboxGlobal().managedVMUuid()));
+        m_pFrameBuffer->setScalingOptimizationType(gEDataManager->scalingOptimizationType(uiCommon().managedVMUuid()));
 
         /* Acquire selected scale-factor: */
-        double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid(), m_uScreenId);
+        double dScaleFactor = gEDataManager->scaleFactor(uiCommon().managedVMUuid(), m_uScreenId);
 
         /* Take the device-pixel-ratio into account: */
@@ -715,5 +715,5 @@
 
         /* Propagate the scale-factor related attributes to 3D service if necessary: */
-        if (machine().GetAccelerate3DEnabled() && vboxGlobal().is3DAvailable())
+        if (machine().GetAccelerate3DEnabled() && uiCommon().is3DAvailable())
         {
             double dScaleFactorFor3D = dScaleFactor;
@@ -943,5 +943,5 @@
     /* HACK ALERT! Really ugly workaround for the resizing to 9x1 done by DevVGA if provoked before power on. */
     if (size.width() < 16 || size.height() < 16)
-        if (vboxGlobal().shouldStartPaused() || vboxGlobal().isDebuggerAutoShowEnabled())
+        if (uiCommon().shouldStartPaused() || uiCommon().isDebuggerAutoShowEnabled())
             size = QSize(640, 480);
 #endif /* !VBOX_WITH_DEBUGGER_GUI */
@@ -1013,5 +1013,5 @@
 
     /* Actual value for other guest-screens: */
-    return gEDataManager->lastGuestScreenVisibilityStatus(m_uScreenId, vboxGlobal().managedVMUuid());
+    return gEDataManager->lastGuestScreenVisibilityStatus(m_uScreenId, uiCommon().managedVMUuid());
 }
 
@@ -1019,5 +1019,5 @@
 {
     /* Load guest-screen size-hint: */
-    QSize sizeHint = gEDataManager->lastGuestScreenSizeHint(m_uScreenId, vboxGlobal().managedVMUuid());
+    QSize sizeHint = gEDataManager->lastGuestScreenSizeHint(m_uScreenId, uiCommon().managedVMUuid());
 
     /* Invent the default if necessary: */
@@ -1037,5 +1037,5 @@
     LogRel2(("GUI: UIMachineView::storeGuestSizeHint: Storing guest-screen size-hint for screen %d as %dx%d\n",
              (int)screenId(), sizeHint.width(), sizeHint.height()));
-    gEDataManager->setLastGuestScreenSizeHint(m_uScreenId, sizeHint, vboxGlobal().managedVMUuid());
+    gEDataManager->setLastGuestScreenSizeHint(m_uScreenId, sizeHint, uiCommon().managedVMUuid());
 }
 
@@ -1104,5 +1104,5 @@
 
     /* For separate process: */
-    if (vboxGlobal().isSeparateProcess())
+    if (uiCommon().isSeparateProcess())
     {
         /* Take screen-data to array: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineWindow.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineWindow.cpp	(revision 79365)
@@ -24,5 +24,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIConverter.h"
 #include "UIModalWindowManager.h"
@@ -131,8 +131,8 @@
     QString strWindowName = strWindowClass;
     /* Check if we want Window Manager to distinguish Virtual Machine windows: */
-    if (gEDataManager->distinguishMachineWindowGroups(vboxGlobal().managedVMUuid()))
-        strWindowName = QString("VirtualBox Machine UUID: %1").arg(vboxGlobal().managedVMUuid().toString());
+    if (gEDataManager->distinguishMachineWindowGroups(uiCommon().managedVMUuid()))
+        strWindowName = QString("VirtualBox Machine UUID: %1").arg(uiCommon().managedVMUuid().toString());
     /* Assign WM_CLASS property: */
-    VBoxGlobal::setWMClass(this, strWindowName, strWindowClass);
+    UICommon::setWMClass(this, strWindowName, strWindowClass);
 #endif
 }
@@ -313,5 +313,5 @@
 
     /* If there is a close hook script defined: */
-    const QString strScript = gEDataManager->machineCloseHookScript(vboxGlobal().managedVMUuid());
+    const QString strScript = gEDataManager->machineCloseHookScript(uiCommon().managedVMUuid());
     if (!strScript.isEmpty())
     {
@@ -375,5 +375,5 @@
                 {
                     /* If that is NOT the separate VM process UI: */
-                    if (!vboxGlobal().isSeparateProcess())
+                    if (!uiCommon().isSeparateProcess())
                     {
                         /* We are not going to show close-dialog: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDesktopWidgetWatchdog.h"
 #include "UIExtraDataManager.h"
@@ -461,5 +461,5 @@
         QList<ulong> screenIds = m_viewports.keys();
         for (int i = 0; i < screenIds.size(); ++i)
-            VBoxGlobal::setCursor(m_viewports[screenIds[i]], Qt::BlankCursor);
+            UICommon::setCursor(m_viewports[screenIds[i]], Qt::BlankCursor);
     }
 
@@ -475,5 +475,5 @@
         QList<ulong> screenIds = m_viewports.keys();
         for (int i = 0; i < screenIds.size(); ++i)
-            VBoxGlobal::setCursor(m_viewports[screenIds[i]], uisession()->cursor());
+            UICommon::setCursor(m_viewports[screenIds[i]], uisession()->cursor());
     }
 
@@ -488,5 +488,5 @@
         QList<ulong> screenIds = m_viewports.keys();
         for (int i = 0; i < screenIds.size(); ++i)
-            VBoxGlobal::unsetCursor(m_viewports[screenIds[i]]);
+            UICommon::unsetCursor(m_viewports[screenIds[i]]);
     }
 }
@@ -1150,5 +1150,5 @@
 #endif /* VBOX_WS_X11 */
                         machineLogic()->keyboardHandler()->captureKeyboard(uScreenId);
-                        const MouseCapturePolicy mcp = gEDataManager->mouseCapturePolicy(vboxGlobal().managedVMUuid());
+                        const MouseCapturePolicy mcp = gEDataManager->mouseCapturePolicy(uiCommon().managedVMUuid());
                         if (mcp == MouseCapturePolicy_Default)
                             captureMouse(uScreenId);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp	(revision 79365)
@@ -30,5 +30,5 @@
 #include "UIExtraDataManager.h"
 #include "UIDesktopWidgetWatchdog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -68,5 +68,5 @@
      * We have to make sure they are valid, which means there have to be unique combinations
      * and all guests screens need there own host screen. */
-    bool fShouldWeAutoMountGuestScreens = gEDataManager->autoMountGuestScreensEnabled(vboxGlobal().managedVMUuid());
+    bool fShouldWeAutoMountGuestScreens = gEDataManager->autoMountGuestScreensEnabled(uiCommon().managedVMUuid());
     LogRel(("GUI: UIMultiScreenLayout::update: GUI/AutomountGuestScreens is %s\n", fShouldWeAutoMountGuestScreens ? "enabled" : "disabled"));
     foreach (int iGuestScreen, m_guestScreens)
@@ -79,5 +79,5 @@
         {
             /* If the user ever selected a combination in the view menu, we have the following entry: */
-            iHostScreen = gEDataManager->hostScreenForPassedGuestScreen(iGuestScreen, vboxGlobal().managedVMUuid());
+            iHostScreen = gEDataManager->hostScreenForPassedGuestScreen(iGuestScreen, uiCommon().managedVMUuid());
             /* Revalidate: */
             fValid =    iHostScreen >= 0 && iHostScreen < m_cHostScreens /* In the host screen bounds? */
@@ -91,5 +91,5 @@
              * This even works with multi-screen. The user just have to move all the normal windows to the target host-screens
              * and they will magically open there in fullscreen/seamless also. */
-            QRect geo = gEDataManager->machineWindowGeometry(UIVisualStateType_Normal, iGuestScreen, vboxGlobal().managedVMUuid());
+            QRect geo = gEDataManager->machineWindowGeometry(UIVisualStateType_Normal, iGuestScreen, uiCommon().managedVMUuid());
             /* If geometry is valid: */
             if (!geo.isNull())
@@ -285,5 +285,5 @@
     {
         const int iHostScreen = m_screenMap.value(iGuestScreen, -1);
-        gEDataManager->setHostScreenForPassedGuestScreen(iGuestScreen, iHostScreen, vboxGlobal().managedVMUuid());
+        gEDataManager->setHostScreenForPassedGuestScreen(iGuestScreen, iHostScreen, uiCommon().managedVMUuid());
     }
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 79365)
@@ -33,5 +33,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDesktopWidgetWatchdog.h"
 #include "UIExtraDataManager.h"
@@ -185,26 +185,26 @@
     if (!debugger().isNull() && debugger().isOk())
     {
-        if (vboxGlobal().isPatmDisabled())
+        if (uiCommon().isPatmDisabled())
             debugger().SetPATMEnabled(false);
-        if (vboxGlobal().isCsamDisabled())
+        if (uiCommon().isCsamDisabled())
             debugger().SetCSAMEnabled(false);
-        if (vboxGlobal().isSupervisorCodeExecedRecompiled())
+        if (uiCommon().isSupervisorCodeExecedRecompiled())
             debugger().SetRecompileSupervisor(true);
-        if (vboxGlobal().isUserCodeExecedRecompiled())
+        if (uiCommon().isUserCodeExecedRecompiled())
             debugger().SetRecompileUser(true);
-        if (vboxGlobal().areWeToExecuteAllInIem())
+        if (uiCommon().areWeToExecuteAllInIem())
             debugger().SetExecuteAllInIEM(true);
-        if (!vboxGlobal().isDefaultWarpPct())
-            debugger().SetVirtualTimeRate(vboxGlobal().getWarpPct());
+        if (!uiCommon().isDefaultWarpPct())
+            debugger().SetVirtualTimeRate(uiCommon().getWarpPct());
     }
 
     /* Apply ad-hoc reconfigurations from the command line: */
-    if (vboxGlobal().hasFloppyImageToMount())
-        mountAdHocImage(KDeviceType_Floppy, UIMediumDeviceType_Floppy, vboxGlobal().getFloppyImage().toString());
-    if (vboxGlobal().hasDvdImageToMount())
-        mountAdHocImage(KDeviceType_DVD, UIMediumDeviceType_DVD, vboxGlobal().getDvdImage().toString());
+    if (uiCommon().hasFloppyImageToMount())
+        mountAdHocImage(KDeviceType_Floppy, UIMediumDeviceType_Floppy, uiCommon().getFloppyImage().toString());
+    if (uiCommon().hasDvdImageToMount())
+        mountAdHocImage(KDeviceType_DVD, UIMediumDeviceType_DVD, uiCommon().getDvdImage().toString());
 
     /* Power UP if this is NOT separate process: */
-    if (!vboxGlobal().isSeparateProcess())
+    if (!uiCommon().isSeparateProcess())
         if (!powerUp())
             return false;
@@ -229,5 +229,5 @@
 
     /* Fetch corresponding states: */
-    if (vboxGlobal().isSeparateProcess())
+    if (uiCommon().isSeparateProcess())
     {
         m_fIsMouseSupportsAbsolute = mouse().GetAbsoluteSupported();
@@ -259,5 +259,5 @@
 
 #ifdef VBOX_GUI_WITH_PIDFILE
-    vboxGlobal().createPidfile();
+    uiCommon().createPidfile();
 #endif /* VBOX_GUI_WITH_PIDFILE */
 
@@ -272,10 +272,10 @@
 {
     /* Power UP machine: */
-    CProgress progress = vboxGlobal().shouldStartPaused() ? console().PowerUpPaused() : console().PowerUp();
+    CProgress progress = uiCommon().shouldStartPaused() ? console().PowerUpPaused() : console().PowerUp();
 
     /* Check for immediate failure: */
     if (!console().isOk() || progress.isNull())
     {
-        if (vboxGlobal().showStartVMErrors())
+        if (uiCommon().showStartVMErrors())
             msgCenter().cannotStartMachine(console(), machineName());
         LogRel(("GUI: Aborting startup due to power up issue detected...\n"));
@@ -284,7 +284,7 @@
 
     /* Some logging right after we powered up: */
-    LogRel(("Qt version: %s\n", VBoxGlobal::qtRTVersionString().toUtf8().constData()));
+    LogRel(("Qt version: %s\n", UICommon::qtRTVersionString().toUtf8().constData()));
 #ifdef VBOX_WS_X11
-    LogRel(("X11 Window Manager code: %d\n", (int)vboxGlobal().typeOfWindowManager()));
+    LogRel(("X11 Window Manager code: %d\n", (int)uiCommon().typeOfWindowManager()));
 #endif
 
@@ -312,5 +312,5 @@
     if (!progress.isOk() || progress.GetResultCode() != 0)
     {
-        if (vboxGlobal().showStartVMErrors())
+        if (uiCommon().showStartVMErrors())
             msgCenter().cannotStartMachine(progress, machineName());
         LogRel(("GUI: Aborting startup due to power up progress issue detected...\n"));
@@ -421,6 +421,6 @@
     {
         /* Search for corresponding VM: */
-        CVirtualBox vbox = vboxGlobal().virtualBox();
-        const QUuid uMachineID = vboxGlobal().managedVMUuid();
+        CVirtualBox vbox = uiCommon().virtualBox();
+        const QUuid uMachineID = uiCommon().managedVMUuid();
         const CMachine mach = vbox.FindMachine(uMachineID.toString());
         if (!vbox.isOk() || mach.isNull())
@@ -432,6 +432,6 @@
 
         /* Open a direct session to modify that VM: */
-        CSession sess = vboxGlobal().openSession(vboxGlobal().managedVMUuid(),
-                                                 vboxGlobal().isSeparateProcess()
+        CSession sess = uiCommon().openSession(uiCommon().managedVMUuid(),
+                                                 uiCommon().isSeparateProcess()
                                                  ? KLockType_Write : KLockType_Shared);
         if (sess.isNull())
@@ -598,5 +598,5 @@
 {
     /* Skip unrelated machine IDs: */
-    if (vboxGlobal().managedVMUuid() != uMachineID)
+    if (uiCommon().managedVMUuid() != uMachineID)
         return;
 
@@ -1027,6 +1027,6 @@
 {
     /* Open session: */
-    m_session = vboxGlobal().openSession(vboxGlobal().managedVMUuid(),
-                                         vboxGlobal().isSeparateProcess()
+    m_session = uiCommon().openSession(uiCommon().managedVMUuid(),
+                                         uiCommon().isSeparateProcess()
                                          ? KLockType_Shared : KLockType_VM);
     if (m_session.isNull())
@@ -1233,5 +1233,5 @@
             m_monitorVisibilityVector[0] = true;
     }
-    else if (vboxGlobal().isSeparateProcess())
+    else if (uiCommon().isSeparateProcess())
     {
         /* Update screen visibility status from display directly: */
@@ -1276,13 +1276,13 @@
     {
         /* Get machine ID: */
-        const QUuid uMachineID = vboxGlobal().managedVMUuid();
+        const QUuid uMachineID = uiCommon().managedVMUuid();
 
         /* Prepare machine-window icon: */
         {
             /* Acquire user machine-window icon: */
-            QIcon icon = vboxGlobal().vmUserIcon(machine());
+            QIcon icon = uiCommon().vmUserIcon(machine());
             /* Use the OS type icon if user one was not set: */
             if (icon.isNull())
-                icon = vboxGlobal().vmGuestOSTypeIcon(machine().GetOSTypeId());
+                icon = uiCommon().vmGuestOSTypeIcon(machine().GetOSTypeId());
             /* Use the default icon if nothing else works: */
             if (icon.isNull())
@@ -1349,5 +1349,5 @@
         m_defaultCloseAction = gEDataManager->defaultMachineCloseAction(uMachineID);
         m_restrictedCloseActions = gEDataManager->restrictedMachineCloseActions(uMachineID);
-        m_fAllCloseActionsRestricted =  (!vboxGlobal().isSeparateProcess() || (m_restrictedCloseActions & MachineCloseAction_Detach))
+        m_fAllCloseActionsRestricted =  (!uiCommon().isSeparateProcess() || (m_restrictedCloseActions & MachineCloseAction_Detach))
                                      && (m_restrictedCloseActions & MachineCloseAction_SaveState)
                                      && (m_restrictedCloseActions & MachineCloseAction_Shutdown)
@@ -1363,5 +1363,5 @@
     {
         /* Disable First RUN Wizard: */
-        gEDataManager->setMachineFirstTimeStarted(false, vboxGlobal().managedVMUuid());
+        gEDataManager->setMachineFirstTimeStarted(false, uiCommon().managedVMUuid());
 
         /* Remember if guest should autoresize: */
@@ -1369,5 +1369,5 @@
         {
             const QAction *pGuestAutoresizeSwitch = actionPool()->action(UIActionIndexRT_M_View_T_GuestAutoresize);
-            gEDataManager->setGuestScreenAutoResizeEnabled(pGuestAutoresizeSwitch->isChecked(), vboxGlobal().managedVMUuid());
+            gEDataManager->setGuestScreenAutoResizeEnabled(pGuestAutoresizeSwitch->isChecked(), uiCommon().managedVMUuid());
         }
 
@@ -1460,5 +1460,5 @@
 
     /* Close session: */
-    if (!m_session.isNull() && vboxGlobal().isVBoxSVCAvailable())
+    if (!m_session.isNull() && uiCommon().isVBoxSVCAvailable())
     {
         m_session.UnlockMachine();
@@ -1883,5 +1883,5 @@
 
     /* Create host network interface names list */
-    foreach (const CHostNetworkInterface &iface, vboxGlobal().host().GetNetworkInterfaces())
+    foreach (const CHostNetworkInterface &iface, uiCommon().host().GetNetworkInterfaces())
     {
         availableInterfaceNames << iface.GetName();
@@ -1889,5 +1889,5 @@
     }
 
-    ulong cCount = vboxGlobal().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(machine().GetChipsetType());
+    ulong cCount = uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(machine().GetChipsetType());
     for (ulong uAdapterIndex = 0; uAdapterIndex < cCount; ++uAdapterIndex)
     {
@@ -1940,5 +1940,5 @@
 {
     /* Get VBox: */
-    CVirtualBox comVBox = vboxGlobal().virtualBox();
+    CVirtualBox comVBox = uiCommon().virtualBox();
 
     /* Prepare medium to mount: */
@@ -1962,10 +1962,10 @@
 
         /* Try to find UIMedium among cached: */
-        guiMedium = vboxGlobal().medium(uMediumId);
+        guiMedium = uiCommon().medium(uMediumId);
         if (guiMedium.isNull())
         {
             /* Cache new one if necessary: */
             guiMedium = UIMedium(comMedium, enmMediumType, KMediumState_Created);
-            vboxGlobal().createMedium(guiMedium);
+            uiCommon().createMedium(guiMedium);
         }
     }
@@ -2033,6 +2033,6 @@
 {
     /* Check if the required virtualization features are active. We get this info only when the session is active. */
-    const bool fIs64BitsGuest = vboxGlobal().virtualBox().GetGuestOSType(guest().GetOSTypeId()).GetIs64Bit();
-    const bool fRecommendVirtEx = vboxGlobal().virtualBox().GetGuestOSType(guest().GetOSTypeId()).GetRecommendedVirtEx();
+    const bool fIs64BitsGuest = uiCommon().virtualBox().GetGuestOSType(guest().GetOSTypeId()).GetIs64Bit();
+    const bool fRecommendVirtEx = uiCommon().virtualBox().GetGuestOSType(guest().GetOSTypeId()).GetRecommendedVirtEx();
     AssertMsg(!fIs64BitsGuest || fRecommendVirtEx, ("Virtualization support missed for 64bit guest!\n"));
     const KVMExecutionEngine enmEngine = debugger().GetExecutionEngine();
@@ -2040,5 +2040,5 @@
     {
         /* Check whether vt-x / amd-v supported: */
-        bool fVTxAMDVSupported = vboxGlobal().host().GetProcessorFeature(KProcessorFeature_HWVirtEx);
+        bool fVTxAMDVSupported = uiCommon().host().GetProcessorFeature(KProcessorFeature_HWVirtEx);
 
         /* Pause VM: */
@@ -2093,5 +2093,5 @@
     /* And remember the request in extra data for guests with VMSVGA: */
     /* This should be done before the actual hint is sent in case the guest overrides it. */
-    gEDataManager->setLastGuestScreenVisibilityStatus(uScreenId, fIsMonitorVisible, vboxGlobal().managedVMUuid());
+    gEDataManager->setLastGuestScreenVisibilityStatus(uScreenId, fIsMonitorVisible, uiCommon().managedVMUuid());
 }
 
@@ -2115,5 +2115,5 @@
     /* See note in UIMachineView::sltHandleNotifyChange() regarding the graphics controller check. */
     if (machine().GetGraphicsControllerType() != KGraphicsControllerType_VMSVGA)
-        gEDataManager->setLastGuestScreenVisibilityStatus(uScreenId, fIsMonitorVisible, vboxGlobal().managedVMUuid());
+        gEDataManager->setLastGuestScreenVisibilityStatus(uScreenId, fIsMonitorVisible, uiCommon().managedVMUuid());
 
     /* Make sure action-pool knows guest-screen visibility status: */
@@ -2218,5 +2218,5 @@
 {
     /* Get host and prepare restrictions: */
-    const CHost host = vboxGlobal().host();
+    const CHost host = uiCommon().host();
     UIExtraDataMetaDefs::RuntimeMenuMachineActionType restrictionForMachine = UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Invalid;
     UIExtraDataMetaDefs::RuntimeMenuViewActionType restrictionForView = UIExtraDataMetaDefs::RuntimeMenuViewActionType_Invalid;
@@ -2226,5 +2226,5 @@
     {
         /* Initialize 'Machine' menu: */
-        if (!vboxGlobal().isSeparateProcess())
+        if (!uiCommon().isSeparateProcess())
             restrictionForMachine = (UIExtraDataMetaDefs::RuntimeMenuMachineActionType)(restrictionForMachine | UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Detach);
     }
@@ -2273,5 +2273,5 @@
         bool fAtLeastOneAdapterActive = false;
         const KChipsetType chipsetType = machine().GetChipsetType();
-        ULONG uSlots = vboxGlobal().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(chipsetType);
+        ULONG uSlots = uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(chipsetType);
         for (ULONG uSlot = 0; uSlot < uSlots; ++uSlot)
         {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIVMCloseDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIVMCloseDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIVMCloseDialog.cpp	(revision 79365)
@@ -32,5 +32,5 @@
 #include "UIMessageCenter.h"
 #include "UIConverter.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "QIDialogButtonBox.h"
 
@@ -211,5 +211,5 @@
         m_enmLastCloseAction == MachineCloseAction_Shutdown && !m_fIsACPIEnabled)
         newCloseAction = MachineCloseAction_Shutdown;
-    gEDataManager->setLastMachineCloseAction(newCloseAction, vboxGlobal().managedVMUuid());
+    gEDataManager->setLastMachineCloseAction(newCloseAction, uiCommon().managedVMUuid());
 
     /* Hide the dialog: */
@@ -525,5 +525,5 @@
 
     /* Check which close-actions are resticted: */
-    bool fIsDetachAllowed = vboxGlobal().isSeparateProcess() && !(m_restictedCloseActions & MachineCloseAction_Detach);
+    bool fIsDetachAllowed = uiCommon().isSeparateProcess() && !(m_restictedCloseActions & MachineCloseAction_Detach);
     bool fIsStateSavingAllowed = !(m_restictedCloseActions & MachineCloseAction_SaveState);
     bool fIsACPIShutdownAllowed = !(m_restictedCloseActions & MachineCloseAction_Shutdown);
@@ -557,5 +557,5 @@
     QRadioButton *pRadioButtonToChoose = 0;
     /* If choosing 'last choice' is possible: */
-    m_enmLastCloseAction = gEDataManager->lastMachineCloseAction(vboxGlobal().managedVMUuid());
+    m_enmLastCloseAction = gEDataManager->lastMachineCloseAction(uiCommon().managedVMUuid());
     if (m_enmLastCloseAction == MachineCloseAction_Detach && fIsDetachAllowed)
     {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp	(revision 79365)
@@ -20,5 +20,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDesktopWidgetWatchdog.h"
 #include "UIMessageCenter.h"
@@ -86,5 +86,5 @@
     Q_UNUSED(uScreenId);
 #ifdef VBOX_WS_MAC
-    return vboxGlobal().osRelease() <= MacOSXRelease_Lion ? Qt::FramelessWindowHint :
+    return uiCommon().osRelease() <= MacOSXRelease_Lion ? Qt::FramelessWindowHint :
            uScreenId == 0 || screensHaveSeparateSpaces() ? Qt::Window : Qt::FramelessWindowHint;
 #else /* !VBOX_WS_MAC */
@@ -102,5 +102,5 @@
 #ifdef VBOX_WS_MAC
     /* For Lion and previous: */
-    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
+    if (uiCommon().osRelease() <= MacOSXRelease_Lion)
     {
         /* Make sure all machine-window(s) have proper geometry: */
@@ -131,5 +131,5 @@
 {
     /* Make sure this method is only used for ML and next: */
-    AssertReturnVoid(vboxGlobal().osRelease() > MacOSXRelease_Lion);
+    AssertReturnVoid(uiCommon().osRelease() > MacOSXRelease_Lion);
 
     /* Get sender machine-window: */
@@ -144,5 +144,5 @@
 {
     /* Make sure this method is only used for ML and next: */
-    AssertReturnVoid(vboxGlobal().osRelease() > MacOSXRelease_Lion);
+    AssertReturnVoid(uiCommon().osRelease() > MacOSXRelease_Lion);
 
     /* Get sender machine-window: */
@@ -166,5 +166,5 @@
 {
     /* Make sure this method is only used for ML and next: */
-    AssertReturnVoid(vboxGlobal().osRelease() > MacOSXRelease_Lion);
+    AssertReturnVoid(uiCommon().osRelease() > MacOSXRelease_Lion);
 
     /* Get sender machine-window: */
@@ -179,5 +179,5 @@
 {
     /* Make sure this method is only used for ML and next: */
-    AssertReturnVoid(vboxGlobal().osRelease() > MacOSXRelease_Lion);
+    AssertReturnVoid(uiCommon().osRelease() > MacOSXRelease_Lion);
 
     /* Get sender machine-window: */
@@ -244,5 +244,5 @@
 {
     /* Make sure this method is only used for ML and next: */
-    AssertReturnVoid(vboxGlobal().osRelease() > MacOSXRelease_Lion);
+    AssertReturnVoid(uiCommon().osRelease() > MacOSXRelease_Lion);
 
     /* Get sender machine-window: */
@@ -283,5 +283,5 @@
 {
     /* Base-class handling for Lion and previous: */
-    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
+    if (uiCommon().osRelease() <= MacOSXRelease_Lion)
         UIMachineLogic::sltChangeVisualStateToNormal();
     /* Special handling for ML and next: */
@@ -298,5 +298,5 @@
 {
     /* Base-class handling for Lion and previous: */
-    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
+    if (uiCommon().osRelease() <= MacOSXRelease_Lion)
         UIMachineLogic::sltChangeVisualStateToSeamless();
     /* Special handling for ML and next: */
@@ -313,5 +313,5 @@
 {
     /* Base-class handling for Lion and previous: */
-    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
+    if (uiCommon().osRelease() <= MacOSXRelease_Lion)
         UIMachineLogic::sltChangeVisualStateToScale();
     /* Special handling for ML and next: */
@@ -391,5 +391,5 @@
 #ifdef VBOX_WS_MAC
     /* For Lion and previous: */
-    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
+    if (uiCommon().osRelease() <= MacOSXRelease_Lion)
     {
         /* Make sure all machine-window(s) have proper geometry: */
@@ -415,5 +415,5 @@
 #ifdef VBOX_WS_MAC
     /* Call to base-class for Lion and previous: */
-    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
+    if (uiCommon().osRelease() <= MacOSXRelease_Lion)
         UIMachineLogic::sltGuestMonitorChange(changeType, uScreenId, screenGeo);
     /* Revalidate native fullscreen for ML and next: */
@@ -434,5 +434,5 @@
 #ifdef VBOX_WS_MAC
     /* Call to base-class for Lion and previous: */
-    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
+    if (uiCommon().osRelease() <= MacOSXRelease_Lion)
         UIMachineLogic::sltHostScreenCountChange();
     /* Revalidate native fullscreen for ML and next: */
@@ -509,5 +509,5 @@
 #ifdef VBOX_WS_MAC
     /* For ML and next: */
-    if (vboxGlobal().osRelease() > MacOSXRelease_Lion)
+    if (uiCommon().osRelease() > MacOSXRelease_Lion)
     {
         /* Register to native notifications: */
@@ -542,5 +542,5 @@
 #ifdef VBOX_WS_MAC
     /* For ML and next: */
-    if (vboxGlobal().osRelease() > MacOSXRelease_Lion)
+    if (uiCommon().osRelease() > MacOSXRelease_Lion)
     {
         /* Enable native fullscreen support: */
@@ -578,5 +578,5 @@
 
 #ifdef VBOX_WS_X11
-    switch (vboxGlobal().typeOfWindowManager())
+    switch (uiCommon().typeOfWindowManager())
     {
         case X11WMType_GNOMEShell:
@@ -623,5 +623,5 @@
 #ifdef VBOX_WS_MAC
     /* For ML and next: */
-    if (vboxGlobal().osRelease() > MacOSXRelease_Lion)
+    if (uiCommon().osRelease() > MacOSXRelease_Lion)
     {
         /* Unregister from native notifications: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp	(revision 79365)
@@ -24,5 +24,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDesktopWidgetWatchdog.h"
 #include "UIExtraDataManager.h"
@@ -65,5 +65,5 @@
 {
     /* Make sure this method is only used for ML and next: */
-    AssertReturnVoid(vboxGlobal().osRelease() > MacOSXRelease_Lion);
+    AssertReturnVoid(uiCommon().osRelease() > MacOSXRelease_Lion);
 
     /* Log all arrived notifications: */
@@ -155,5 +155,5 @@
 {
     /* Make sure this slot is called only under ML and next: */
-    AssertReturnVoid(vboxGlobal().osRelease() > MacOSXRelease_Lion);
+    AssertReturnVoid(uiCommon().osRelease() > MacOSXRelease_Lion);
 
     /* Make sure it is NULL or 'this' window passed: */
@@ -182,5 +182,5 @@
 {
     /* Make sure this slot is called only under ML and next: */
-    AssertReturnVoid(vboxGlobal().osRelease() > MacOSXRelease_Lion);
+    AssertReturnVoid(uiCommon().osRelease() > MacOSXRelease_Lion);
 
     /* Make sure it is NULL or 'this' window passed: */
@@ -231,5 +231,5 @@
 #ifdef VBOX_WS_MAC
     /* Native fullscreen stuff on ML and next: */
-    if (vboxGlobal().osRelease() > MacOSXRelease_Lion)
+    if (uiCommon().osRelease() > MacOSXRelease_Lion)
     {
         /* Make sure this window has fullscreen logic: */
@@ -261,5 +261,5 @@
 {
     /* Make sure mini-toolbar is not restricted: */
-    if (!gEDataManager->miniToolbarEnabled(vboxGlobal().managedVMUuid()))
+    if (!gEDataManager->miniToolbarEnabled(uiCommon().managedVMUuid()))
         return;
 
@@ -267,6 +267,6 @@
     m_pMiniToolBar = new UIMiniToolBar(this,
                                        GeometryType_Full,
-                                       gEDataManager->miniToolbarAlignment(vboxGlobal().managedVMUuid()),
-                                       gEDataManager->autoHideMiniToolbar(vboxGlobal().managedVMUuid()),
+                                       gEDataManager->miniToolbarAlignment(uiCommon().managedVMUuid()),
+                                       gEDataManager->autoHideMiniToolbar(uiCommon().managedVMUuid()),
                                        screenId());
     AssertPtrReturnVoid(m_pMiniToolBar);
@@ -294,5 +294,5 @@
 
     /* Save mini-toolbar settings: */
-    gEDataManager->setAutoHideMiniToolbar(m_pMiniToolBar->autoHide(), vboxGlobal().managedVMUuid());
+    gEDataManager->setAutoHideMiniToolbar(m_pMiniToolBar->autoHide(), uiCommon().managedVMUuid());
     /* Delete mini-toolbar: */
     delete m_pMiniToolBar;
@@ -305,5 +305,5 @@
 #ifdef VBOX_WS_MAC
     /* Native fullscreen stuff on ML and next: */
-    if (vboxGlobal().osRelease() > MacOSXRelease_Lion)
+    if (uiCommon().osRelease() > MacOSXRelease_Lion)
     {
         /* Unregister from native fullscreen notifications: */
@@ -343,5 +343,5 @@
 
     /* Resize window to the appropriate size on Lion and previous: */
-    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
+    if (uiCommon().osRelease() <= MacOSXRelease_Lion)
         resize(workingArea.size());
     /* Resize window to the appropriate size on ML and next if it's screen has no own user-space: */
@@ -354,5 +354,5 @@
     {
         /* Load normal geometry first of all: */
-        QRect geo = gEDataManager->machineWindowGeometry(UIVisualStateType_Normal, m_uScreenId, vboxGlobal().managedVMUuid());
+        QRect geo = gEDataManager->machineWindowGeometry(UIVisualStateType_Normal, m_uScreenId, uiCommon().managedVMUuid());
         /* If normal geometry is null => use frame-buffer size: */
         if (geo.isNull())
@@ -366,5 +366,5 @@
         /* Move window to the center of working-area: */
         geo.moveCenter(workingArea.center());
-        VBoxGlobal::setTopLevelGeometry(this, geo);
+        UICommon::setTopLevelGeometry(this, geo);
     }
 
@@ -379,10 +379,10 @@
 
     /* Determine whether we should use the native full-screen mode: */
-    const bool fUseNativeFullScreen = VBoxGlobal::supportsFullScreenMonitorsProtocolX11() &&
+    const bool fUseNativeFullScreen = UICommon::supportsFullScreenMonitorsProtocolX11() &&
                                       !gEDataManager->legacyFullscreenModeRequested();
     if (fUseNativeFullScreen)
     {
         /* Tell recent window managers which host-screen this window should be mapped to: */
-        VBoxGlobal::setFullScreenMonitorX11(this, pFullscreenLogic->hostScreenForGuestScreen(m_uScreenId));
+        UICommon::setFullScreenMonitorX11(this, pFullscreenLogic->hostScreenForGuestScreen(m_uScreenId));
     }
 
@@ -420,5 +420,5 @@
 
         /* Simple show() for ML and next, showFullScreen() otherwise: */
-        if (vboxGlobal().osRelease() > MacOSXRelease_Lion)
+        if (uiCommon().osRelease() > MacOSXRelease_Lion)
             show();
         else
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationDataItem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationDataItem.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationDataItem.cpp	(revision 79365)
@@ -21,5 +21,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIConverter.h"
 #include "UIDetailsGenerator.h"
@@ -439,5 +439,5 @@
                 {
                     strResolution += QString(" ");
-                    strResolution += QString(VBoxGlobal::tr("off", "guest monitor status"));
+                    strResolution += QString(UICommon::tr("off", "guest monitor status"));
                 }
                 aResolutions[iScreen] = strResolution;
@@ -465,6 +465,6 @@
             /* Determine virtualization attributes: */
             QString strVirtualization = debugger.GetHWVirtExEnabled() ?
-                                        VBoxGlobal::tr("Active", "details report (VT-x/AMD-V)") :
-                                        VBoxGlobal::tr("Inactive", "details report (VT-x/AMD-V)");
+                                        UICommon::tr("Active", "details report (VT-x/AMD-V)") :
+                                        UICommon::tr("Inactive", "details report (VT-x/AMD-V)");
             QString strExecutionEngine;
             switch (debugger.GetExecutionEngine())
@@ -483,13 +483,13 @@
                     RT_FALL_THRU();
                 case KVMExecutionEngine_NotSet:
-                    strExecutionEngine = VBoxGlobal::tr("not set", "details report (execution engine)");
+                    strExecutionEngine = UICommon::tr("not set", "details report (execution engine)");
                     break;
             }
             QString strNestedPaging = debugger.GetHWVirtExNestedPagingEnabled() ?
-                                      VBoxGlobal::tr("Active", "details report (Nested Paging)") :
-                                      VBoxGlobal::tr("Inactive", "details report (Nested Paging)");
+                                      UICommon::tr("Active", "details report (Nested Paging)") :
+                                      UICommon::tr("Inactive", "details report (Nested Paging)");
             QString strUnrestrictedExecution = debugger.GetHWVirtExUXEnabled() ?
-                                               VBoxGlobal::tr("Active", "details report (Unrestricted Execution)") :
-                                               VBoxGlobal::tr("Inactive", "details report (Unrestricted Execution)");
+                                               UICommon::tr("Active", "details report (Unrestricted Execution)") :
+                                               UICommon::tr("Inactive", "details report (Unrestricted Execution)");
             QString strParavirtProvider = gpConverter->toString(m_machine.GetEffectiveParavirtProvider());
 
@@ -509,5 +509,5 @@
                 strOSType = tr("Not Detected", "guest os type");
             else
-                strOSType = vboxGlobal().vmGuestOSTypeDescription(strOSType);
+                strOSType = uiCommon().vmGuestOSTypeDescription(strOSType);
 
             /* VRDE information: */
@@ -570,5 +570,5 @@
 {
     /* Network statistics: */
-    ulong count = vboxGlobal().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(m_machine.GetChipsetType());
+    ulong count = uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(m_machine.GetChipsetType());
     for (ulong i = 0; i < count; ++i)
     {
@@ -630,5 +630,5 @@
 
             /* Enumerate network-adapters: */
-            ulong uCount = vboxGlobal().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(m_machine.GetChipsetType());
+            ulong uCount = uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(m_machine.GetChipsetType());
             for (ulong uSlot = 0; uSlot < uCount; ++uSlot)
             {
@@ -637,5 +637,5 @@
                 {
                     QStringList keys = m_links[QString("NA%1").arg(uSlot)];
-                    p_text << UITextTableLine(VBoxGlobal::tr("Adapter %1", "details report (network)").arg(uSlot + 1), QString());
+                    p_text << UITextTableLine(UICommon::tr("Adapter %1", "details report (network)").arg(uSlot + 1), QString());
 
                     foreach (QString strKey, keys)
@@ -721,5 +721,5 @@
 {
     /* Storage statistics: */
-    CSystemProperties sp = vboxGlobal().virtualBox().GetSystemProperties();
+    CSystemProperties sp = uiCommon().virtualBox().GetSystemProperties();
     CStorageControllerVector controllers = m_machine.GetStorageControllers();
     int iIDECount = 0;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationItem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationItem.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationItem.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIIconPool.h"
 #include "UIInformationItem.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIVMInformationDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIVMInformationDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIVMInformationDialog.cpp	(revision 79365)
@@ -32,5 +32,5 @@
 #include "QITabWidget.h"
 #include "QIDialogButtonBox.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "VBoxUtils.h"
 #include "UIInformationConfiguration.h"
@@ -100,5 +100,5 @@
 bool UIVMInformationDialog::shouldBeMaximized() const
 {
-    return gEDataManager->informationWindowShouldBeMaximized(vboxGlobal().managedVMUuid());
+    return gEDataManager->informationWindowShouldBeMaximized(uiCommon().managedVMUuid());
 }
 
@@ -169,9 +169,9 @@
     /* This is needed at least for some VM to show correct storage info. */
 #ifndef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
-    if (vboxGlobal().uiType() == VBoxGlobal::UIType_RuntimeUI)
+    if (uiCommon().uiType() == UICommon::UIType_RuntimeUI)
 #else
-    if (!vboxGlobal().isFullMediumEnumerationRequested())
+    if (!uiCommon().isFullMediumEnumerationRequested())
 #endif
-        vboxGlobal().startMediumEnumeration();
+        uiCommon().startMediumEnumeration();
 }
 
@@ -291,5 +291,5 @@
     {
         /* Load geometry: */
-        m_geometry = gEDataManager->informationWindowGeometry(this, m_pMachineWindow, vboxGlobal().managedVMUuid());
+        m_geometry = gEDataManager->informationWindowGeometry(this, m_pMachineWindow, uiCommon().managedVMUuid());
 
         /* Restore geometry: */
@@ -306,7 +306,7 @@
         /* Save geometry: */
 #ifdef VBOX_WS_MAC
-        gEDataManager->setInformationWindowGeometry(m_geometry, ::darwinIsWindowMaximized(this), vboxGlobal().managedVMUuid());
+        gEDataManager->setInformationWindowGeometry(m_geometry, ::darwinIsWindowMaximized(this), uiCommon().managedVMUuid());
 #else /* VBOX_WS_MAC */
-        gEDataManager->setInformationWindowGeometry(m_geometry, isMaximized(), vboxGlobal().managedVMUuid());
+        gEDataManager->setInformationWindowGeometry(m_geometry, isMaximized(), uiCommon().managedVMUuid());
 #endif /* !VBOX_WS_MAC */
         LogRel2(("GUI: UIVMInformationDialog: Geometry saved as: Origin=%dx%d, Size=%dx%d\n",
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDesktopWidgetWatchdog.h"
 #include "UIMessageCenter.h"
@@ -161,6 +161,6 @@
 
     /* Invert menu-bar availability option: */
-    const bool fEnabled = gEDataManager->menuBarEnabled(vboxGlobal().managedVMUuid());
-    gEDataManager->setMenuBarEnabled(!fEnabled, vboxGlobal().managedVMUuid());
+    const bool fEnabled = gEDataManager->menuBarEnabled(uiCommon().managedVMUuid());
+    gEDataManager->setMenuBarEnabled(!fEnabled, uiCommon().managedVMUuid());
 }
 #endif /* !RT_OS_DARWIN */
@@ -211,6 +211,6 @@
 
     /* Invert status-bar availability option: */
-    const bool fEnabled = gEDataManager->statusBarEnabled(vboxGlobal().managedVMUuid());
-    gEDataManager->setStatusBarEnabled(!fEnabled, vboxGlobal().managedVMUuid());
+    const bool fEnabled = gEDataManager->statusBarEnabled(uiCommon().managedVMUuid());
+    gEDataManager->setStatusBarEnabled(!fEnabled, uiCommon().managedVMUuid());
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 79365)
@@ -24,5 +24,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDesktopWidgetWatchdog.h"
 #include "UIMachineWindowNormal.h"
@@ -135,9 +135,9 @@
 {
     /* Skip unrelated machine IDs: */
-    if (vboxGlobal().managedVMUuid() != uMachineID)
+    if (uiCommon().managedVMUuid() != uMachineID)
         return;
 
     /* Check whether menu-bar is enabled: */
-    const bool fEnabled = gEDataManager->menuBarEnabled(vboxGlobal().managedVMUuid());
+    const bool fEnabled = gEDataManager->menuBarEnabled(uiCommon().managedVMUuid());
     /* Update settings action 'enable' state: */
     QAction *pActionMenuBarSettings = actionPool()->action(UIActionIndexRT_M_View_M_MenuBar_S_Settings);
@@ -161,5 +161,5 @@
 {
     /* Raise action's context-menu: */
-    if (gEDataManager->menuBarContextMenuEnabled(vboxGlobal().managedVMUuid()))
+    if (gEDataManager->menuBarContextMenuEnabled(uiCommon().managedVMUuid()))
         actionPool()->action(UIActionIndexRT_M_View_M_MenuBar)->menu()->exec(menuBar()->mapToGlobal(position));
 }
@@ -169,9 +169,9 @@
 {
     /* Skip unrelated machine IDs: */
-    if (vboxGlobal().managedVMUuid() != uMachineID)
+    if (uiCommon().managedVMUuid() != uMachineID)
         return;
 
     /* Check whether status-bar is enabled: */
-    const bool fEnabled = gEDataManager->statusBarEnabled(vboxGlobal().managedVMUuid());
+    const bool fEnabled = gEDataManager->statusBarEnabled(uiCommon().managedVMUuid());
     /* Update settings action 'enable' state: */
     QAction *pActionStatusBarSettings = actionPool()->action(UIActionIndexRT_M_View_M_StatusBar_S_Settings);
@@ -195,5 +195,5 @@
 {
     /* Raise action's context-menu: */
-    if (gEDataManager->statusBarContextMenuEnabled(vboxGlobal().managedVMUuid()))
+    if (gEDataManager->statusBarContextMenuEnabled(uiCommon().managedVMUuid()))
         actionPool()->action(UIActionIndexRT_M_View_M_StatusBar)->menu()->exec(statusBar()->mapToGlobal(position));
 }
@@ -331,5 +331,5 @@
 #ifdef VBOX_WS_MAC
     /* Beta label? */
-    if (vboxGlobal().isBeta())
+    if (uiCommon().isBeta())
     {
         QPixmap betaLabel = ::betaLabel(QSize(100, 16));
@@ -338,5 +338,5 @@
 
     /* For 'Yosemite' and above: */
-    if (vboxGlobal().osRelease() >= MacOSXRelease_Yosemite)
+    if (uiCommon().osRelease() >= MacOSXRelease_Yosemite)
     {
         /* Enable fullscreen support for every screen which requires it: */
@@ -370,5 +370,5 @@
         /* Load extra-data: */
         QRect geo = gEDataManager->machineWindowGeometry(machineLogic()->visualStateType(),
-                                                         m_uScreenId, vboxGlobal().managedVMUuid());
+                                                         m_uScreenId, uiCommon().managedVMUuid());
 
         /* If we do have proper geometry: */
@@ -380,5 +380,5 @@
                 /* Restore window geometry: */
                 m_normalGeometry = geo;
-                VBoxGlobal::setTopLevelGeometry(this, m_normalGeometry);
+                UICommon::setTopLevelGeometry(this, m_normalGeometry);
             }
             /* If previous machine-state was NOT SAVED: */
@@ -387,5 +387,5 @@
                 /* Restore only window position: */
                 m_normalGeometry = QRect(geo.x(), geo.y(), width(), height());
-                VBoxGlobal::setTopLevelGeometry(this, m_normalGeometry);
+                UICommon::setTopLevelGeometry(this, m_normalGeometry);
                 /* And normalize to the optimal-size: */
                 normalizeGeometry(false /* adjust position */);
@@ -394,5 +394,5 @@
             /* Maximize (if necessary): */
             if (gEDataManager->machineWindowShouldBeMaximized(machineLogic()->visualStateType(),
-                                                              m_uScreenId, vboxGlobal().managedVMUuid()))
+                                                              m_uScreenId, uiCommon().managedVMUuid()))
                 setWindowState(windowState() | Qt::WindowMaximized);
         }
@@ -409,5 +409,5 @@
             m_normalGeometry = geometry();
             m_normalGeometry.moveCenter(availableGeo.center());
-            VBoxGlobal::setTopLevelGeometry(this, m_normalGeometry);
+            UICommon::setTopLevelGeometry(this, m_normalGeometry);
         }
 
@@ -427,5 +427,5 @@
         gEDataManager->setMachineWindowGeometry(machineLogic()->visualStateType(),
                                                 m_uScreenId, m_normalGeometry,
-                                                isMaximizedChecked(), vboxGlobal().managedVMUuid());
+                                                isMaximizedChecked(), uiCommon().managedVMUuid());
     }
 
@@ -438,5 +438,5 @@
 #ifdef VBOX_WS_MAC
     /* Unregister 'Zoom' button from using our full-screen since Yosemite: */
-    if (vboxGlobal().osRelease() >= MacOSXRelease_Yosemite)
+    if (uiCommon().osRelease() >= MacOSXRelease_Yosemite)
         UICocoaApplication::instance()->unregisterCallbackForStandardWindowButton(this, StandardWindowButtonType_Zoom);
 #endif /* VBOX_WS_MAC */
@@ -585,8 +585,8 @@
     /* Adjust position if necessary: */
     if (fAdjustPosition)
-        frGeo = VBoxGlobal::normalizeGeometry(frGeo, gpDesktop->overallAvailableRegion());
+        frGeo = UICommon::normalizeGeometry(frGeo, gpDesktop->overallAvailableRegion());
 
     /* Finally, set the frame geometry: */
-    VBoxGlobal::setTopLevelGeometry(this, frGeo.left() + dl, frGeo.top() + dt,
+    UICommon::setTopLevelGeometry(this, frGeo.left() + dl, frGeo.top() + dt,
                                     frGeo.width() - dl - dr, frGeo.height() - dt - db);
 #else /* VBOX_GUI_WITH_CUSTOMIZATIONS1 */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineLogicScale.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineLogicScale.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineLogicScale.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDesktopWidgetWatchdog.h"
 #include "UIMessageCenter.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineViewScale.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineViewScale.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineViewScale.cpp	(revision 79365)
@@ -21,5 +21,5 @@
 
 /* GUI includes */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UISession.h"
 #include "UIMachineLogic.h"
@@ -71,5 +71,5 @@
     {
         /* Propagate scale-factor to 3D service if necessary: */
-        if (machine().GetAccelerate3DEnabled() && vboxGlobal().is3DAvailable())
+        if (machine().GetAccelerate3DEnabled() && uiCommon().is3DAvailable())
         {
             double xScaleFactor = (double)scaledSize.width()  / frameBuffer()->width();
@@ -130,5 +130,5 @@
     {
         /* Propagate scale-factor to 3D service if necessary: */
-        if (machine().GetAccelerate3DEnabled() && vboxGlobal().is3DAvailable())
+        if (machine().GetAccelerate3DEnabled() && uiCommon().is3DAvailable())
         {
             double xScaleFactor = (double)scaledSize.width()  / frameBuffer()->width();
@@ -153,5 +153,5 @@
     frameBuffer()->setUseUnscaledHiDPIOutput(fUseUnscaledHiDPIOutput);
     /* Propagate unscaled-hidpi-output feature to 3D service if necessary: */
-    if (machine().GetAccelerate3DEnabled() && vboxGlobal().is3DAvailable())
+    if (machine().GetAccelerate3DEnabled() && uiCommon().is3DAvailable())
         display().NotifyHiDPIOutputPolicyChange(fUseUnscaledHiDPIOutput);
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineWindowScale.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineWindowScale.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineWindowScale.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDesktopWidgetWatchdog.h"
 #include "UIExtraDataManager.h"
@@ -61,5 +61,5 @@
 
     /* Beta label? */
-    if (vboxGlobal().isBeta())
+    if (uiCommon().isBeta())
     {
         QPixmap betaLabel = ::betaLabel(QSize(100, 16));
@@ -68,5 +68,5 @@
 
     /* For 'Yosemite' and above: */
-    if (vboxGlobal().osRelease() >= MacOSXRelease_Yosemite)
+    if (uiCommon().osRelease() >= MacOSXRelease_Yosemite)
     {
         /* Enable fullscreen support for every screen which requires it: */
@@ -89,5 +89,5 @@
         /* Load extra-data: */
         QRect geo = gEDataManager->machineWindowGeometry(machineLogic()->visualStateType(),
-                                                         m_uScreenId, vboxGlobal().managedVMUuid());
+                                                         m_uScreenId, uiCommon().managedVMUuid());
 
         /* If we do have proper geometry: */
@@ -96,9 +96,9 @@
             /* Restore window geometry: */
             m_normalGeometry = geo;
-            VBoxGlobal::setTopLevelGeometry(this, m_normalGeometry);
+            UICommon::setTopLevelGeometry(this, m_normalGeometry);
 
             /* Maximize (if necessary): */
             if (gEDataManager->machineWindowShouldBeMaximized(machineLogic()->visualStateType(),
-                                                              m_uScreenId, vboxGlobal().managedVMUuid()))
+                                                              m_uScreenId, uiCommon().managedVMUuid()))
                 setWindowState(windowState() | Qt::WindowMaximized);
         }
@@ -115,5 +115,5 @@
             m_normalGeometry = geometry();
             m_normalGeometry.moveCenter(availableGeo.center());
-            VBoxGlobal::setTopLevelGeometry(this, m_normalGeometry);
+            UICommon::setTopLevelGeometry(this, m_normalGeometry);
         }
 
@@ -133,5 +133,5 @@
         gEDataManager->setMachineWindowGeometry(machineLogic()->visualStateType(),
                                                 m_uScreenId, m_normalGeometry,
-                                                isMaximizedChecked(), vboxGlobal().managedVMUuid());
+                                                isMaximizedChecked(), uiCommon().managedVMUuid());
     }
 
@@ -144,5 +144,5 @@
 {
     /* Unregister 'Zoom' button from using our full-screen since Yosemite: */
-    if (vboxGlobal().osRelease() >= MacOSXRelease_Yosemite)
+    if (uiCommon().osRelease() >= MacOSXRelease_Yosemite)
         UICocoaApplication::instance()->unregisterCallbackForStandardWindowButton(this, StandardWindowButtonType_Zoom);
 }
@@ -193,8 +193,8 @@
     /* Adjust position if necessary: */
     if (fAdjustPosition)
-        frGeo = VBoxGlobal::normalizeGeometry(frGeo, gpDesktop->overallAvailableRegion());
+        frGeo = UICommon::normalizeGeometry(frGeo, gpDesktop->overallAvailableRegion());
 
     /* Finally, set the frame geometry: */
-    VBoxGlobal::setTopLevelGeometry(this, frGeo.left() + dl, frGeo.top() + dt,
+    UICommon::setTopLevelGeometry(this, frGeo.left() + dl, frGeo.top() + dt,
                                     frGeo.width() - dl - dr, frGeo.height() - dt - db);
 #else /* VBOX_GUI_WITH_CUSTOMIZATIONS1 */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 #include "UIPopupCenter.h"
@@ -285,5 +285,5 @@
 
 #ifdef VBOX_WS_X11
-    switch (vboxGlobal().typeOfWindowManager())
+    switch (uiCommon().typeOfWindowManager())
     {
         case X11WMType_GNOMEShell:
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIDesktopWidgetWatchdog.h"
 #include "UIExtraDataManager.h"
@@ -126,5 +126,5 @@
 {
     /* Make sure mini-toolbar is not restricted: */
-    if (!gEDataManager->miniToolbarEnabled(vboxGlobal().managedVMUuid()))
+    if (!gEDataManager->miniToolbarEnabled(uiCommon().managedVMUuid()))
         return;
 
@@ -132,6 +132,6 @@
     m_pMiniToolBar = new UIMiniToolBar(this,
                                        GeometryType_Available,
-                                       gEDataManager->miniToolbarAlignment(vboxGlobal().managedVMUuid()),
-                                       gEDataManager->autoHideMiniToolbar(vboxGlobal().managedVMUuid()),
+                                       gEDataManager->miniToolbarAlignment(uiCommon().managedVMUuid()),
+                                       gEDataManager->autoHideMiniToolbar(uiCommon().managedVMUuid()),
                                        screenId());
     AssertPtrReturnVoid(m_pMiniToolBar);
@@ -159,5 +159,5 @@
 
     /* Save mini-toolbar settings: */
-    gEDataManager->setAutoHideMiniToolbar(m_pMiniToolBar->autoHide(), vboxGlobal().managedVMUuid());
+    gEDataManager->setAutoHideMiniToolbar(m_pMiniToolBar->autoHide(), uiCommon().managedVMUuid());
     /* Delete mini-toolbar: */
     delete m_pMiniToolBar;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 /* GUI includes: */
 #include "QIWidgetValidator.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIConverter.h"
 #include "UIIconPool.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 79365)
@@ -18,5 +18,5 @@
 /* GUI includes: */
 #include "QIWidgetValidator.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIExtraDataManager.h"
 #include "UIMessageCenter.h"
@@ -120,5 +120,5 @@
 {
     /* Get properties: */
-    CSystemProperties comProperties = vboxGlobal().virtualBox().GetSystemProperties();
+    CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     /* Prepare global data: */
     qRegisterMetaType<UISettingsDataGlobal>();
@@ -133,5 +133,5 @@
 {
     /* Get properties: */
-    CSystemProperties comProperties = vboxGlobal().virtualBox().GetSystemProperties();
+    CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     /* Prepare global data: */
     qRegisterMetaType<UISettingsDataGlobal>();
@@ -344,5 +344,5 @@
     /* We have to make sure that the Network, Serial pages are retranslated
      * before they are revalidated. Cause: They do string comparing within
-     * vboxGlobal which is retranslated at that point already: */
+     * UICommon which is retranslated at that point already: */
     QEvent event(QEvent::LanguageChange);
     if (QWidget *pPage = m_pSelector->idToPage(MachineSettingsPageType_Network))
@@ -402,6 +402,6 @@
     /* Prepare session: */
     m_session = configurationAccessLevel() == ConfigurationAccessLevel_Null ? CSession() :
-                configurationAccessLevel() == ConfigurationAccessLevel_Full ? vboxGlobal().openSession(m_uMachineId) :
-                                                                              vboxGlobal().openExistingSession(m_uMachineId);
+                configurationAccessLevel() == ConfigurationAccessLevel_Full ? uiCommon().openSession(m_uMachineId) :
+                                                                              uiCommon().openExistingSession(m_uMachineId);
     /* Check that session was created: */
     if (m_session.isNull())
@@ -428,6 +428,6 @@
     /* Prepare session: */
     m_session = configurationAccessLevel() == ConfigurationAccessLevel_Null ? CSession() :
-                configurationAccessLevel() == ConfigurationAccessLevel_Full ? vboxGlobal().openSession(m_uMachineId) :
-                                                                              vboxGlobal().openExistingSession(m_uMachineId);
+                configurationAccessLevel() == ConfigurationAccessLevel_Full ? uiCommon().openSession(m_uMachineId) :
+                                                                              uiCommon().openExistingSession(m_uMachineId);
     /* Check that session was created: */
     if (m_session.isNull())
@@ -503,5 +503,5 @@
     QString strDialogTitle;
     /* Get corresponding machine (required to compose dialog title): */
-    const CMachine &machine = vboxGlobal().virtualBox().FindMachine(m_uMachineId.toString());
+    const CMachine &machine = uiCommon().virtualBox().FindMachine(m_uMachineId.toString());
     if (!machine.isNull())
         strDialogTitle = tr("%1 - %2").arg(machine.GetName()).arg(titleExtension());
@@ -671,5 +671,5 @@
 
     /* Allow to reset first-run flag just when medium-enumeration was finished: */
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumEnumerationFinished,
+    connect(&uiCommon(), &UICommon::sigMediumEnumerationFinished,
             this, &UISettingsDialogMachine::sltAllowResetFirstRunFlag);
 
@@ -683,5 +683,5 @@
 
     /* Get corresponding machine (required to determine dialog type and page availability): */
-    m_machine = vboxGlobal().virtualBox().FindMachine(m_uMachineId.toString());
+    m_machine = uiCommon().virtualBox().FindMachine(m_uMachineId.toString());
     AssertMsg(!m_machine.isNull(), ("Can't find corresponding machine!\n"));
     m_enmSessionState = m_machine.GetSessionState();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 /* GUI includes: */
 #include "QIFileDialog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIGlobalSettingsExtension.h"
 #include "UIIconPool.h"
@@ -194,5 +194,5 @@
 
     /* Gather old extension data: */
-    const CExtPackVector &packages = vboxGlobal().virtualBox().
+    const CExtPackVector &packages = uiCommon().virtualBox().
                                      GetExtensionPackManager().GetInstalledExtPacks();
     foreach (const CExtPack &package, packages)
@@ -306,5 +306,5 @@
     {
         QString strExtPackName;
-        vboxGlobal().doExtPackInstallation(strFilePath, QString(), this, &strExtPackName);
+        uiCommon().doExtPackInstallation(strFilePath, QString(), this, &strExtPackName);
 
         /* Since we might be reinstalling an existing package, we have to
@@ -335,5 +335,5 @@
 
             /* Reinsert it into the cache and tree: */
-            CExtPackManager manager = vboxGlobal().virtualBox().GetExtensionPackManager();
+            CExtPackManager manager = uiCommon().virtualBox().GetExtensionPackManager();
             const CExtPack &package = manager.Find(strExtPackName);
             if (package.isOk())
@@ -367,5 +367,5 @@
         {
             /* Uninstall the package: */
-            CExtPackManager manager = vboxGlobal().virtualBox().GetExtensionPackManager();
+            CExtPackManager manager = uiCommon().virtualBox().GetExtensionPackManager();
             /** @todo Refuse this if any VMs are running. */
             QString displayInfo;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsGeneral.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsGeneral.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsGeneral.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 #include "UIExtraDataManager.h"
 #include "UIErrorString.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 
@@ -160,6 +160,6 @@
 
         /* Configure other widgets: */
-        m_pSelectorMachineFolder->setHomeDir(vboxGlobal().homeFolder());
-        m_pSelectorVRDPLibName->setHomeDir(vboxGlobal().homeFolder());
+        m_pSelectorMachineFolder->setHomeDir(uiCommon().homeFolder());
+        m_pSelectorVRDPLibName->setHomeDir(uiCommon().homeFolder());
         m_pSelectorVRDPLibName->setMode(UIFilePathSelector::Mode_File_Open);
     }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.cpp	(revision 79365)
@@ -26,5 +26,5 @@
 #include "QITableView.h"
 #include "QIWidgetValidator.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPool.h"
 #include "UIGlobalSettingsInput.h"
@@ -921,5 +921,5 @@
                                                       strShortcutKey,
                                                       shortcut.scope(),
-                                                      VBoxGlobal::removeAccelMark(shortcut.description()),
+                                                      UICommon::removeAccelMark(shortcut.description()),
                                                       shortcut.sequence().toString(QKeySequence::NativeText),
                                                       shortcut.defaultSequence().toString(QKeySequence::NativeText));
@@ -983,5 +983,5 @@
     {
         UIValidationMessage message;
-        message.first = VBoxGlobal::removeAccelMark(m_pTabWidget->tabText(UIHotKeyTableIndex_Selector));
+        message.first = UICommon::removeAccelMark(m_pTabWidget->tabText(UIHotKeyTableIndex_Selector));
         message.second << tr("Some items have the same shortcuts assigned.");
         messages << message;
@@ -993,5 +993,5 @@
     {
         UIValidationMessage message;
-        message.first = VBoxGlobal::removeAccelMark(m_pTabWidget->tabText(UIHotKeyTableIndex_Machine));
+        message.first = UICommon::removeAccelMark(m_pTabWidget->tabText(UIHotKeyTableIndex_Machine));
         message.second << tr("Some items have the same shortcuts assigned.");
         messages << message;
@@ -1141,5 +1141,5 @@
 
         /* In the VM process we start by displaying the Runtime UI tab: */
-        if (vboxGlobal().uiType() == VBoxGlobal::UIType_RuntimeUI)
+        if (uiCommon().uiType() == UICommon::UIType_RuntimeUI)
             m_pTabWidget->setCurrentWidget(pMachineTab);
     }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsLanguage.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsLanguage.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsLanguage.cpp	(revision 79365)
@@ -26,5 +26,5 @@
 #include "UIExtraDataManager.h"
 #include "UIMessageCenter.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* Other VBox includes: */
@@ -76,5 +76,5 @@
 
         /* Note: context/source/comment arguments below must match strings
-         * used in VBoxGlobal::languageName() and friends (the latter are the
+         * used in UICommon::languageName() and friends (the latter are the
          * source of information for the lupdate tool that generates
          * translation files) */
@@ -116,5 +116,5 @@
 
         /* Current language appears in bold: */
-        if (text(1) == VBoxGlobal::languageId())
+        if (text(1) == UICommon::languageId())
         {
             QFont fnt = font(0);
@@ -270,5 +270,5 @@
 
     /* Reload language tree: */
-    reloadLanguageTree(VBoxGlobal::languageId());
+    reloadLanguageTree(UICommon::languageId());
 }
 
@@ -382,8 +382,8 @@
     int rc = RTPathAppPrivateNoArch(szNlsPath, sizeof(szNlsPath));
     AssertRC(rc);
-    QString strNlsPath = QString(szNlsPath) + VBoxGlobal::vboxLanguageSubDirectory();
+    QString strNlsPath = QString(szNlsPath) + UICommon::vboxLanguageSubDirectory();
     QDir nlsDir(strNlsPath);
-    QStringList files = nlsDir.entryList(QStringList(QString("%1*%2").arg(VBoxGlobal::vboxLanguageFileBase(),
-                                                                          VBoxGlobal::vboxLanguageFileExtension())),
+    QStringList files = nlsDir.entryList(QStringList(QString("%1*%2").arg(UICommon::vboxLanguageFileBase(),
+                                                                          UICommon::vboxLanguageFileExtension())),
                                          QDir::Files);
 
@@ -392,10 +392,10 @@
     new UILanguageItem(m_pLanguageTree);
     /* Add the built-in language: */
-    new UILanguageItem(m_pLanguageTree, translator, VBoxGlobal::vboxBuiltInLanguageName(), true /* built-in */);
+    new UILanguageItem(m_pLanguageTree, translator, UICommon::vboxBuiltInLanguageName(), true /* built-in */);
     /* Add all existing languages */
     for (QStringList::Iterator it = files.begin(); it != files.end(); ++it)
     {
         QString strFileName = *it;
-        QRegExp regExp(VBoxGlobal::vboxLanguageFileBase() + VBoxGlobal::vboxLanguageIdRegExp());
+        QRegExp regExp(UICommon::vboxLanguageFileBase() + UICommon::vboxLanguageIdRegExp());
         int iPos = regExp.indexIn(strFileName);
         if (iPos == -1)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.cpp	(revision 79365)
@@ -21,5 +21,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIIconPool.h"
 #include "UIConverter.h"
@@ -238,5 +238,5 @@
 
     /* Gather old network data: */
-    foreach (const CNATNetwork &network, vboxGlobal().virtualBox().GetNATNetworks())
+    foreach (const CNATNetwork &network, uiCommon().virtualBox().GetNATNetworks())
         loadToCacheFromNATNetwork(network, m_pCache->child(network.GetNetworkName()));
 
@@ -693,5 +693,5 @@
 
         /* Get VBox for further activities: */
-        CVirtualBox comVBox = vboxGlobal().virtualBox();
+        CVirtualBox comVBox = uiCommon().virtualBox();
         /* Search for a NAT network with required name: */
         CNATNetwork comNetwork = comVBox.FindNATNetworkByName(oldNatData.m_strName);
@@ -726,5 +726,5 @@
 
         /* Get VBox for further activities: */
-        CVirtualBox comVBox = vboxGlobal().virtualBox();
+        CVirtualBox comVBox = uiCommon().virtualBox();
         /* Create NAT network with required name: */
         CNATNetwork comNetwork = comVBox.CreateNATNetwork(newNatData.m_strNewName);
@@ -829,5 +829,5 @@
 
         /* Get VBox for further activities: */
-        CVirtualBox comVBox = vboxGlobal().virtualBox();
+        CVirtualBox comVBox = uiCommon().virtualBox();
         /* Search for a NAT network with required name: */
         CNATNetwork comNetwork = comVBox.FindNATNetworkByName(oldNatData.m_strName);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsProxy.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsProxy.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsProxy.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 #include "UIExtraDataManager.h"
 #include "UIMessageCenter.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "VBoxUtils.h"
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsUpdate.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsUpdate.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsUpdate.cpp	(revision 79365)
@@ -20,5 +20,5 @@
 #include "UIExtraDataManager.h"
 #include "UIMessageCenter.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 #include "UIMachineSettingsDisplay.h"
 #include "UIErrorString.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "VBox2DHelpers.h"
 
@@ -319,5 +319,5 @@
     /* Check if WDDM mode supported by the guest OS type: */
     const QString strGuestOSTypeId = m_comGuestOSType.isNotNull() ? m_comGuestOSType.GetId() : QString();
-    m_fWddmModeSupported = VBoxGlobal::isWddmCompatibleOsType(strGuestOSTypeId);
+    m_fWddmModeSupported = UICommon::isWddmCompatibleOsType(strGuestOSTypeId);
 #endif
 
@@ -563,8 +563,8 @@
         /* Prepare message: */
         UIValidationMessage message;
-        message.first = VBoxGlobal::removeAccelMark(m_pTabWidget->tabText(0));
+        message.first = UICommon::removeAccelMark(m_pTabWidget->tabText(0));
 
         /* 3D acceleration test: */
-        if (m_pCheckbox3D->isChecked() && !vboxGlobal().is3DAvailable())
+        if (m_pCheckbox3D->isChecked() && !uiCommon().is3DAvailable())
         {
             message.second << tr("The virtual machine is set up to use hardware graphics acceleration. "
@@ -576,5 +576,5 @@
         if (shouldWeWarnAboutLowVRAM() && !m_comGuestOSType.isNull())
         {
-            quint64 uNeedBytes = VBoxGlobal::requiredVideoMemory(m_comGuestOSType.GetId(), m_pEditorVideoScreenCount->value());
+            quint64 uNeedBytes = UICommon::requiredVideoMemory(m_comGuestOSType.GetId(), m_pEditorVideoScreenCount->value());
 
             /* Basic video RAM amount test: */
@@ -583,5 +583,5 @@
                 message.second << tr("The virtual machine is currently assigned less than <b>%1</b> of video memory "
                                      "which is the minimum amount required to switch to full-screen or seamless mode.")
-                                     .arg(vboxGlobal().formatSize(uNeedBytes, 0, FormatSize_RoundUp));
+                                     .arg(uiCommon().formatSize(uNeedBytes, 0, FormatSize_RoundUp));
             }
 #ifdef VBOX_WITH_VIDEOHWACCEL
@@ -594,5 +594,5 @@
                     message.second << tr("The virtual machine is currently assigned less than <b>%1</b> of video memory "
                                          "which is the minimum amount required for High Definition Video to be played efficiently.")
-                                         .arg(vboxGlobal().formatSize(uNeedBytes, 0, FormatSize_RoundUp));
+                                         .arg(uiCommon().formatSize(uNeedBytes, 0, FormatSize_RoundUp));
                 }
             }
@@ -608,5 +608,5 @@
                                          "and the operating system hint is set to Windows Vista or later. "
                                          "For best performance you should set the machine's video memory to at least <b>%1</b>.")
-                                         .arg(vboxGlobal().formatSize(uNeedBytes, 0, FormatSize_RoundUp));
+                                         .arg(uiCommon().formatSize(uNeedBytes, 0, FormatSize_RoundUp));
                 }
             }
@@ -632,9 +632,9 @@
         /* Prepare message: */
         UIValidationMessage message;
-        message.first = VBoxGlobal::removeAccelMark(m_pTabWidget->tabText(1));
+        message.first = UICommon::removeAccelMark(m_pTabWidget->tabText(1));
 
 #ifdef VBOX_WITH_EXTPACK
         /* VRDE Extension Pack presence test: */
-        CExtPack extPack = vboxGlobal().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
+        CExtPack extPack = uiCommon().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
         if (m_pCheckboxRemoteDisplay->isChecked() && (extPack.isNull() || !extPack.GetUsable()))
         {
@@ -710,5 +710,5 @@
 
     /* Screen stuff: */
-    CSystemProperties sys = vboxGlobal().virtualBox().GetSystemProperties();
+    CSystemProperties sys = uiCommon().virtualBox().GetSystemProperties();
     m_pEditorVideoMemorySize->setSuffix(QString(" %1").arg(tr("MB")));
     m_pLabelVideoMemorySizeMin->setText(tr("%1 MB").arg(m_iMinVRAM));
@@ -965,5 +965,5 @@
 {
     /* Prepare common variables: */
-    const CSystemProperties sys = vboxGlobal().virtualBox().GetSystemProperties();
+    const CSystemProperties sys = uiCommon().virtualBox().GetSystemProperties();
     m_iMinVRAM = sys.GetMinGuestVRAM();
     m_iMaxVRAM = sys.GetMaxGuestVRAM();
@@ -989,5 +989,5 @@
         {
             /* Configure editor: */
-            vboxGlobal().setMinimumWidthAccordingSymbolCount(m_pEditorVideoMemorySize, 7);
+            uiCommon().setMinimumWidthAccordingSymbolCount(m_pEditorVideoMemorySize, 7);
             m_pEditorVideoMemorySize->setMinimum(m_iMinVRAM);
             m_pEditorVideoMemorySize->setMaximum(m_iMaxVRAMVisible);
@@ -1121,5 +1121,5 @@
         {
             /* Configure editor: */
-            vboxGlobal().setMinimumWidthAccordingSymbolCount(m_pEditorVideoCaptureWidth, 5);
+            uiCommon().setMinimumWidthAccordingSymbolCount(m_pEditorVideoCaptureWidth, 5);
             m_pEditorVideoCaptureWidth->setMinimum(16);
             m_pEditorVideoCaptureWidth->setMaximum(2880);
@@ -1130,5 +1130,5 @@
         {
             /* Configure editor: */
-            vboxGlobal().setMinimumWidthAccordingSymbolCount(m_pEditorVideoCaptureHeight, 5);
+            uiCommon().setMinimumWidthAccordingSymbolCount(m_pEditorVideoCaptureHeight, 5);
             m_pEditorVideoCaptureHeight->setMinimum(16);
             m_pEditorVideoCaptureHeight->setMaximum(1800);
@@ -1153,5 +1153,5 @@
         {
             /* Configure editor: */
-            vboxGlobal().setMinimumWidthAccordingSymbolCount(m_pEditorVideoCaptureFrameRate, 3);
+            uiCommon().setMinimumWidthAccordingSymbolCount(m_pEditorVideoCaptureFrameRate, 3);
             m_pEditorVideoCaptureFrameRate->setMinimum(1);
             m_pEditorVideoCaptureFrameRate->setMaximum(30);
@@ -1180,5 +1180,5 @@
         {
             /* Configure editor: */
-            vboxGlobal().setMinimumWidthAccordingSymbolCount(m_pEditorVideoCaptureBitRate, 5);
+            uiCommon().setMinimumWidthAccordingSymbolCount(m_pEditorVideoCaptureBitRate, 5);
             m_pEditorVideoCaptureBitRate->setMinimum(VIDEO_CAPTURE_BIT_RATE_MIN);
             m_pEditorVideoCaptureBitRate->setMaximum(VIDEO_CAPTURE_BIT_RATE_MAX);
@@ -1248,5 +1248,5 @@
     /* Get monitors count and base video memory requirements: */
     const int cGuestScreenCount = m_pEditorVideoScreenCount->value();
-    quint64 uNeedMBytes = VBoxGlobal::requiredVideoMemory(m_comGuestOSType.GetId(), cGuestScreenCount) / _1M;
+    quint64 uNeedMBytes = UICommon::requiredVideoMemory(m_comGuestOSType.GetId(), cGuestScreenCount) / _1M;
 
     /* Initial value: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 /* GUI includes: */
 #include "QIWidgetValidator.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIConverter.h"
 #include "UIErrorString.h"
@@ -355,5 +355,5 @@
 
     /* 'Basic' tab validations: */
-    message.first = VBoxGlobal::removeAccelMark(mTwGeneral->tabText(0));
+    message.first = UICommon::removeAccelMark(mTwGeneral->tabText(0));
     message.second.clear();
 
@@ -379,5 +379,5 @@
 
     /* 'Encryption' tab validations: */
-    message.first = VBoxGlobal::removeAccelMark(mTwGeneral->tabText(3));
+    message.first = UICommon::removeAccelMark(mTwGeneral->tabText(3));
     message.second.clear();
 
@@ -388,5 +388,5 @@
 #ifdef VBOX_WITH_EXTPACK
         /* Encryption Extension Pack presence test: */
-        const CExtPack extPack = vboxGlobal().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
+        const CExtPack extPack = uiCommon().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
         if (extPack.isNull() || !extPack.GetUsable())
         {
@@ -705,5 +705,5 @@
             {
                 // Must update long mode CPU feature bit when os type changed:
-                CVirtualBox vbox = vboxGlobal().virtualBox();
+                CVirtualBox vbox = uiCommon().virtualBox();
                 // Should we check global object getters?
                 const CGuestOSType &comNewType = vbox.GetGuestOSType(newGeneralData.m_strGuestOsTypeId);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 #include "UIErrorString.h"
 #include "UIExtraDataManager.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -384,5 +384,5 @@
     /* Prepare message: */
     UIValidationMessage message;
-    message.first = vboxGlobal().removeAccelMark(tabTitle());
+    message.first = uiCommon().removeAccelMark(tabTitle());
 
     /* Validate alternatives: */
@@ -482,5 +482,5 @@
 QString UIMachineSettingsNetwork::tabTitle() const
 {
-    return VBoxGlobal::tr("Adapter %1").arg(QString("&%1").arg(m_iSlot + 1));
+    return UICommon::tr("Adapter %1").arg(QString("&%1").arg(m_iSlot + 1));
 }
 
@@ -755,5 +755,5 @@
 void UIMachineSettingsNetwork::sltGenerateMac()
 {
-    m_pMACEditor->setText(vboxGlobal().host().GenerateMACAddress());
+    m_pMACEditor->setText(uiCommon().host().GenerateMACAddress());
 }
 
@@ -1274,5 +1274,5 @@
               * is that the limitation to 4 isn't necessary any more, but this needs to be checked
               * on all platforms to be certain that it's usable everywhere. */
-            const ulong uCount = qMin((ULONG)4, vboxGlobal().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(KChipsetType_PIIX3));
+            const ulong uCount = qMin((ULONG)4, uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(KChipsetType_PIIX3));
 
             /* Create corresponding adapter tabs: */
@@ -1309,5 +1309,5 @@
     /* Reload bridged interface list: */
     m_bridgedAdapterList.clear();
-    const CHostNetworkInterfaceVector &ifaces = vboxGlobal().host().GetNetworkInterfaces();
+    const CHostNetworkInterfaceVector &ifaces = uiCommon().host().GetNetworkInterfaces();
     for (int i = 0; i < ifaces.size(); ++i)
     {
@@ -1342,5 +1342,5 @@
     /* Reload host-only interface list: */
     m_hostInterfaceList.clear();
-    const CHostNetworkInterfaceVector &ifaces = vboxGlobal().host().GetNetworkInterfaces();
+    const CHostNetworkInterfaceVector &ifaces = uiCommon().host().GetNetworkInterfaces();
     for (int i = 0; i < ifaces.size(); ++i)
     {
@@ -1375,5 +1375,5 @@
     /* Reload NAT network list: */
     m_natNetworkList.clear();
-    const CNATNetworkVector &nws = vboxGlobal().virtualBox().GetNATNetworks();
+    const CNATNetworkVector &nws = uiCommon().virtualBox().GetNATNetworks();
     for (int i = 0; i < nws.size(); ++i)
     {
@@ -1387,5 +1387,5 @@
 {
     /* Load total internal network list of all VMs: */
-    const CVirtualBox vbox = vboxGlobal().virtualBox();
+    const CVirtualBox vbox = uiCommon().virtualBox();
     const QStringList otherInternalNetworks(QList<QString>::fromVector(vbox.GetInternalNetworks()));
     return otherInternalNetworks;
@@ -1396,5 +1396,5 @@
 {
     /* Load total generic driver list of all VMs: */
-    const CVirtualBox vbox = vboxGlobal().virtualBox();
+    const CVirtualBox vbox = uiCommon().virtualBox();
     const QStringList otherGenericDrivers(QList<QString>::fromVector(vbox.GetGenericNetworkDrivers()));
     return otherGenericDrivers;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSF.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSF.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSF.cpp	(revision 79365)
@@ -26,5 +26,5 @@
 #include "UIMachineSettingsSFDetails.h"
 #include "UIErrorString.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "VBoxUtils.h"
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSFDetails.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSFDetails.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSFDetails.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 /* Other includes */
 #include "UIMachineSettingsSFDetails.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 #include "UIMachineSettingsSerial.h"
 #include "UIErrorString.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -157,6 +157,6 @@
     /* Set initial values: */
     /* Note: If you change one of the following don't forget retranslateUi. */
-    mCbNumber->insertItem(0, vboxGlobal().toCOMPortName(0, 0));
-    mCbNumber->insertItems(0, vboxGlobal().COMPortNames());
+    mCbNumber->insertItem(0, uiCommon().toCOMPortName(0, 0));
+    mCbNumber->insertItems(0, uiCommon().COMPortNames());
 
     mCbMode->addItem(""); /* KPortMode_Disconnected */
@@ -185,5 +185,5 @@
     /* Polish port page: */
     ulong uIRQ, uIOBase;
-    const bool fStd = vboxGlobal().toCOMPortNumbers(mCbNumber->currentText(), uIRQ, uIOBase);
+    const bool fStd = uiCommon().toCOMPortNumbers(mCbNumber->currentText(), uIRQ, uIOBase);
     const KPortMode enmMode = gpConverter->fromString<KPortMode>(mCbMode->currentText());
     mGbSerial->setEnabled(m_pParent->isMachineOffline());
@@ -209,5 +209,5 @@
     /* Load port data: */
     mGbSerial->setChecked(portData.m_fPortEnabled);
-    mCbNumber->setCurrentIndex(mCbNumber->findText(vboxGlobal().toCOMPortName(portData.m_uIRQ, portData.m_uIOBase)));
+    mCbNumber->setCurrentIndex(mCbNumber->findText(uiCommon().toCOMPortName(portData.m_uIRQ, portData.m_uIOBase)));
     mLeIRQ->setText(QString::number(portData.m_uIRQ));
     mLeIOPort->setText("0x" + QString::number(portData.m_uIOBase, 16).toUpper());
@@ -251,5 +251,5 @@
 {
     ulong a, b;
-    return !vboxGlobal().toCOMPortNumbers(mCbNumber->currentText(), a, b);
+    return !uiCommon().toCOMPortNumbers(mCbNumber->currentText(), a, b);
 }
 
@@ -259,5 +259,5 @@
     Ui::UIMachineSettingsSerial::retranslateUi(this);
 
-    mCbNumber->setItemText(mCbNumber->count() - 1, vboxGlobal().toCOMPortName(0, 0));
+    mCbNumber->setItemText(mCbNumber->count() - 1, uiCommon().toCOMPortName(0, 0));
 
     mCbMode->setItemText(4, gpConverter->toString(KPortMode_TCP));
@@ -283,5 +283,5 @@
 {
     ulong uIRQ, uIOBase;
-    bool fStd = vboxGlobal().toCOMPortNumbers(strText, uIRQ, uIOBase);
+    bool fStd = uiCommon().toCOMPortNumbers(strText, uIRQ, uIOBase);
 
     mLeIRQ->setEnabled(!fStd);
@@ -468,5 +468,5 @@
         /* Prepare message: */
         UIValidationMessage message;
-        message.first = vboxGlobal().removeAccelMark(m_pTabWidget->tabText(m_pTabWidget->indexOf(pTab)));
+        message.first = uiCommon().removeAccelMark(m_pTabWidget->tabText(m_pTabWidget->indexOf(pTab)));
 
         /* Check the port attribute emptiness & uniqueness: */
@@ -561,5 +561,5 @@
         {
             /* How many ports to display: */
-            const ulong uCount = vboxGlobal().virtualBox().GetSystemProperties().GetSerialPortCount();
+            const ulong uCount = uiCommon().virtualBox().GetSystemProperties().GetSerialPortCount();
 
             /* Create corresponding port tabs: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 79365)
@@ -34,5 +34,5 @@
 #include "QIMessageBox.h"
 #include "QIWidgetValidator.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIIconPool.h"
 #include "UIWizardNewVD.h"
@@ -435,5 +435,5 @@
 DeviceTypeList AbstractControllerType::deviceTypeList() const
 {
-    return vboxGlobal().virtualBox().GetSystemProperties().GetDeviceTypesForStorageBus (mBusType).toList();
+    return uiCommon().virtualBox().GetSystemProperties().GetDeviceTypesForStorageBus (mBusType).toList();
 }
 
@@ -697,5 +697,5 @@
     }
 
-    mUseIoCache = vboxGlobal().virtualBox().GetSystemProperties().GetDefaultIoCacheSettingForStorageController (aControllerType);
+    mUseIoCache = uiCommon().virtualBox().GetSystemProperties().GetDefaultIoCacheSettingForStorageController (aControllerType);
 }
 
@@ -751,5 +751,5 @@
 uint ControllerItem::maxPortCount()
 {
-    return (uint)vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(ctrBusType());
+    return (uint)uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(ctrBusType());
 }
 
@@ -777,5 +777,5 @@
 {
     /* Limit maximum port count: */
-    mPortCount = qMin(aPortCount, (uint)vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(ctrBusType()));
+    mPortCount = qMin(aPortCount, (uint)uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(ctrBusType()));
 }
 
@@ -788,5 +788,5 @@
 {
     SlotsList allSlots;
-    CSystemProperties sp = vboxGlobal().virtualBox().GetSystemProperties();
+    CSystemProperties sp = uiCommon().virtualBox().GetSystemProperties();
     for (ULONG i = 0; i < sp.GetMaxPortCountForStorageBus (mCtrType->busType()); ++ i)
         for (ULONG j = 0; j < sp.GetMaxDevicesPerPortForStorageBus (mCtrType->busType()); ++ j)
@@ -971,5 +971,5 @@
     /// @todo is this required?
     //AssertMsg(!aAttMediumId.isNull(), ("Medium ID value can't be null!\n"));
-    mAttMediumId = vboxGlobal().medium(uAttMediumId).id();
+    mAttMediumId = uiCommon().medium(uAttMediumId).id();
     cache();
 }
@@ -1032,5 +1032,5 @@
 void AttachmentItem::cache()
 {
-    UIMedium medium = vboxGlobal().medium(mAttMediumId);
+    UIMedium medium = uiCommon().medium(mAttMediumId);
 
     /* Cache medium information */
@@ -1323,5 +1323,5 @@
             return (m_configurationAccessLevel == ConfigurationAccessLevel_Full) &&
                    (qobject_cast<RootItem*>(mRootItem)->childCount(KStorageBus_IDE) <
-                    vboxGlobal().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_IDE));
+                    uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_IDE));
         }
         case R_IsMoreSATAControllersPossible:
@@ -1329,5 +1329,5 @@
             return (m_configurationAccessLevel == ConfigurationAccessLevel_Full) &&
                    (qobject_cast<RootItem*>(mRootItem)->childCount(KStorageBus_SATA) <
-                    vboxGlobal().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_SATA));
+                    uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_SATA));
         }
         case R_IsMoreSCSIControllersPossible:
@@ -1335,5 +1335,5 @@
             return (m_configurationAccessLevel == ConfigurationAccessLevel_Full) &&
                    (qobject_cast<RootItem*>(mRootItem)->childCount(KStorageBus_SCSI) <
-                    vboxGlobal().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_SCSI));
+                    uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_SCSI));
         }
         case R_IsMoreFloppyControllersPossible:
@@ -1341,5 +1341,5 @@
             return (m_configurationAccessLevel == ConfigurationAccessLevel_Full) &&
                    (qobject_cast<RootItem*>(mRootItem)->childCount(KStorageBus_Floppy) <
-                    vboxGlobal().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_Floppy));
+                    uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_Floppy));
         }
         case R_IsMoreSASControllersPossible:
@@ -1347,5 +1347,5 @@
             return (m_configurationAccessLevel == ConfigurationAccessLevel_Full) &&
                    (qobject_cast<RootItem*>(mRootItem)->childCount(KStorageBus_SAS) <
-                    vboxGlobal().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_SAS));
+                    uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_SAS));
         }
         case R_IsMoreUSBControllersPossible:
@@ -1353,5 +1353,5 @@
             return (m_configurationAccessLevel == ConfigurationAccessLevel_Full) &&
                    (qobject_cast<RootItem*>(mRootItem)->childCount(KStorageBus_USB) <
-                    vboxGlobal().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_USB));
+                    uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_USB));
         }
         case R_IsMoreNVMeControllersPossible:
@@ -1359,5 +1359,5 @@
             return (m_configurationAccessLevel == ConfigurationAccessLevel_Full) &&
                    (qobject_cast<RootItem*>(mRootItem)->childCount(KStorageBus_PCIe) <
-                    vboxGlobal().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_PCIe));
+                    uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_PCIe));
         }
         case R_IsMoreVirtioSCSIControllersPossible:
@@ -1365,5 +1365,5 @@
             return (m_configurationAccessLevel == ConfigurationAccessLevel_Full) &&
                    (qobject_cast<RootItem*>(mRootItem)->childCount(KStorageBus_VirtioSCSI) <
-                    vboxGlobal().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_VirtioSCSI));
+                    uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_VirtioSCSI));
         }
         case R_IsMoreAttachmentsPossible:
@@ -1374,5 +1374,5 @@
                 {
                     ControllerItem *ctr = qobject_cast<ControllerItem*>(item);
-                    CSystemProperties sp = vboxGlobal().virtualBox().GetSystemProperties();
+                    CSystemProperties sp = uiCommon().virtualBox().GetSystemProperties();
                     const bool fIsMoreAttachmentsPossible = (ULONG)rowCount(aIndex) <
                                                             (sp.GetMaxPortCountForStorageBus(ctr->ctrBusType()) *
@@ -1721,7 +1721,7 @@
                     /* Lets make sure there is enough of place for all the remaining attachments: */
                     const uint uMaxPortCount =
-                        (uint)vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(enmNewCtrBusType);
+                        (uint)uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(enmNewCtrBusType);
                     const uint uMaxDevicePerPortCount =
-                        (uint)vboxGlobal().virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus(enmNewCtrBusType);
+                        (uint)uiCommon().virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus(enmNewCtrBusType);
                     const QList<QUuid> ids = pItemController->attachmentIDs();
                     if (uMaxPortCount * uMaxDevicePerPortCount < (uint)ids.size())
@@ -2097,5 +2097,5 @@
     {
         maximumMap.insert((KStorageBus)iStorageBusType,
-                          vboxGlobal().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), (KStorageBus)iStorageBusType));
+                          uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), (KStorageBus)iStorageBusType));
     }
     return maximumMap;
@@ -2553,5 +2553,5 @@
             const QString value(QString("%1 (%2)").arg(ctrName, gpConverter->toString(attSlot)));
             /* Check for emptiness: */
-            if (vboxGlobal().medium(key).isNull() && enmAttDevice == KDeviceType_HardDisk)
+            if (uiCommon().medium(key).isNull() && enmAttDevice == KDeviceType_HardDisk)
             {
                 message.second << tr("No hard disk is selected for <i>%1</i>.").arg(value);
@@ -2559,5 +2559,5 @@
             }
             /* Check for coincidence: */
-            if (!vboxGlobal().medium(key).isNull() && config.contains(key))
+            if (!uiCommon().medium(key).isNull() && config.contains(key))
             {
                 message.second << tr("<i>%1</i> is using a disk that is already attached to <i>%2</i>.")
@@ -2747,5 +2747,5 @@
 {
     /* Search for corresponding medium: */
-    const UIMedium medium = vboxGlobal().medium(uMediumId);
+    const UIMedium medium = uiCommon().medium(uMediumId);
 
     const QModelIndex rootIndex = m_pModelStorage->root();
@@ -3225,5 +3225,5 @@
 void UIMachineSettingsStorage::sltCreateNewHardDisk()
 {
-    const QUuid uMediumId = vboxGlobal().openMediumCreatorDialog(this, UIMediumDeviceType_HardDisk, m_strMachineSettingsFilePath,
+    const QUuid uMediumId = uiCommon().openMediumCreatorDialog(this, UIMediumDeviceType_HardDisk, m_strMachineSettingsFilePath,
                                                                  m_strMachineName, m_strMachineGuestOSTypeId);
 
@@ -3242,5 +3242,5 @@
 
     QUuid uMediumId;
-    int iResult = vboxGlobal().openMediumSelectorDialog(this, m_pMediumIdHolder->type(), uMediumId,
+    int iResult = uiCommon().openMediumSelectorDialog(this, m_pMediumIdHolder->type(), uMediumId,
                                                         strMachineFolder, m_strMachineName,
                                                         m_strMachineGuestOSTypeId,
@@ -3277,5 +3277,5 @@
         const UIMediumDeviceType enmMediumType = (UIMediumDeviceType)mediumInfoList[0].toUInt();
         const QString strMediumLocation = mediumInfoList[1];
-        const QUuid uMediumId = vboxGlobal().openMedium(enmMediumType, strMediumLocation, this);
+        const QUuid uMediumId = uiCommon().openMedium(enmMediumType, strMediumLocation, this);
         if (!uMediumId.isNull())
             m_pMediumIdHolder->setId(uMediumId);
@@ -3710,10 +3710,10 @@
 #ifdef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
     /* Start medium-enumeration (only if necessary): */
-    if (!vboxGlobal().isFullMediumEnumerationRequested())
+    if (!uiCommon().isFullMediumEnumerationRequested())
 #endif
     /* Enumerate Media. We need at least the MediaList filled, so this is the
      * lasted point, where we can start. The rest of the media checking is done
      * in a background thread. */
-    vboxGlobal().startMediumEnumeration();
+    uiCommon().startMediumEnumeration();
 
     /* Layout created in the .ui file. */
@@ -3968,7 +3968,7 @@
 {
     /* Configure this: */
-    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const QUuid &)),
+    connect(&uiCommon(), SIGNAL(sigMediumEnumerated(const QUuid &)),
             this, SLOT(sltHandleMediumEnumerated(const QUuid &)));
-    connect(&vboxGlobal(), SIGNAL(sigMediumDeleted(const QUuid &)),
+    connect(&uiCommon(), SIGNAL(sigMediumDeleted(const QUuid &)),
             this, SLOT(sltHandleMediumDeleted(const QUuid &)));
 
@@ -4095,5 +4095,5 @@
 
     QUuid uMediumId;
-    int iResult = vboxGlobal().openMediumSelectorDialog(this, UIMediumDefs::mediumTypeToLocal(enmDeviceType), uMediumId,
+    int iResult = uiCommon().openMediumSelectorDialog(this, UIMediumDefs::mediumTypeToLocal(enmDeviceType), uMediumId,
                                                         strMachineFolder, m_strMachineName,
                                                         m_strMachineGuestOSTypeId,
@@ -4190,7 +4190,7 @@
 void UIMachineSettingsStorage::addChooseHostDriveActions(QMenu *pOpenMediumMenu)
 {
-    foreach (const QUuid &uMediumId, vboxGlobal().mediumIDs())
-    {
-        const UIMedium medium = vboxGlobal().medium(uMediumId);
+    foreach (const QUuid &uMediumId, uiCommon().mediumIDs())
+    {
+        const UIMedium medium = uiCommon().medium(uMediumId);
         if (medium.isHostDrive() && m_pMediumIdHolder->type() == medium.type())
         {
@@ -4568,5 +4568,5 @@
         {
             /* Create attachment: */
-            const UIMedium vboxMedium = vboxGlobal().medium(newAttachmentData.m_uAttachmentMediumId);
+            const UIMedium vboxMedium = uiCommon().medium(newAttachmentData.m_uAttachmentMediumId);
             const CMedium comMedium = vboxMedium.medium();
             m_machine.AttachDevice(newControllerData.m_strControllerName,
@@ -4656,5 +4656,5 @@
         {
             /* Remount attachment: */
-            const UIMedium vboxMedium = vboxGlobal().medium(newAttachmentData.m_uAttachmentMediumId);
+            const UIMedium vboxMedium = uiCommon().medium(newAttachmentData.m_uAttachmentMediumId);
             const CMedium comMedium = vboxMedium.medium();
             m_machine.MountMedium(newControllerData.m_strControllerName,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 #include "UIMachineSettingsSystem.h"
 #include "UIErrorString.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -253,8 +253,8 @@
 
     /* Gather support flags: */
-    oldSystemData.m_fSupportedPAE = vboxGlobal().host().GetProcessorFeature(KProcessorFeature_PAE);
-    oldSystemData.m_fSupportedNestedHwVirtEx = vboxGlobal().host().GetProcessorFeature(KProcessorFeature_NestedHWVirt);
-    oldSystemData.m_fSupportedHwVirtEx = vboxGlobal().host().GetProcessorFeature(KProcessorFeature_HWVirtEx);
-    oldSystemData.m_fSupportedNestedPaging = vboxGlobal().host().GetProcessorFeature(KProcessorFeature_NestedPaging);
+    oldSystemData.m_fSupportedPAE = uiCommon().host().GetProcessorFeature(KProcessorFeature_PAE);
+    oldSystemData.m_fSupportedNestedHwVirtEx = uiCommon().host().GetProcessorFeature(KProcessorFeature_NestedHWVirt);
+    oldSystemData.m_fSupportedHwVirtEx = uiCommon().host().GetProcessorFeature(KProcessorFeature_HWVirtEx);
+    oldSystemData.m_fSupportedNestedPaging = uiCommon().host().GetProcessorFeature(KProcessorFeature_NestedPaging);
 
     /* Gather old 'Motherboard' data: */
@@ -436,8 +436,8 @@
         /* Prepare message: */
         UIValidationMessage message;
-        message.first = VBoxGlobal::removeAccelMark(m_pTabWidgetSystem->tabText(0));
+        message.first = UICommon::removeAccelMark(m_pTabWidgetSystem->tabText(0));
 
         /* RAM amount test: */
-        const ulong uFullSize = vboxGlobal().host().GetMemorySize();
+        const ulong uFullSize = uiCommon().host().GetMemorySize();
         if (m_pSliderMemorySize->value() > (int)m_pSliderMemorySize->maxRAMAlw())
         {
@@ -446,5 +446,5 @@
                 "Not enough memory is left for the host operating system. Please select a smaller amount.")
                 .arg((unsigned)qRound((double)m_pSliderMemorySize->maxRAMAlw() / uFullSize * 100.0))
-                .arg(vboxGlobal().formatSize((uint64_t)uFullSize * _1M));
+                .arg(uiCommon().formatSize((uint64_t)uFullSize * _1M));
             fPass = false;
         }
@@ -455,5 +455,5 @@
                 "There might not be enough memory left for the host operating system. Please consider selecting a smaller amount.")
                 .arg((unsigned)qRound((double)m_pSliderMemorySize->maxRAMOpt() / uFullSize * 100.0))
-                .arg(vboxGlobal().formatSize((uint64_t)uFullSize * _1M));
+                .arg(uiCommon().formatSize((uint64_t)uFullSize * _1M));
         }
 
@@ -485,8 +485,8 @@
         /* Prepare message: */
         UIValidationMessage message;
-        message.first = VBoxGlobal::removeAccelMark(m_pTabWidgetSystem->tabText(1));
+        message.first = UICommon::removeAccelMark(m_pTabWidgetSystem->tabText(1));
 
         /* VCPU amount test: */
-        const int cTotalCPUs = vboxGlobal().host().GetProcessorOnlineCoreCount();
+        const int cTotalCPUs = uiCommon().host().GetProcessorOnlineCoreCount();
         if (m_pSliderCPUCount->value() > 2 * cTotalCPUs)
         {
@@ -578,5 +578,5 @@
         /* Prepare message: */
         UIValidationMessage message;
-        message.first = VBoxGlobal::removeAccelMark(m_pTabWidgetSystem->tabText(2));
+        message.first = UICommon::removeAccelMark(m_pTabWidgetSystem->tabText(2));
 
         /* HW Virt Ex test: */
@@ -886,5 +886,5 @@
             m_pEditorMemorySize->setMinimum(m_pSliderMemorySize->minRAM());
             m_pEditorMemorySize->setMaximum(m_pSliderMemorySize->maxRAM());
-            vboxGlobal().setMinimumWidthAccordingSymbolCount(m_pEditorMemorySize, 5);
+            uiCommon().setMinimumWidthAccordingSymbolCount(m_pEditorMemorySize, 5);
         }
 
@@ -918,5 +918,5 @@
                  * Until there will be separate Main getter for list of supported boot device types,
                  * this list will be hard-coded here... */
-                const CSystemProperties properties = vboxGlobal().virtualBox().GetSystemProperties();
+                const CSystemProperties properties = uiCommon().virtualBox().GetSystemProperties();
                 const int iPossibleBootListSize = qMin((ULONG)4, properties.GetMaxBootPosition());
                 for (int iBootPosition = 1; iBootPosition <= iPossibleBootListSize; ++iBootPosition)
@@ -974,6 +974,6 @@
 {
     /* Prepare common variables: */
-    const CSystemProperties properties = vboxGlobal().virtualBox().GetSystemProperties();
-    const uint uHostCPUs = vboxGlobal().host().GetProcessorOnlineCoreCount();
+    const CSystemProperties properties = uiCommon().virtualBox().GetSystemProperties();
+    const uint uHostCPUs = uiCommon().host().GetProcessorOnlineCoreCount();
     m_uMinGuestCPU = properties.GetMinGuestCPUCount();
     m_uMaxGuestCPU = qMin(2 * uHostCPUs, (uint)properties.GetMaxGuestCPUCount());
@@ -1003,5 +1003,5 @@
             m_pEditorCPUCount->setMinimum(m_uMinGuestCPU);
             m_pEditorCPUCount->setMaximum(m_uMaxGuestCPU);
-            vboxGlobal().setMinimumWidthAccordingSymbolCount(m_pEditorCPUCount, 4);
+            uiCommon().setMinimumWidthAccordingSymbolCount(m_pEditorCPUCount, 4);
         }
 
@@ -1026,5 +1026,5 @@
             m_pEditorCPUExecCap->setMinimum(m_uMinGuestCPUExecCap);
             m_pEditorCPUExecCap->setMaximum(m_uMaxGuestCPUExecCap);
-            vboxGlobal().setMinimumWidthAccordingSymbolCount(m_pEditorCPUExecCap, 4);
+            uiCommon().setMinimumWidthAccordingSymbolCount(m_pEditorCPUExecCap, 4);
         }
     }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp	(revision 79365)
@@ -30,5 +30,5 @@
 #include "UIErrorString.h"
 #include "UIToolBar.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -184,5 +184,5 @@
         m_usbDeviceMap.clear();
 
-        CHost host = vboxGlobal().host();
+        CHost host = uiCommon().host();
 
         bool fIsUSBEmpty = host.GetUSBDevices().size() == 0;
@@ -200,5 +200,5 @@
                 CHostUSBDevice dev = devvec[i];
                 CUSBDevice usb(dev);
-                QAction *pAction = addAction(vboxGlobal().details(usb));
+                QAction *pAction = addAction(uiCommon().details(usb));
                 pAction->setCheckable(true);
                 m_usbDeviceMap[pAction] = usb;
@@ -229,5 +229,5 @@
                 if (!usb.isNull())
                 {
-                    QToolTip::showText(pHelpEvent->globalPos(), vboxGlobal().toolTip(usb));
+                    QToolTip::showText(pHelpEvent->globalPos(), uiCommon().toolTip(usb));
                     return true;
                 }
@@ -494,5 +494,5 @@
 #ifdef VBOX_WITH_EXTPACK
     /* USB 2.0/3.0 Extension Pack presence test: */
-    const CExtPack extPack = vboxGlobal().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
+    const CExtPack extPack = uiCommon().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
     if (   mGbUSB->isChecked()
         && (mRbUSB2->isChecked() || mRbUSB3->isChecked())
@@ -679,5 +679,5 @@
     UIDataSettingsMachineUSBFilter filterData;
     filterData.m_fActive = true;
-    filterData.m_strName = vboxGlobal().details(usb);
+    filterData.m_strName = uiCommon().details(usb);
     filterData.m_fHostUSBDevice = false;
     filterData.m_strVendorId = QString().sprintf("%04hX", usb.GetVendorId());
Index: /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotDetailsWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotDetailsWidget.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotDetailsWidget.cpp	(revision 79365)
@@ -39,5 +39,5 @@
 #include "UISnapshotDetailsWidget.h"
 #include "UIMessageCenter.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "VBoxUtils.h"
 
@@ -462,5 +462,5 @@
     setWindowModality(Qt::ApplicationModal);
     /* With the pointing-hand cursor: */
-    VBoxGlobal::setCursor(this, Qt::PointingHandCursor);
+    UICommon::setCursor(this, Qt::PointingHandCursor);
     /* And it's being deleted when closed: */
     setAttribute(Qt::WA_DeleteOnClose);
@@ -500,5 +500,5 @@
 
     /* Center according requested widget: */
-    VBoxGlobal::centerWidget(this, parentWidget(), false);
+    UICommon::centerWidget(this, parentWidget(), false);
 }
 
@@ -1204,6 +1204,6 @@
             ++iRowCount;
             strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIDetails", "Operating System", "details (general)"),
-                                                     empReport(vboxGlobal().vmGuestOSTypeDescription(comMachine.GetOSTypeId()),
-                                                               vboxGlobal().vmGuestOSTypeDescription(comMachineOld.GetOSTypeId())));
+                                                     empReport(uiCommon().vmGuestOSTypeDescription(comMachine.GetOSTypeId()),
+                                                               uiCommon().vmGuestOSTypeDescription(comMachineOld.GetOSTypeId())));
 
             /* Location of the settings file: */
@@ -1622,5 +1622,5 @@
     QStringList aReport;
     /* Iterate through boot device types: */
-    for (ulong i = 1; i <= vboxGlobal().virtualBox().GetSystemProperties().GetMaxBootPosition(); ++i)
+    for (ulong i = 1; i <= uiCommon().virtualBox().GetSystemProperties().GetMaxBootPosition(); ++i)
     {
         const KDeviceType enmDevice = comMachine.GetBootOrder(i);
@@ -1666,5 +1666,5 @@
     QStringList aReport;
     /* VT-x/AMD-V and Nested Paging? */
-    if (vboxGlobal().host().GetProcessorFeature(KProcessorFeature_HWVirtEx))
+    if (uiCommon().host().GetProcessorFeature(KProcessorFeature_HWVirtEx))
     {
         /* VT-x/AMD-V? */
@@ -1721,5 +1721,5 @@
 #endif
     /* 3D Acceleration? */
-    if (comMachine.GetAccelerate3DEnabled() && vboxGlobal().is3DAvailable())
+    if (comMachine.GetAccelerate3DEnabled() && uiCommon().is3DAvailable())
         aReport << QApplication::translate("UIDetails", "3D", "details (display)");
     /* Compose and return report: */
@@ -1795,5 +1795,5 @@
             /* Prepare current medium information: */
             const QString strMediumInfo = comAttachment.isOk()
-                                        ? wipeHtmlStuff(vboxGlobal().details(comAttachment.GetMedium(), false))
+                                        ? wipeHtmlStuff(uiCommon().details(comAttachment.GetMedium(), false))
                                         : QString();
 
@@ -1846,5 +1846,5 @@
     QStringList aReport;
     /* Iterate through machine network adapters: */
-    const ulong iCount = vboxGlobal().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(comMachine.GetChipsetType());
+    const ulong iCount = uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(comMachine.GetChipsetType());
     for (ulong iSlot = 0; iSlot < iCount; ++iSlot)
     {
@@ -1904,5 +1904,5 @@
     QStringList aReport;
     /* Iterate through machine serial ports: */
-    const ulong iCount = vboxGlobal().virtualBox().GetSystemProperties().GetSerialPortCount();
+    const ulong iCount = uiCommon().virtualBox().GetSystemProperties().GetSerialPortCount();
     for (ulong iSlot = 0; iSlot < iCount; ++iSlot)
     {
@@ -1915,5 +1915,5 @@
             /* Compose the data: */
             QStringList aInfo;
-            aInfo << vboxGlobal().toCOMPortName(comPort.GetIRQ(), comPort.GetIOBase());
+            aInfo << uiCommon().toCOMPortName(comPort.GetIRQ(), comPort.GetIOBase());
             if (   enmMode == KPortMode_HostPipe
                 || enmMode == KPortMode_HostDevice
Index: /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.cpp	(revision 79365)
@@ -344,5 +344,5 @@
     {
         strAge = tr("%1 (%2 ago)", "date time (how long ago)")
-                    .arg(then.toString(Qt::LocalDate), VBoxGlobal::daysToString(then.secsTo(now) / 60 / 60 / 24));
+                    .arg(then.toString(Qt::LocalDate), UICommon::daysToString(then.secsTo(now) / 60 / 60 / 24));
         enmAgeFormat = SnapshotAgeFormat_InDays;
     }
@@ -350,5 +350,5 @@
     {
         strAge = tr("%1 (%2 ago)", "date time (how long ago)")
-                    .arg(then.toString(Qt::LocalDate), VBoxGlobal::hoursToString(then.secsTo(now) / 60 / 60));
+                    .arg(then.toString(Qt::LocalDate), UICommon::hoursToString(then.secsTo(now) / 60 / 60));
         enmAgeFormat = SnapshotAgeFormat_InHours;
     }
@@ -356,5 +356,5 @@
     {
         strAge = tr("%1 (%2 ago)", "date time (how long ago)")
-                    .arg(then.toString(Qt::LocalDate), VBoxGlobal::minutesToString(then.secsTo(now) / 60));
+                    .arg(then.toString(Qt::LocalDate), UICommon::minutesToString(then.secsTo(now) / 60));
         enmAgeFormat = SnapshotAgeFormat_InMinutes;
     }
@@ -362,5 +362,5 @@
     {
         strAge = tr("%1 (%2 ago)", "date time (how long ago)")
-                    .arg(then.toString(Qt::LocalDate), VBoxGlobal::secondsToString(then.secsTo(now)));
+                    .arg(then.toString(Qt::LocalDate), UICommon::secondsToString(then.secsTo(now)));
         enmAgeFormat = SnapshotAgeFormat_InSeconds;
     }
@@ -923,7 +923,7 @@
         CSession comSession;
         if (m_enmSessionState != KSessionState_Unlocked)
-            comSession = vboxGlobal().openExistingSession(m_uMachineId);
+            comSession = uiCommon().openExistingSession(m_uMachineId);
         else
-            comSession = vboxGlobal().openSession(m_uMachineId);
+            comSession = uiCommon().openSession(m_uMachineId);
         if (comSession.isNotNull())
         {
@@ -979,7 +979,7 @@
         CSession comSession;
         if (m_enmSessionState != KSessionState_Unlocked)
-            comSession = vboxGlobal().openExistingSession(m_uMachineId);
+            comSession = uiCommon().openExistingSession(m_uMachineId);
         else
-            comSession = vboxGlobal().openSession(m_uMachineId);
+            comSession = uiCommon().openSession(m_uMachineId);
         if (comSession.isNotNull())
         {
@@ -1109,5 +1109,5 @@
             {
                 /* We need to open a session when we manipulate the snapshot data of a machine: */
-                CSession comSession = vboxGlobal().openExistingSession(comSnapshot.GetMachine().GetId());
+                CSession comSession = uiCommon().openExistingSession(comSnapshot.GetMachine().GetId());
                 if (!comSession.isNull())
                 {
@@ -1522,7 +1522,7 @@
         CSession comSession;
         if (m_enmSessionState != KSessionState_Unlocked)
-            comSession = vboxGlobal().openExistingSession(m_uMachineId);
+            comSession = uiCommon().openExistingSession(m_uMachineId);
         else
-            comSession = vboxGlobal().openSession(m_uMachineId);
+            comSession = uiCommon().openSession(m_uMachineId);
         if (comSession.isNull())
             break;
@@ -1563,7 +1563,7 @@
 
                 /* Assign corresponding icon: */
-                QIcon icon = vboxGlobal().vmUserIcon(comMachine);
+                QIcon icon = uiCommon().vmUserIcon(comMachine);
                 if (icon.isNull())
-                    icon = vboxGlobal().vmGuestOSTypeIcon(comMachine.GetOSTypeId());
+                    icon = uiCommon().vmGuestOSTypeIcon(comMachine.GetOSTypeId());
                 pDlg->setIcon(icon);
 
@@ -1656,7 +1656,7 @@
         CSession comSession;
         if (m_enmSessionState != KSessionState_Unlocked)
-            comSession = vboxGlobal().openExistingSession(m_uMachineId);
+            comSession = uiCommon().openExistingSession(m_uMachineId);
         else
-            comSession = vboxGlobal().openSession(m_uMachineId);
+            comSession = uiCommon().openSession(m_uMachineId);
         if (comSession.isNull())
             break;
@@ -1736,5 +1736,5 @@
 
         /* Open a direct session (this call will handle all errors): */
-        CSession comSession = vboxGlobal().openSession(m_uMachineId);
+        CSession comSession = uiCommon().openSession(m_uMachineId);
         if (comSession.isNull())
             break;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.h	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.h	(revision 79365)
@@ -24,5 +24,5 @@
 /* GUI includes: */
 #include "QIWithRetranslateUI.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp	(revision 79365)
@@ -49,5 +49,5 @@
 #include "UISoftKeyboard.h"
 #include "QIToolButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #ifdef VBOX_WS_MAC
 # include "VBoxUtils-darwin.h"
@@ -1838,5 +1838,5 @@
         return;
 
-    QString strHomeFolder = vboxGlobal().homeFolder();
+    QString strHomeFolder = uiCommon().homeFolder();
     QDir dir(strHomeFolder);
     if (!dir.exists(strSubDirectorName))
@@ -2437,5 +2437,5 @@
 void UISoftKeyboardWidget::lookAtDefaultLayoutFolder(QStringList &fileList)
 {
-    QString strFolder = QString("%1%2%3").arg(vboxGlobal().homeFolder()).arg(QDir::separator()).arg(strSubDirectorName);
+    QString strFolder = QString("%1%2%3").arg(uiCommon().homeFolder()).arg(QDir::separator()).arg(strSubDirectorName);
     QDir dir(strFolder);
     if (!dir.exists())
@@ -3235,5 +3235,5 @@
 #else /* VBOX_WS_MAC */
     /* Use the new approach for Windows/X11: */
-    VBoxGlobal::setTopLevelGeometry(this, geometry);
+    UICommon::setTopLevelGeometry(this, geometry);
 #endif /* !VBOX_WS_MAC */
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIAddDiskEncryptionPasswordDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIAddDiskEncryptionPasswordDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIAddDiskEncryptionPasswordDialog.cpp	(revision 79365)
@@ -31,5 +31,5 @@
 #include "QIStyledItemDelegate.h"
 #include "QIWithRetranslateUI.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIAddDiskEncryptionPasswordDialog.h"
 #include "UIIconPool.h"
@@ -574,5 +574,5 @@
 {
     /* Look for the medium with passed ID: */
-    const UIMedium uimedium = vboxGlobal().medium(uMediumId);
+    const UIMedium uimedium = uiCommon().medium(uMediumId);
     if (!uimedium.isNull())
     {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp	(revision 79365)
@@ -29,5 +29,5 @@
 /* GUI includes: */
 #include "QITreeView.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIGuestOSTypeSelectionButton.h"
 #include "UIApplianceEditorWidget.h"
@@ -522,6 +522,6 @@
                         value = strTmp; break;
                     }
-                    case KVirtualSystemDescriptionType_OS:               value = vboxGlobal().vmGuestOSTypeDescription(m_strConfigValue); break;
-                    case KVirtualSystemDescriptionType_Memory:           value = m_strConfigValue + " " + VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes"); break;
+                    case KVirtualSystemDescriptionType_OS:               value = uiCommon().vmGuestOSTypeDescription(m_strConfigValue); break;
+                    case KVirtualSystemDescriptionType_Memory:           value = m_strConfigValue + " " + UICommon::tr("MB", "size suffix MBytes=1024 KBytes"); break;
                     case KVirtualSystemDescriptionType_SoundCard:        value = gpConverter->toString(static_cast<KAudioControllerType>(m_strConfigValue.toInt())); break;
                     case KVirtualSystemDescriptionType_NetworkAdapter:   value = gpConverter->toString(static_cast<KNetworkAdapterType>(m_strConfigValue.toInt())); break;
@@ -663,5 +663,5 @@
                     case KVirtualSystemDescriptionType_USBController:          value = UIIconPool::iconSet(":/usb_16px.png"); break;
                     case KVirtualSystemDescriptionType_SoundCard:              value = UIIconPool::iconSet(":/sound_16px.png"); break;
-                    case KVirtualSystemDescriptionType_BaseFolder:             value = vboxGlobal().icon(QFileIconProvider::Folder); break;
+                    case KVirtualSystemDescriptionType_BaseFolder:             value = uiCommon().icon(QFileIconProvider::Folder); break;
                     case KVirtualSystemDescriptionType_PrimaryGroup:           value = UIIconPool::iconSet(":/vm_group_name_16px.png"); break;
                     case KVirtualSystemDescriptionType_CloudProfileName:
@@ -679,5 +679,5 @@
             }
             else if (iColumn == ApplianceViewSection_ConfigValue && m_enmVSDType == KVirtualSystemDescriptionType_OS)
-                value = vboxGlobal().vmGuestOSTypeIcon(m_strConfigValue);
+                value = uiCommon().vmGuestOSTypeIcon(m_strConfigValue);
             break;
         }
@@ -807,5 +807,5 @@
                 QSpinBox *pSpinBox = new QSpinBox(pParent);
                 pSpinBox->setRange(UIApplianceEditorWidget::minGuestRAM(), UIApplianceEditorWidget::maxGuestRAM());
-                pSpinBox->setSuffix(" " + VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes"));
+                pSpinBox->setSuffix(" " + UICommon::tr("MB", "size suffix MBytes=1024 KBytes"));
                 pEditor = pSpinBox;
                 break;
@@ -873,5 +873,5 @@
                 QComboBox *pComboBox = new QComboBox(pParent);
                 pComboBox->setEditable(true);
-                QVector<QString> groupsVector = vboxGlobal().virtualBox().GetMachineGroups();
+                QVector<QString> groupsVector = uiCommon().virtualBox().GetMachineGroups();
 
                 for (int i = 0; i < groupsVector.size(); ++i)
@@ -895,5 +895,5 @@
                         QSpinBox *pSpinBox = new QSpinBox(pParent);
                         pSpinBox->setRange(value.minimum, value.maximum);
-                        pSpinBox->setSuffix(QString(" %1").arg(VBoxGlobal::tr(value.unit.toUtf8().constData())));
+                        pSpinBox->setSuffix(QString(" %1").arg(UICommon::tr(value.unit.toUtf8().constData())));
                         pEditor = pSpinBox;
                         break;
@@ -1874,5 +1874,5 @@
         /* We need some global defaults from the current VirtualBox
            installation */
-        CSystemProperties sp = vboxGlobal().virtualBox().GetSystemProperties();
+        CSystemProperties sp = uiCommon().virtualBox().GetSystemProperties();
         m_minGuestRAM        = sp.GetMinGuestRAM();
         m_maxGuestRAM        = sp.GetMaxGuestRAM();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceExportEditorWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceExportEditorWidget.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceExportEditorWidget.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 #include "QITreeView.h"
 #include "UIApplianceExportEditorWidget.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 
@@ -67,5 +67,5 @@
     if (m_pAppliance)
         delete m_pAppliance;
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
     /* Create a appliance object */
     m_pAppliance = new CAppliance(vbox.CreateAppliance());
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceImportEditorWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceImportEditorWidget.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceImportEditorWidget.cpp	(revision 79365)
@@ -29,5 +29,5 @@
 #include "UIMessageCenter.h"
 #include "UIWizardImportApp.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -89,6 +89,6 @@
         {
             m_pPathSelector->setResetEnabled(true);
-            m_pPathSelector->setDefaultPath(vboxGlobal().virtualBox().GetSystemProperties().GetDefaultMachineFolder());
-            m_pPathSelector->setPath(vboxGlobal().virtualBox().GetSystemProperties().GetDefaultMachineFolder());
+            m_pPathSelector->setDefaultPath(uiCommon().virtualBox().GetSystemProperties().GetDefaultMachineFolder());
+            m_pPathSelector->setPath(uiCommon().virtualBox().GetSystemProperties().GetDefaultMachineFolder());
             m_pPathSelectorLabel->setBuddy(m_pPathSelector);
 
@@ -159,5 +159,5 @@
     {
         CProgress progress;
-        CVirtualBox vbox = vboxGlobal().virtualBox();
+        CVirtualBox vbox = uiCommon().virtualBox();
         /* Create a appliance object */
         m_pAppliance = new CAppliance(vbox.CreateAppliance());
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIEmptyFilePathSelector.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIEmptyFilePathSelector.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIEmptyFilePathSelector.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 #include "UIIconPool.h"
 #include "UIEmptyFilePathSelector.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* Global includes */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIFilePathSelector.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIFilePathSelector.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIFilePathSelector.cpp	(revision 79365)
@@ -33,5 +33,5 @@
 #include "QILineEdit.h"
 #include "QIToolButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIIconPool.h"
 #include "UIFilePathSelector.h"
@@ -429,7 +429,7 @@
 {
     if (m_enmMode == Mode_Folder)
-        return vboxGlobal().icon(QFileIconProvider::Folder);
+        return uiCommon().icon(QFileIconProvider::Folder);
     else
-        return vboxGlobal().icon(QFileIconProvider::File);
+        return uiCommon().icon(QFileIconProvider::File);
 }
 
@@ -569,5 +569,5 @@
         /* Attach corresponding icon: */
         setItemIcon(PathId, QFileInfo(m_strPath).exists() ?
-                            vboxGlobal().icon(QFileInfo(m_strPath)) :
+                            uiCommon().icon(QFileInfo(m_strPath)) :
                             defaultIcon());
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIFormEditorWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIFormEditorWidget.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIFormEditorWidget.cpp	(revision 79365)
@@ -617,5 +617,5 @@
     m_strSuffix = rangedInteger.suffix();
     setSuffix(m_strSuffix.isEmpty() ? QString() :
-              QString(" %1").arg(QApplication::translate("VBoxGlobal", m_strSuffix.toUtf8().constData())));
+              QString(" %1").arg(QApplication::translate("UICommon", m_strSuffix.toUtf8().constData())));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIGuestOSTypeSelectionButton.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIGuestOSTypeSelectionButton.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIGuestOSTypeSelectionButton.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 
 /* GUI includes */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIGuestOSTypeSelectionButton.h"
 
@@ -61,9 +61,9 @@
 {
     m_strOSTypeId = strOSTypeId;
-    CGuestOSType enmType = vboxGlobal().vmGuestOSType(strOSTypeId);
+    CGuestOSType enmType = uiCommon().vmGuestOSType(strOSTypeId);
 
 #ifndef VBOX_WS_MAC
     /* Looks ugly on the Mac: */
-    setIcon(vboxGlobal().vmGuestOSTypePixmapDefault(enmType.GetId()));
+    setIcon(uiCommon().vmGuestOSTypePixmapDefault(enmType.GetId()));
 #endif
 
@@ -82,10 +82,10 @@
 
     /* Create a list of all possible OS types: */
-    foreach(const QString &strFamilyId, vboxGlobal().vmGuestOSFamilyIDs())
+    foreach(const QString &strFamilyId, uiCommon().vmGuestOSFamilyIDs())
     {
-        QMenu *pSubMenu = m_pMainMenu->addMenu(vboxGlobal().vmGuestOSFamilyDescription(strFamilyId));
-        foreach (const CGuestOSType &comType, vboxGlobal().vmGuestOSTypeList(strFamilyId))
+        QMenu *pSubMenu = m_pMainMenu->addMenu(uiCommon().vmGuestOSFamilyDescription(strFamilyId));
+        foreach (const CGuestOSType &comType, uiCommon().vmGuestOSTypeList(strFamilyId))
         {
-            QAction *pAction = pSubMenu->addAction(vboxGlobal().vmGuestOSTypePixmapDefault(comType.GetId()),
+            QAction *pAction = pSubMenu->addAction(uiCommon().vmGuestOSTypePixmapDefault(comType.GetId()),
                                                    comType.GetDescription());
             connect(pAction, &QAction::triggered,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIGuestRAMSlider.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIGuestRAMSlider.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIGuestRAMSlider.cpp	(revision 79365)
@@ -17,5 +17,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIGuestRAMSlider.h"
 
@@ -68,6 +68,6 @@
 void UIGuestRAMSlider::prepare()
 {
-    ulong uFullSize = vboxGlobal().host().GetMemorySize();
-    CSystemProperties sys = vboxGlobal().virtualBox().GetSystemProperties();
+    ulong uFullSize = uiCommon().host().GetMemorySize();
+    CSystemProperties sys = uiCommon().virtualBox().GetSystemProperties();
     m_uMinRAM = sys.GetMinGuestRAM();
     m_uMaxRAM = RT_MIN(RT_ALIGN(uFullSize, _1G / _1M), sys.GetMaxGuestRAM());
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.cpp	(revision 79365)
@@ -32,5 +32,5 @@
 /* GUI includes: */
 #include "QIToolButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIExtraDataManager.h"
 #include "UIHostComboEditor.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UILineTextEdit.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UILineTextEdit.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UILineTextEdit.cpp	(revision 79365)
@@ -27,5 +27,5 @@
 /* GUI includes: */
 #include "QIFileDialog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UILineTextEdit.h"
 
@@ -79,5 +79,5 @@
 void UITextEditor::open()
 {
-    QString fileName = QIFileDialog::getOpenFileName(vboxGlobal().documentsPath(), tr("Text (*.txt);;All (*.*)"), this, tr("Select a file to open..."));
+    QString fileName = QIFileDialog::getOpenFileName(uiCommon().documentsPath(), tr("Text (*.txt);;All (*.*)"), this, tr("Select a file to open..."));
     if (!fileName.isEmpty())
     {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMediaComboBox.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMediaComboBox.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMediaComboBox.cpp	(revision 79365)
@@ -42,5 +42,5 @@
 
     /* Use the medium creation handler to add all the items:  */
-    foreach (const QUuid &uMediumId, vboxGlobal().mediumIDs())
+    foreach (const QUuid &uMediumId, uiCommon().mediumIDs())
         sltHandleMediumCreated(uMediumId);
 
@@ -60,9 +60,9 @@
     /* Start medium-enumeration (if necessary): */
 #ifndef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
-    if (!vboxGlobal().isMediumEnumerationInProgress())
+    if (!uiCommon().isMediumEnumerationInProgress())
 #else
-    if (!vboxGlobal().isFullMediumEnumerationRequested())
+    if (!uiCommon().isFullMediumEnumerationRequested())
 #endif
-        vboxGlobal().startMediumEnumeration();
+        uiCommon().startMediumEnumeration();
     else
         refresh();
@@ -109,5 +109,5 @@
 {
     /* Search for corresponding medium: */
-    UIMedium guiMedium = vboxGlobal().medium(uMediumId);
+    UIMedium guiMedium = uiCommon().medium(uMediumId);
 
     /* Ignore media (and their children) which are
@@ -138,5 +138,5 @@
 {
     /* Search for corresponding medium: */
-    UIMedium guiMedium = vboxGlobal().medium(uMediumId);
+    UIMedium guiMedium = uiCommon().medium(uMediumId);
 
     /* Add only 1. NULL medium and 2. media of required type: */
@@ -206,13 +206,13 @@
 
     /* Setup medium-processing handlers: */
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumCreated,
+    connect(&uiCommon(), &UICommon::sigMediumCreated,
             this, &UIMediaComboBox::sltHandleMediumCreated);
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumDeleted,
+    connect(&uiCommon(), &UICommon::sigMediumDeleted,
             this, &UIMediaComboBox::sltHandleMediumDeleted);
 
     /* Setup medium-enumeration handlers: */
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumEnumerationStarted,
+    connect(&uiCommon(), &UICommon::sigMediumEnumerationStarted,
             this, &UIMediaComboBox::sltHandleMediumEnumerationStart);
-    connect(&vboxGlobal(), &VBoxGlobal::sigMediumEnumerated,
+    connect(&uiCommon(), &UICommon::sigMediumEnumerated,
             this, &UIMediaComboBox::sltHandleMediumEnumerated);
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMediaComboBox.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMediaComboBox.h	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMediaComboBox.h	(revision 79365)
@@ -27,5 +27,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UILibraryDefs.h"
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMediumSizeEditor.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMediumSizeEditor.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMediumSizeEditor.cpp	(revision 79365)
@@ -24,5 +24,5 @@
 /* GUI includes: */
 #include "QILineEdit.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIConverter.h"
 #include "UIMediumSizeEditor.h"
@@ -37,5 +37,5 @@
     : QIWithRetranslateUI<QWidget>(pParent)
     , m_uSizeMin(_4M)
-    , m_uSizeMax(vboxGlobal().virtualBox().GetSystemProperties().GetInfoVDSize())
+    , m_uSizeMax(uiCommon().virtualBox().GetSystemProperties().GetInfoVDSize())
     , m_iSliderScale(calculateSliderScale(m_uSizeMax))
     , m_uSize(0)
@@ -60,6 +60,6 @@
     m_pSlider->blockSignals(false);
     m_pEditor->blockSignals(true);
-    m_pEditor->setText(vboxGlobal().formatSize(m_uSize));
-    m_enmSizeSuffix = vboxGlobal().parseSizeSuffix(m_pEditor->text());
+    m_pEditor->setText(uiCommon().formatSize(m_uSize));
+    m_enmSizeSuffix = uiCommon().parseSizeSuffix(m_pEditor->text());
     m_pEditor->blockSignals(false);
 
@@ -71,6 +71,6 @@
 {
     /* Translate labels: */
-    m_pLabelMinSize->setText(vboxGlobal().formatSize(m_uSizeMin));
-    m_pLabelMaxSize->setText(vboxGlobal().formatSize(m_uSizeMax));
+    m_pLabelMinSize->setText(uiCommon().formatSize(m_uSizeMin));
+    m_pLabelMaxSize->setText(uiCommon().formatSize(m_uSizeMax));
 
     /* Translate fields: */
@@ -88,6 +88,6 @@
     /* Update the other widget: */
     m_pEditor->blockSignals(true);
-    m_pEditor->setText(vboxGlobal().formatSize(m_uSize));
-    m_enmSizeSuffix = vboxGlobal().parseSizeSuffix(m_pEditor->text());
+    m_pEditor->setText(uiCommon().formatSize(m_uSize));
+    m_enmSizeSuffix = uiCommon().parseSizeSuffix(m_pEditor->text());
     m_pEditor->blockSignals(false);
     /* Update the tool-tips: */
@@ -109,5 +109,5 @@
 
     /* Update the current size: */
-    m_uSize = checkSectorSizeAlignment(vboxGlobal().parseSize(strSizeString));
+    m_uSize = checkSectorSizeAlignment(uiCommon().parseSize(strSizeString));
 
     /* Update the other widget: */
@@ -123,8 +123,8 @@
 QString UIMediumSizeEditor::ensureSizeSuffix(const QString &strSizeString)
 {
-    if (vboxGlobal().hasSizeSuffix(strSizeString))
+    if (uiCommon().hasSizeSuffix(strSizeString))
     {
         /* Update the m_enmSizeSuffix: */
-        m_enmSizeSuffix = vboxGlobal().parseSizeSuffix(strSizeString);
+        m_enmSizeSuffix = uiCommon().parseSizeSuffix(strSizeString);
         return strSizeString;
     }
@@ -196,5 +196,5 @@
             m_pEditor->setFixedWidthByText("88888.88 MB");
             m_pEditor->setAlignment(Qt::AlignRight);
-            m_pEditor->setValidator(new QRegExpValidator(QRegExp(vboxGlobal().sizeRegexp()), this));
+            m_pEditor->setValidator(new QRegExpValidator(QRegExp(uiCommon().sizeRegexp()), this));
             connect(m_pEditor, &QILineEdit::editingFinished,
                     this, &UIMediumSizeEditor::sltSizeEditorEditingFinished);
@@ -285,5 +285,5 @@
 void UIMediumSizeEditor::updateSizeToolTips(qulonglong uSize)
 {
-    const QString strToolTip = tr("<nobr>%1 (%2 B)</nobr>").arg(vboxGlobal().formatSize(uSize)).arg(uSize);
+    const QString strToolTip = tr("<nobr>%1 (%2 B)</nobr>").arg(uiCommon().formatSize(uSize)).arg(uSize);
     m_pSlider->setToolTip(strToolTip);
     m_pEditor->setToolTip(strToolTip);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMenuBar.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMenuBar.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMenuBar.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIImageTools.h"
 #include "UIMenuBar.h"
@@ -32,5 +32,5 @@
 {
     /* Check for beta versions: */
-    if (vboxGlobal().isBeta())
+    if (uiCommon().isBeta())
         m_fShowBetaLabel = true;
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMenuBarEditorWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMenuBarEditorWindow.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMenuBarEditorWindow.cpp	(revision 79365)
@@ -31,5 +31,5 @@
 /* GUI includes: */
 #include "QIToolButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIActionPoolRuntime.h"
 #include "UIConverter.h"
@@ -307,7 +307,7 @@
 UIMenuBarEditorWindow::UIMenuBarEditorWindow(UIMachineWindow *pParent, UIActionPool *pActionPool)
 #ifndef VBOX_WS_MAC
-    : UISlidingToolBar(pParent, pParent->menuBar(), new UIMenuBarEditorWidget(0, false, vboxGlobal().managedVMUuid(), pActionPool), UISlidingToolBar::Position_Top)
+    : UISlidingToolBar(pParent, pParent->menuBar(), new UIMenuBarEditorWidget(0, false, uiCommon().managedVMUuid(), pActionPool), UISlidingToolBar::Position_Top)
 #else
-    : UISlidingToolBar(pParent, 0, new UIMenuBarEditorWidget(0, false, vboxGlobal().managedVMUuid(), pActionPool), UISlidingToolBar::Position_Top)
+    : UISlidingToolBar(pParent, 0, new UIMenuBarEditorWidget(0, false, uiCommon().managedVMUuid(), pActionPool), UISlidingToolBar::Position_Top)
 #endif
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp	(revision 79365)
@@ -37,5 +37,5 @@
 #include "UIIconPool.h"
 #include "UIDesktopWidgetWatchdog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #ifdef VBOX_WS_X11
 # include "UIExtraDataManager.h"
@@ -282,5 +282,5 @@
     /* Left margin: */
 #ifdef VBOX_WS_X11
-    if (vboxGlobal().isCompositingManagerRunning())
+    if (uiCommon().isCompositingManagerRunning())
         m_spacings << widgetForAction(addWidget(new QWidget));
 #else /* !VBOX_WS_X11 */
@@ -337,5 +337,5 @@
     /* Right margin: */
 #ifdef VBOX_WS_X11
-    if (vboxGlobal().isCompositingManagerRunning())
+    if (uiCommon().isCompositingManagerRunning())
         m_spacings << widgetForAction(addWidget(new QWidget));
 #else /* !VBOX_WS_X11 */
@@ -347,5 +347,5 @@
 {
 #ifdef VBOX_WS_X11
-    if (!vboxGlobal().isCompositingManagerRunning())
+    if (!uiCommon().isCompositingManagerRunning())
         return;
 #endif /* VBOX_WS_X11 */
@@ -399,5 +399,5 @@
 #ifdef VBOX_WS_X11
     /* Depending on current WM: */
-    switch (vboxGlobal().typeOfWindowManager())
+    switch (uiCommon().typeOfWindowManager())
     {
         // WORKAROUND:
@@ -794,10 +794,10 @@
         {
             /* Determine whether we should use the native full-screen mode: */
-            const bool fUseNativeFullScreen = VBoxGlobal::supportsFullScreenMonitorsProtocolX11() &&
+            const bool fUseNativeFullScreen = UICommon::supportsFullScreenMonitorsProtocolX11() &&
                                               !gEDataManager->legacyFullscreenModeRequested();
             if (fUseNativeFullScreen)
             {
                 /* Tell recent window managers which host-screen this window should be mapped to: */
-                VBoxGlobal::setFullScreenMonitorX11(this, iHostScreen);
+                UICommon::setFullScreenMonitorX11(this, iHostScreen);
             }
 
@@ -853,5 +853,5 @@
 #elif defined(VBOX_WS_X11)
     /* Enable translucency through Qt API if supported: */
-    if (vboxGlobal().isCompositingManagerRunning())
+    if (uiCommon().isCompositingManagerRunning())
         setAttribute(Qt::WA_TranslucentBackground);
 #endif /* VBOX_WS_X11 */
@@ -927,6 +927,6 @@
 #ifdef VBOX_WS_X11
     /* Hide mini-toolbar from taskbar and pager: */
-    vboxGlobal().setSkipTaskBarFlag(this);
-    vboxGlobal().setSkipPagerFlag(this);
+    uiCommon().setSkipTaskBarFlag(this);
+    uiCommon().setSkipPagerFlag(this);
 #endif
 }
@@ -998,5 +998,5 @@
         emit sigNotifyAboutWindowActivationStolen();
 #elif defined(VBOX_WS_X11)
-        switch (vboxGlobal().typeOfWindowManager())
+        switch (uiCommon().typeOfWindowManager())
         {
             case X11WMType_GNOMEShell:
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.cpp	(revision 79365)
@@ -24,5 +24,5 @@
 /* GUI includes: */
 #include "QILineEdit.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIFilePathSelector.h"
 #include "UINameAndSystemEditor.h"
@@ -68,5 +68,5 @@
 {
     if (!m_pPathSelector)
-        return vboxGlobal().virtualBox().GetSystemProperties().GetDefaultMachineFolder();
+        return uiCommon().virtualBox().GetSystemProperties().GetDefaultMachineFolder();
     return m_pPathSelector->path();
 }
@@ -177,5 +177,5 @@
 CGuestOSType UINameAndSystemEditor::type() const
 {
-    return vboxGlobal().vmGuestOSType(typeId(), familyId());
+    return uiCommon().vmGuestOSType(typeId(), familyId());
 }
 
@@ -273,5 +273,5 @@
 
     /* Update selected type pixmap: */
-    m_pIconType->setPixmap(vboxGlobal().vmGuestOSTypePixmapDefault(m_strTypeId));
+    m_pIconType->setPixmap(uiCommon().vmGuestOSTypePixmapDefault(m_strTypeId));
 
     /* Save the most recently used item: */
@@ -297,5 +297,5 @@
 {
     /* Check if host supports (AMD-V or VT-x) and long mode: */
-    CHost host = vboxGlobal().host();
+    CHost host = uiCommon().host();
     m_fSupportsHWVirtEx = host.GetProcessorFeature(KProcessorFeature_HWVirtEx);
     m_fSupportsLongMode = host.GetProcessorFeature(KProcessorFeature_LongMode);
@@ -348,5 +348,5 @@
             if (m_pPathSelector)
             {
-                QString strDefaultMachineFolder = vboxGlobal().virtualBox().GetSystemProperties().GetDefaultMachineFolder();
+                QString strDefaultMachineFolder = uiCommon().virtualBox().GetSystemProperties().GetDefaultMachineFolder();
                 m_pPathSelector->setPath(strDefaultMachineFolder);
                 m_pPathSelector->setDefaultPath(strDefaultMachineFolder);
@@ -438,5 +438,5 @@
 {
     /* Acquire family IDs: */
-    m_familyIDs = vboxGlobal().vmGuestOSFamilyIDs();
+    m_familyIDs = uiCommon().vmGuestOSFamilyIDs();
 
     /* For each known family ID: */
@@ -446,10 +446,10 @@
 
         /* Append VM OS family combo: */
-        m_pComboFamily->insertItem(i, vboxGlobal().vmGuestOSFamilyDescription(strFamilyId));
+        m_pComboFamily->insertItem(i, uiCommon().vmGuestOSFamilyDescription(strFamilyId));
         m_pComboFamily->setItemData(i, strFamilyId, TypeID);
 
         /* Fill in the type cache: */
         m_types[strFamilyId] = QList<UIGuestOSType>();
-        foreach (const CGuestOSType &comType, vboxGlobal().vmGuestOSTypeList(strFamilyId))
+        foreach (const CGuestOSType &comType, uiCommon().vmGuestOSTypeList(strFamilyId))
         {
             UIGuestOSType guiType;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIPopupStack.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIPopupStack.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIPopupStack.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIPopupStack.h"
 #include "UIPopupStackViewport.h"
@@ -202,5 +202,5 @@
 
     /* Adjust geometry: */
-    VBoxGlobal::setTopLevelGeometry(this, iX, iY, iWidth, iHeight);
+    UICommon::setTopLevelGeometry(this, iX, iY, iWidth, iHeight);
 }
 
@@ -247,5 +247,5 @@
         {
             /* Configure scroll-area: */
-            VBoxGlobal::setCursor(m_pScrollArea, Qt::ArrowCursor);
+            UICommon::setCursor(m_pScrollArea, Qt::ArrowCursor);
             m_pScrollArea->setWidgetResizable(true);
             m_pScrollArea->setFrameStyle(QFrame::NoFrame | QFrame::Plain);
@@ -259,5 +259,5 @@
             {
                 /* Configure scroll-viewport: */
-                VBoxGlobal::setCursor(m_pScrollViewport, Qt::ArrowCursor);
+                UICommon::setCursor(m_pScrollViewport, Qt::ArrowCursor);
                 /* Connect scroll-viewport: */
                 connect(this, &UIPopupStack::sigProposeStackViewportSize,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIProgressDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIProgressDialog.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIProgressDialog.cpp	(revision 79365)
@@ -34,5 +34,5 @@
 #include "UIProgressEventHandler.h"
 #include "UISpecialControls.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #ifdef VBOX_WS_MAC
 # include "VBoxUtils-darwin.h"
@@ -424,8 +424,8 @@
         iHours   -= iDays    * 24;
 
-        const QString strDays = VBoxGlobal::daysToString(iDays);
-        const QString strHours = VBoxGlobal::hoursToString(iHours);
-        const QString strMinutes = VBoxGlobal::minutesToString(iMinutes);
-        const QString strSeconds = VBoxGlobal::secondsToString(iSeconds);
+        const QString strDays = UICommon::daysToString(iDays);
+        const QString strHours = UICommon::hoursToString(iHours);
+        const QString strMinutes = UICommon::minutesToString(iMinutes);
+        const QString strSeconds = UICommon::secondsToString(iSeconds);
 
         const QString strTwoComp = tr("%1, %2 remaining", "You may wish to translate this more like \"Time remaining: %1, %2\"");
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UISlidingToolBar.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UISlidingToolBar.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UISlidingToolBar.cpp	(revision 79365)
@@ -20,5 +20,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UISlidingToolBar.h"
 #include "UIAnimationFramework.h"
@@ -125,5 +125,5 @@
     setAttribute(Qt::WA_TranslucentBackground);
 #elif defined(VBOX_WS_X11)
-    if (vboxGlobal().isCompositingManagerRunning())
+    if (uiCommon().isCompositingManagerRunning())
     {
         /* Use Qt API to enable translucency: */
@@ -185,5 +185,5 @@
         case Position_Top:
         {
-            VBoxGlobal::setTopLevelGeometry(this, m_parentRect.x(), m_parentRect.y()                         + m_indentRect.height(),
+            UICommon::setTopLevelGeometry(this, m_parentRect.x(), m_parentRect.y()                         + m_indentRect.height(),
                                                   qMax(m_parentRect.width(), sh.width()), sh.height());
             m_pWidget->setGeometry(0, -sh.height(), qMax(width(), sh.width()), sh.height());
@@ -192,5 +192,5 @@
         case Position_Bottom:
         {
-            VBoxGlobal::setTopLevelGeometry(this, m_parentRect.x(), m_parentRect.y() + m_parentRect.height() - m_indentRect.height() - sh.height(),
+            UICommon::setTopLevelGeometry(this, m_parentRect.x(), m_parentRect.y() + m_parentRect.height() - m_indentRect.height() - sh.height(),
                                                   qMax(m_parentRect.width(), sh.width()), sh.height());
             m_pWidget->setGeometry(0,  sh.height(), qMax(width(), sh.width()), sh.height());
@@ -200,5 +200,5 @@
 
 #ifdef VBOX_WS_X11
-    if (!vboxGlobal().isCompositingManagerRunning())
+    if (!uiCommon().isCompositingManagerRunning())
     {
         /* Use Xshape otherwise: */
@@ -242,5 +242,5 @@
         case Position_Top:
         {
-            VBoxGlobal::setTopLevelGeometry(this, m_parentRect.x(), m_parentRect.y()                         + m_indentRect.height(),
+            UICommon::setTopLevelGeometry(this, m_parentRect.x(), m_parentRect.y()                         + m_indentRect.height(),
                                                   qMax(m_parentRect.width(), sh.width()), sh.height());
             break;
@@ -248,5 +248,5 @@
         case Position_Bottom:
         {
-            VBoxGlobal::setTopLevelGeometry(this, m_parentRect.x(), m_parentRect.y() + m_parentRect.height() - m_indentRect.height() - sh.height(),
+            UICommon::setTopLevelGeometry(this, m_parentRect.x(), m_parentRect.y() + m_parentRect.height() - m_indentRect.height() - sh.height(),
                                                   qMax(m_parentRect.width(), sh.width()), sh.height());
             break;
@@ -257,5 +257,5 @@
 
 #ifdef VBOX_WS_X11
-    if (!vboxGlobal().isCompositingManagerRunning())
+    if (!uiCommon().isCompositingManagerRunning())
     {
         /* Use Xshape otherwise: */
@@ -293,5 +293,5 @@
 
 #ifdef VBOX_WS_X11
-    if (!vboxGlobal().isCompositingManagerRunning())
+    if (!uiCommon().isCompositingManagerRunning())
     {
         /* Use Xshape otherwise: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIStatusBarEditorWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIStatusBarEditorWindow.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIStatusBarEditorWindow.cpp	(revision 79365)
@@ -32,5 +32,5 @@
 /* GUI includes: */
 #include "QIToolButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIConverter.h"
 #include "UIExtraDataManager.h"
@@ -393,5 +393,5 @@
 
 UIStatusBarEditorWindow::UIStatusBarEditorWindow(UIMachineWindow *pParent)
-    : UISlidingToolBar(pParent, pParent->statusBar(), new UIStatusBarEditorWidget(0, false, vboxGlobal().managedVMUuid()), UISlidingToolBar::Position_Bottom)
+    : UISlidingToolBar(pParent, pParent->statusBar(), new UIStatusBarEditorWidget(0, false, uiCommon().managedVMUuid()), UISlidingToolBar::Position_Bottom)
 {
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsTextPane.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsTextPane.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsTextPane.cpp	(revision 79365)
@@ -27,5 +27,5 @@
 #include "UIGraphicsTextPane.h"
 #include "UIRichTextString.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* Other VBox includes: */
@@ -383,7 +383,7 @@
     /* Update mouse-cursor: */
     if (m_strHoveredAnchor.isNull())
-        VBoxGlobal::unsetCursor(this);
+        UICommon::unsetCursor(this);
     else
-        VBoxGlobal::setCursor(this, Qt::PointingHandCursor);
+        UICommon::setCursor(this, Qt::PointingHandCursor);
 
     /* Update text-layout: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizard.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizard.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizard.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 #include "UIWizard.h"
 #include "UIWizardPage.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "QIRichTextLabel.h"
 #include "UIExtraDataManager.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizardPage.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizardPage.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizardPage.cpp	(revision 79365)
@@ -20,5 +20,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIWizard.h"
 #include "UIWizardPage.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVD.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVD.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVD.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 #include "UIWizardCloneVDPageBasic3.h"
 #include "UIWizardCloneVDPageExpert.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 
@@ -57,5 +57,5 @@
 
     /* Get VBox object: */
-    CVirtualBox comVBox = vboxGlobal().virtualBox();
+    CVirtualBox comVBox = uiCommon().virtualBox();
 
     /* Create new virtual disk image: */
@@ -98,5 +98,5 @@
 
     /* Make sure we register the medium to VBox: */
-    vboxGlobal().createMedium(UIMedium(m_comTargetVirtualDisk, UIMediumDeviceType_HardDisk, KMediumState_Created));
+    uiCommon().createMedium(UIMedium(m_comTargetVirtualDisk, UIMediumDeviceType_HardDisk, KMediumState_Created));
 
     return true;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageBasic1.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageBasic1.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageBasic1.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 #include "UIWizardCloneVDPageBasic1.h"
 #include "UIWizardCloneVD.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "QIRichTextLabel.h"
 
@@ -100,5 +100,5 @@
             {
                 /* Enumerate medium formats in special order: */
-                CSystemProperties properties = vboxGlobal().virtualBox().GetSystemProperties();
+                CSystemProperties properties = uiCommon().virtualBox().GetSystemProperties();
                 const QVector<CMediumFormat> &formats = properties.GetMediumFormats();
                 QMap<QString, CMediumFormat> vdi, preferred, others;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageBasic3.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageBasic3.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageBasic3.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 #include "UIWizardCloneVDPageBasic3.h"
 #include "UIWizardCloneVD.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 #include "UIIconPool.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageExpert.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageExpert.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageExpert.cpp	(revision 79365)
@@ -67,5 +67,5 @@
                 {
                     /* Enumerate medium formats in special order: */
-                    CSystemProperties properties = vboxGlobal().virtualBox().GetSystemProperties();
+                    CSystemProperties properties = uiCommon().virtualBox().GetSystemProperties();
                     const QVector<CMediumFormat> &formats = properties.GetMediumFormats();
                     QMap<QString, CMediumFormat> vdi, preferred, others;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 #include "UIWizardCloneVMPageBasic3.h"
 #include "UIWizardCloneVMPageExpert.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 
@@ -61,5 +61,5 @@
 
     /* Get VBox object: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
 
     /* Prepare machine for cloning: */
@@ -73,5 +73,5 @@
     {
         /* Open session: */
-        CSession session = vboxGlobal().openSession(m_machine.GetId());
+        CSession session = uiCommon().openSession(m_machine.GetId());
         if (session.isNull())
             return false;
@@ -188,5 +188,5 @@
 void UIWizardCloneVM::prepare()
 {
-    QString strDefaultMachineFolder = vboxGlobal().virtualBox().GetSystemProperties().GetDefaultMachineFolder();
+    QString strDefaultMachineFolder = uiCommon().virtualBox().GetSystemProperties().GetDefaultMachineFolder();
     /* Create corresponding pages: */
     switch (mode())
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic1.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic1.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic1.cpp	(revision 79365)
@@ -29,5 +29,5 @@
 #include "UIWizardCloneVM.h"
 #include "UIWizardCloneVMPageBasic1.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 
 /* COM includes: */
@@ -92,5 +92,5 @@
 void UIWizardCloneVMPage1::composeCloneFilePath()
 {
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
     setCloneFilePath(vbox.ComposeMachineFilename(m_pNameLineEdit ? m_pNameLineEdit->text() : QString(),
                                                  m_strGroup,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic1.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic1.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic1.cpp	(revision 79365)
@@ -22,5 +22,5 @@
 #include "QILabelSeparator.h"
 #include "QIRichTextLabel.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 #include "UIWizardExportApp.h"
@@ -43,5 +43,5 @@
 {
     /* Add all VM items into VM selector: */
-    foreach (const CMachine &machine, vboxGlobal().virtualBox().GetMachines())
+    foreach (const CMachine &machine, uiCommon().virtualBox().GetMachines())
     {
         QPixmap pixIcon;
@@ -54,7 +54,7 @@
         if (machine.GetAccessible())
         {
-            pixIcon = vboxGlobal().vmUserPixmapDefault(machine);
+            pixIcon = uiCommon().vmUserPixmapDefault(machine);
             if (pixIcon.isNull())
-                pixIcon = vboxGlobal().vmGuestOSTypePixmapDefault(machine.GetOSTypeId());
+                pixIcon = uiCommon().vmGuestOSTypePixmapDefault(machine.GetOSTypeId());
             strName = machine.GetName();
             uUuid = machine.GetId();
@@ -66,5 +66,5 @@
             QString settingsFile = machine.GetSettingsFilePath();
             QFileInfo fi(settingsFile);
-            strName = VBoxGlobal::hasAllowedExtension(fi.completeSuffix(), VBoxFileExts) ? fi.completeBaseName() : fi.fileName();
+            strName = UICommon::hasAllowedExtension(fi.completeSuffix(), VBoxFileExts) ? fi.completeBaseName() : fi.fileName();
             pixIcon = QPixmap(":/os_other.png").scaled(iIconMetric, iIconMetric, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
         }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic2.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic2.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic2.cpp	(revision 79365)
@@ -35,5 +35,5 @@
 #include "QIRichTextLabel.h"
 #include "QIToolButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIConverter.h"
 #include "UIEmptyFilePathSelector.h"
@@ -95,5 +95,5 @@
     /* Initialize Cloud Provider Manager: */
     bool fOCIPresent = false;
-    CVirtualBox comVBox = vboxGlobal().virtualBox();
+    CVirtualBox comVBox = uiCommon().virtualBox();
     m_comCloudProviderManager = comVBox.GetCloudProviderManager();
     /* Show error message if necessary: */
@@ -313,5 +313,5 @@
 
             /* Get the machine with the uMachineId: */
-            CVirtualBox comVBox = vboxGlobal().virtualBox();
+            CVirtualBox comVBox = uiCommon().virtualBox();
             CMachine comMachine = comVBox.FindMachine(uMachineId.toString());
             if (!comVBox.isOk())
@@ -434,5 +434,5 @@
         /* Compose file selector path: */
         const QString strPath = QDir::toNativeSeparators(QString("%1/%2")
-                                                         .arg(vboxGlobal().documentsPath())
+                                                         .arg(uiCommon().documentsPath())
                                                          .arg(m_strFileSelectorName + m_strFileSelectorExt));
         m_pFileSelector->setPath(strPath);
@@ -1047,5 +1047,5 @@
         fResult = m_comCloudProfile.isNotNull();
     else
-        fResult = VBoxGlobal::hasAllowedExtension(path().toLower(), OVFFileExts);
+        fResult = UICommon::hasAllowedExtension(path().toLower(), OVFFileExts);
 
     /* Return result: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic3.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic3.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic3.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 #include "QILabelSeparator.h"
 #include "QIRichTextLabel.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 #include "UIWizardExportApp.h"
@@ -62,5 +62,5 @@
         {
             /* Get the machine with the uMachineId: */
-            CVirtualBox comVBox = vboxGlobal().virtualBox();
+            CVirtualBox comVBox = uiCommon().virtualBox();
             CMachine comMachine = comVBox.FindMachine(uMachineId.toString());
             if (comVBox.isOk() && comMachine.isNotNull())
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageExpert.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageExpert.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageExpert.cpp	(revision 79365)
@@ -32,5 +32,5 @@
 /* GUI includes: */
 #include "QIToolButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIApplianceExportEditorWidget.h"
 #include "UIConverter.h"
@@ -576,5 +576,5 @@
 
         fResult =    (   fOVF
-                      && VBoxGlobal::hasAllowedExtension(path().toLower(), OVFFileExts))
+                      && UICommon::hasAllowedExtension(path().toLower(), OVFFileExts))
                   || (   fCSP
                       && m_comCloudProfile.isNotNull()
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRun.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRun.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRun.cpp	(revision 79365)
@@ -19,5 +19,5 @@
 #include "UIWizardFirstRun.h"
 #include "UIWizardFirstRunPageBasic.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 #include "UIMedium.h"
@@ -48,5 +48,5 @@
 
     /* Get global VBox object: */
-    CVirtualBox comVbox = vboxGlobal().virtualBox();
+    CVirtualBox comVbox = uiCommon().virtualBox();
     /* Get machine OS type: */
     const CGuestOSType &comOsType = comVbox.GetGuestOSType(m_machine.GetOSTypeId());
@@ -80,5 +80,5 @@
     /* Get chosen 'dvd' medium to mount: */
     const QUuid uMediumId = field("id").toUuid();
-    const UIMedium guiMedium = vboxGlobal().medium(uMediumId);
+    const UIMedium guiMedium = uiCommon().medium(uMediumId);
     const CMedium comMedium = guiMedium.medium();
 
@@ -146,5 +146,5 @@
     bool fIsBootHardDiskAttached = false;
     /* Get 'vbox' global object: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
     /* Determine machine 'OS type': */
     const CGuestOSType &osType = vbox.GetGuestOSType(machine.GetOSTypeId());
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic.cpp	(revision 79365)
@@ -23,5 +23,5 @@
 #include "QIRichTextLabel.h"
 #include "QIToolButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIIconPool.h"
 #include "UIMediaComboBox.h"
@@ -41,5 +41,5 @@
     /* Get opened vboxMedium id: */
     QUuid uMediumId;
-    vboxGlobal().openMediumSelectorDialog(thisImp(), UIMediumDeviceType_DVD, uMediumId, "", "", "", true);
+    uiCommon().openMediumSelectorDialog(thisImp(), UIMediumDeviceType_DVD, uMediumId, "", "", "", true);
     /* Update medium-combo if necessary: */
     if (!uMediumId.isNull())
@@ -134,5 +134,5 @@
 {
     /* Make sure valid medium chosen: */
-    return !vboxGlobal().medium(id()).isNull();
+    return !uiCommon().medium(id()).isNull();
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportApp.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportApp.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportApp.cpp	(revision 79365)
@@ -29,5 +29,5 @@
 #include "QIDialog.h"
 #include "QIFileDialog.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 #include "UIWizardImportApp.h"
@@ -100,5 +100,5 @@
     void sltSave()
     {
-        QString fileName = QIFileDialog::getSaveFileName(vboxGlobal().documentsPath(), tr("Text (*.txt)"),
+        QString fileName = QIFileDialog::getSaveFileName(uiCommon().documentsPath(), tr("Text (*.txt)"),
                                                          this, tr("Save license to file..."));
         if (!fileName.isEmpty())
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic1.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic1.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic1.cpp	(revision 79365)
@@ -29,5 +29,5 @@
 #include "QIRichTextLabel.h"
 #include "QIToolButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIEmptyFilePathSelector.h"
 #include "UIIconPool.h"
@@ -88,5 +88,5 @@
     {
         /* Initialize Cloud Provider Manager: */
-        CVirtualBox comVBox = vboxGlobal().virtualBox();
+        CVirtualBox comVBox = uiCommon().virtualBox();
         m_comCloudProviderManager = comVBox.GetCloudProviderManager();
         if (!comVBox.isOk())
@@ -378,5 +378,5 @@
         {
             /* Create appliance: */
-            CVirtualBox comVBox = vboxGlobal().virtualBox();
+            CVirtualBox comVBox = uiCommon().virtualBox();
             CAppliance comAppliance = comVBox.CreateAppliance();
             if (!comVBox.isOk())
@@ -630,5 +630,5 @@
                     {
                         m_pFileLabel->setBuddy(m_pFileSelector);
-                        m_pFileSelector->setHomeDir(vboxGlobal().documentsPath());
+                        m_pFileSelector->setHomeDir(uiCommon().documentsPath());
                         m_pFileSelector->setMode(UIEmptyFilePathSelector::Mode_File_Open);
                         m_pFileSelector->setButtonPosition(UIEmptyFilePathSelector::RightPosition);
@@ -882,5 +882,5 @@
 
         fResult =    (   fOVF
-                      && VBoxGlobal::hasAllowedExtension(m_pFileSelector->path().toLower(), OVFFileExts)
+                      && UICommon::hasAllowedExtension(m_pFileSelector->path().toLower(), OVFFileExts)
                       && QFile::exists(m_pFileSelector->path()))
                   || (   fCSP
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageExpert.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageExpert.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageExpert.cpp	(revision 79365)
@@ -29,5 +29,5 @@
 #include "QIComboBox.h"
 #include "QIToolButton.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIApplianceImportEditorWidget.h"
 #include "UIEmptyFilePathSelector.h"
@@ -83,5 +83,5 @@
                             if (m_pFileSelector)
                             {
-                                m_pFileSelector->setHomeDir(vboxGlobal().documentsPath());
+                                m_pFileSelector->setHomeDir(uiCommon().documentsPath());
                                 m_pFileSelector->setMode(UIEmptyFilePathSelector::Mode_File_Open);
                                 m_pFileSelector->setButtonPosition(UIEmptyFilePathSelector::RightPosition);
@@ -357,5 +357,5 @@
 
         fResult =    (   fOVF
-                      && VBoxGlobal::hasAllowedExtension(m_pFileSelector->path().toLower(), OVFFileExts)
+                      && UICommon::hasAllowedExtension(m_pFileSelector->path().toLower(), OVFFileExts)
                       && QFile::exists(m_pFileSelector->path())
                       && m_pApplianceWidget->isValid())
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.cpp	(revision 79365)
@@ -70,5 +70,5 @@
     {
         /* Initialize Cloud Provider Manager: */
-        CVirtualBox comVBox = vboxGlobal().virtualBox();
+        CVirtualBox comVBox = uiCommon().virtualBox();
         m_comCloudProviderManager = comVBox.GetCloudProviderManager();
         if (!comVBox.isOk())
@@ -355,5 +355,5 @@
         {
             /* Create appliance: */
-            CVirtualBox comVBox = vboxGlobal().virtualBox();
+            CVirtualBox comVBox = uiCommon().virtualBox();
             CAppliance comAppliance = comVBox.CreateAppliance();
             if (!comVBox.isOk())
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.cpp	(revision 79365)
@@ -20,5 +20,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIWizardNewVD.h"
 #include "UIWizardNewVDPageBasic1.h"
@@ -63,5 +63,5 @@
 
     /* Get VBox object: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
 
     /* Create new virtual hard-disk: */
@@ -103,6 +103,6 @@
     m_virtualDisk = virtualDisk;
 
-    /* Inform VBoxGlobal about it: */
-    vboxGlobal().createMedium(UIMedium(m_virtualDisk, UIMediumDeviceType_HardDisk, KMediumState_Created));
+    /* Inform UICommon about it: */
+    uiCommon().createMedium(UIMedium(m_virtualDisk, UIMediumDeviceType_HardDisk, KMediumState_Created));
 
     return true;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic1.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic1.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic1.cpp	(revision 79365)
@@ -25,5 +25,5 @@
 #include "UIWizardNewVDPageBasic1.h"
 #include "UIWizardNewVD.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "QIRichTextLabel.h"
 
@@ -100,5 +100,5 @@
             {
                 /* Enumerate medium formats in special order: */
-                CSystemProperties properties = vboxGlobal().virtualBox().GetSystemProperties();
+                CSystemProperties properties = uiCommon().virtualBox().GetSystemProperties();
                 const QVector<CMediumFormat> &formats = properties.GetMediumFormats();
                 QMap<QString, CMediumFormat> vdi, preferred;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic3.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic3.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic3.cpp	(revision 79365)
@@ -29,5 +29,5 @@
 #include "UIWizardNewVDPageBasic3.h"
 #include "UIWizardNewVD.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 #include "UIIconPool.h"
@@ -51,5 +51,5 @@
     , m_strDefaultPath(strDefaultPath)
     , m_uMediumSizeMin(_4M)
-    , m_uMediumSizeMax(vboxGlobal().virtualBox().GetSystemProperties().GetInfoVDSize())
+    , m_uMediumSizeMax(uiCommon().virtualBox().GetSystemProperties().GetInfoVDSize())
 {
 }
@@ -94,5 +94,5 @@
     QString strChosenFilePath = QIFileDialog::getSaveFileName(folder.absoluteFilePath(strFileName),
                                                               strBackendsList, thisImp(),
-                                                              VBoxGlobal::tr("Please choose a location for new virtual hard disk file"));
+                                                              UICommon::tr("Please choose a location for new virtual hard disk file"));
 
     /* If there was something really chosen: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageExpert.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageExpert.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageExpert.cpp	(revision 79365)
@@ -33,5 +33,5 @@
 #include "UIWizardNewVDPageExpert.h"
 #include "UIWizardNewVD.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 #include "UIIconPool.h"
@@ -86,5 +86,5 @@
                 {
                     /* Enumerate medium formats in special order: */
-                    CSystemProperties properties = vboxGlobal().virtualBox().GetSystemProperties();
+                    CSystemProperties properties = uiCommon().virtualBox().GetSystemProperties();
                     const QVector<CMediumFormat> &formats = properties.GetMediumFormats();
                     QMap<QString, CMediumFormat> vdi, preferred, others;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.cpp	(revision 79365)
@@ -17,5 +17,5 @@
 
 /* GUI includes: */
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIWizardNewVM.h"
 #include "UIWizardNewVMPageBasic1.h"
@@ -90,5 +90,5 @@
 {
     /* Get VBox object: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
 
     /* OS type: */
@@ -129,5 +129,5 @@
     m_machine.SetMemorySize(field("ram").toUInt());
     /* Correct the VRAM size since API does not take fullscreen memory requirements into account: */
-    m_machine.SetVRAMSize(qMax(m_machine.GetVRAMSize(), (ULONG)(VBoxGlobal::requiredVideoMemory(strTypeId) / _1M)));
+    m_machine.SetVRAMSize(qMax(m_machine.GetVRAMSize(), (ULONG)(UICommon::requiredVideoMemory(strTypeId) / _1M)));
 #endif
 
@@ -144,5 +144,5 @@
 void UIWizardNewVM::configureVM(const QString &strGuestTypeId, const CGuestOSType &comGuestType)
 {
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
 
     /* RAM size: */
@@ -153,5 +153,5 @@
 
     /* VRAM size - select maximum between recommended and minimum for fullscreen: */
-    m_machine.SetVRAMSize(qMax(comGuestType.GetRecommendedVRAM(), (ULONG)(VBoxGlobal::requiredVideoMemory(strGuestTypeId) / _1M)));
+    m_machine.SetVRAMSize(qMax(comGuestType.GetRecommendedVRAM(), (ULONG)(UICommon::requiredVideoMemory(strGuestTypeId) / _1M)));
 
     /* Selecting recommended chipset type: */
@@ -172,5 +172,5 @@
     {
         /* USB 3.0 is only available if the proper ExtPack is installed: */
-        CExtPackManager manager = vboxGlobal().virtualBox().GetExtensionPackManager();
+        CExtPackManager manager = uiCommon().virtualBox().GetExtensionPackManager();
         if (manager.IsExtPackUsable(GUI_ExtPackName))
         {
@@ -190,5 +190,5 @@
          * necessary evil to patch over legacy compatability issues
          * introduced by the new distribution model. */
-        CExtPackManager manager = vboxGlobal().virtualBox().GetExtensionPackManager();
+        CExtPackManager manager = uiCommon().virtualBox().GetExtensionPackManager();
         if (manager.IsExtPackUsable(GUI_ExtPackName))
             m_machine.AddUSBController("EHCI", KUSBControllerType_EHCI);
@@ -285,5 +285,5 @@
     bool success = false;
     QUuid uMachineId = m_machine.GetId();
-    CSession session = vboxGlobal().openSession(uMachineId);
+    CSession session = uiCommon().openSession(uMachineId);
     if (!session.isNull())
     {
@@ -298,5 +298,5 @@
             if (!comHDDController.isNull())
             {
-                UIMedium vmedium = vboxGlobal().medium(uId);
+                UIMedium vmedium = uiCommon().medium(uId);
                 CMedium medium = vmedium.medium();              /// @todo r=dj can this be cached somewhere?
                 machine.AttachDevice(comHDDController.GetName(), 0, 0, KDeviceType_HardDisk, medium);
@@ -344,5 +344,5 @@
     if (!success)
     {
-        CVirtualBox vbox = vboxGlobal().virtualBox();
+        CVirtualBox vbox = uiCommon().virtualBox();
         /* Unregister on failure */
         QVector<CMedium> aMedia = m_machine.Unregister(KCleanupMode_UnregisterOnly);   /// @todo replace with DetachAllReturnHardDisksOnly once a progress dialog is in place below
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp	(revision 79365)
@@ -24,5 +24,5 @@
 /* GUI includes: */
 #include "QIRichTextLabel.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIMessageCenter.h"
 #include "UINameAndSystemEditor.h"
@@ -179,5 +179,5 @@
 
 {
-    CHost host = vboxGlobal().host();
+    CHost host = uiCommon().host();
     m_fSupportsHWVirtEx = host.GetProcessorFeature(KProcessorFeature_HWVirtEx);
     m_fSupportsLongMode = host.GetProcessorFeature(KProcessorFeature_LongMode);
@@ -197,5 +197,5 @@
             {
                 m_pNameAndSystemEditor->blockSignals(true);
-                m_pNameAndSystemEditor->setType(vboxGlobal().vmGuestOSType(gs_OSTypePattern[i].pcstId));
+                m_pNameAndSystemEditor->setType(uiCommon().vmGuestOSType(gs_OSTypePattern[i].pcstId));
                 m_pNameAndSystemEditor->blockSignals(false);
             }
@@ -219,5 +219,5 @@
         return;
     /* Get VBox: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
+    CVirtualBox vbox = uiCommon().virtualBox();
 
     /* Compose machine filename: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic2.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic2.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic2.cpp	(revision 79365)
@@ -27,5 +27,5 @@
 #include "UIWizardNewVMPageBasic2.h"
 #include "UIWizardNewVM.h"
-#include "VBoxGlobal.h"
+#include "UICommon.h"
 #include "UIGuestRAMSlider.h"
 #include "QIRichTextLabel.h"
@@ -69,5 +69,5 @@
                 m_pRamEditor->setMinimum(m_pRamSlider->minimum());
                 m_pRamEditor->setMaximum(m_pRamSlider->maximum());
-                vboxGlobal().setMinimumWidthAccordingSymbolCount(m_pRamEditor, 5);
+                uiCommon().setMinimumWidthAccordingSymbolCount(m_pRamEditor, 5);
             }
             m_pRamUnits = new QLabel(this);
@@ -135,7 +135,7 @@
                                         "<p>The recommended memory size is <b>%1</b> MB.</p>")
                                         .arg(strRecommendedRAM));
-    m_pRamUnits->setText(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes"));
-    m_pRamMin->setText(QString("%1 %2").arg(m_pRamSlider->minRAM()).arg(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes")));
-    m_pRamMax->setText(QString("%1 %2").arg(m_pRamSlider->maxRAM()).arg(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes")));
+    m_pRamUnits->setText(UICommon::tr("MB", "size suffix MBytes=1024 KBytes"));
+    m_pRamMin->setText(QString("%1 %2").arg(m_pRamSlider->minRAM()).arg(UICommon::tr("MB", "size suffix MBytes=1024 KBytes")));
+    m_pRamMax->setText(QString("%1 %2").arg(m_pRamSlider->maxRAM()).arg(UICommon::tr("MB", "size suffix MBytes=1024 KBytes")));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.cpp	(revision 79365)
@@ -65,5 +65,5 @@
     QUuid uMediumId;
 
-    int returnCode = vboxGlobal().openMediumSelectorDialog(thisImp(), UIMediumDeviceType_HardDisk,
+    int returnCode = uiCommon().openMediumSelectorDialog(thisImp(), UIMediumDeviceType_HardDisk,
                                                            uMediumId,
                                                            fieldImp("machineFolder").toString(),
@@ -129,6 +129,6 @@
 
 #ifndef VBOX_GUI_WITH_NEW_MEDIA_EVENTS
-    /* Inform VBoxGlobal about it: */
-    vboxGlobal().deleteMedium(uMediumID);
+    /* Inform UICommon about it: */
+    uiCommon().deleteMedium(uMediumID);
 #endif
 
@@ -217,5 +217,5 @@
     /* Translate widgets: */
     QString strRecommendedHDD = field("type").value<CGuestOSType>().isNull() ? QString() :
-                                VBoxGlobal::formatSize(field("type").value<CGuestOSType>().GetRecommendedHDD());
+                                UICommon::formatSize(field("type").value<CGuestOSType>().GetRecommendedHDD());
     m_pLabel->setText(UIWizardNewVM::tr("<p>If you wish you can add a virtual hard disk to the new machine. "
                                         "You can either create a new hard disk file or select one from the list "
@@ -264,5 +264,5 @@
     return m_pDiskSkip->isChecked() ||
            !m_pDiskPresent->isChecked() ||
-           !vboxGlobal().medium(m_pDiskSelector->id()).isNull();
+           !uiCommon().medium(m_pDiskSelector->id()).isNull();
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp	(revision 79364)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp	(revision 79365)
@@ -67,5 +67,5 @@
                     m_pRamEditor->setMinimum(m_pRamSlider->minimum());
                     m_pRamEditor->setMaximum(m_pRamSlider->maximum());
-                    vboxGlobal().setMinimumWidthAccordingSymbolCount(m_pRamEditor, 5);
+                    uiCommon().setMinimumWidthAccordingSymbolCount(m_pRamEditor, 5);
                 }
                 m_pRamUnits = new QLabel(m_pMemoryCnt);
@@ -237,7 +237,7 @@
     m_pNameAndSystemCnt->setTitle(UIWizardNewVM::tr("Name and operating system"));
     m_pMemoryCnt->setTitle(UIWizardNewVM::tr("&Memory size"));
-    m_pRamUnits->setText(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes"));
-    m_pRamMin->setText(QString("%1 %2").arg(m_pRamSlider->minRAM()).arg(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes")));
-    m_pRamMax->setText(QString("%1 %2").arg(m_pRamSlider->maxRAM()).arg(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes")));
+    m_pRamUnits->setText(UICommon::tr("MB", "size suffix MBytes=1024 KBytes"));
+    m_pRamMin->setText(QString("%1 %2").arg(m_pRamSlider->minRAM()).arg(UICommon::tr("MB", "size suffix MBytes=1024 KBytes")));
+    m_pRamMax->setText(QString("%1 %2").arg(m_pRamSlider->maxRAM()).arg(UICommon::tr("MB", "size suffix MBytes=1024 KBytes")));
     m_pDiskCnt->setTitle(UIWizardNewVM::tr("Hard disk"));
     m_pDiskSkip->setText(UIWizardNewVM::tr("&Do not add a virtual hard disk"));
@@ -274,5 +274,5 @@
     return UIWizardPage::isComplete() &&
            (m_pRamSlider->value() >= qMax(1, (int)m_pRamSlider->minRAM()) && m_pRamSlider->value() <= (int)m_pRamSlider->maxRAM()) &&
-           (m_pDiskSkip->isChecked() || !m_pDiskPresent->isChecked() || !vboxGlobal().medium(m_pDiskSelector->id()).isNull());
+           (m_pDiskSkip->isChecked() || !m_pDiskPresent->isChecked() || !uiCommon().medium(m_pDiskSelector->id()).isNull());
 }
 
Index: /trunk/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp	(revision 79364)
+++ /trunk/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp	(revision 79365)
@@ -200,5 +200,5 @@
     {   kSupIFT_Exe,  kSupID_AppBin,             true, "VirtualBoxVM" SUPLIB_EXE_SUFF },
     {   kSupIFT_Dll,  kSupID_AppPrivArch,        true, "VirtualBoxVM" SUPLIB_DLL_SUFF },
-    {   kSupIFT_Dll,  kSupID_AppPrivArch,        true, "VBoxGlobal" SUPLIB_DLL_SUFF },
+    {   kSupIFT_Dll,  kSupID_AppPrivArch,        true, "UICommon" SUPLIB_DLL_SUFF },
 # if !defined(RT_OS_DARWIN) && !defined(RT_OS_WINDOWS) && !defined(RT_OS_OS2)
     {   kSupIFT_Dll,  kSupID_AppSharedLib,       true, "VBoxKeyboard" SUPLIB_DLL_SUFF },
Index: /trunk/src/VBox/Installer/darwin/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Installer/darwin/Makefile.kmk	(revision 79364)
+++ /trunk/src/VBox/Installer/darwin/Makefile.kmk	(revision 79365)
@@ -400,5 +400,5 @@
 ifdef VBOX_WITH_HARDENING
  VBOX_DI_VBAPP_DYLIBS += \
- 	MacOS/VBoxGlobal.dylib \
+ 	MacOS/UICommon.dylib \
  	MacOS/VirtualBoxVM.dylib \
  	MacOS/VBoxNetDHCP.dylib \
Index: /trunk/src/VBox/Installer/linux/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Installer/linux/Makefile.kmk	(revision 79364)
+++ /trunk/src/VBox/Installer/linux/Makefile.kmk	(revision 79365)
@@ -246,5 +246,5 @@
  	VirtualBox \
  	VirtualBoxVM \
- 	VBoxGlobal.so \
+ 	UICommon.so \
  	$(if $(VBOX_WITH_DEBUGGER_GUI),VBoxDbg.so DbgPlugInDiggers.so)
  ifdef VBOX_WITH_HARDENING
Index: /trunk/src/VBox/Installer/solaris/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Installer/solaris/Makefile.kmk	(revision 79364)
+++ /trunk/src/VBox/Installer/solaris/Makefile.kmk	(revision 79365)
@@ -370,5 +370,5 @@
 	VBoxNetNAT.so \
 	$(if $(VBOX_WITH_VBOXSDL),VBoxSDL.so,) \
-	$(if $(VBOX_WITH_QTGUI),VirtualBoxVM.so VBoxGlobal.so,)
+	$(if $(VBOX_WITH_QTGUI),VirtualBoxVM.so UICommon.so,)
 endif
 
Index: /trunk/src/VBox/Installer/win/VBoxMergeApp.wxi
===================================================================
--- /trunk/src/VBox/Installer/win/VBoxMergeApp.wxi	(revision 79364)
+++ /trunk/src/VBox/Installer/win/VBoxMergeApp.wxi	(revision 79365)
@@ -325,6 +325,6 @@
             Source="$(env.PATH_OUT)\bin\VirtualBoxVM.exe">
         </File>
-        <File Id="file_VBoxGlobal.dll" Name="VBoxGlobal.dll"
-            Source="$(env.PATH_OUT)\bin\VBoxGlobal.dll">
+        <File Id="file_UICommon.dll" Name="UICommon.dll"
+            Source="$(env.PATH_OUT)\bin\UICommon.dll">
         </File>
         <?if $(env.VBOX_WITH_HARDENING) = "yes" ?>
