Index: trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 89298)
+++ trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 89299)
@@ -5,5 +5,5 @@
 
 #
-# Copyright (C) 2006-2020 Oracle Corporation
+# Copyright (C) 2006-2021 Oracle Corporation
 #
 # This file is part of VirtualBox Open Source Edition (OSE), as
@@ -848,4 +848,5 @@
 	src/settings/editors/UIBaseMemoryEditor.h \
 	src/settings/editors/UIBootOrderEditor.h \
+	src/settings/editors/UIColorThemeEditor.h \
 	src/settings/editors/UIDefaultMachineFolderEditor.h \
 	src/settings/editors/UIGraphicsControllerEditor.h \
@@ -1388,4 +1389,5 @@
 	src/settings/editors/UIBaseMemoryEditor.cpp \
 	src/settings/editors/UIBootOrderEditor.cpp \
+	src/settings/editors/UIColorThemeEditor.cpp \
 	src/settings/editors/UIDefaultMachineFolderEditor.cpp \
 	src/settings/editors/UIGraphicsControllerEditor.cpp \
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIColorThemeEditor.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIColorThemeEditor.cpp	(revision 89299)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIColorThemeEditor.cpp	(revision 89299)
@@ -0,0 +1,151 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIColorThemeEditor class implementation.
+ */
+
+/*
+ * Copyright (C) 2019-2021 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 <QGridLayout>
+#include <QHBoxLayout>
+#include <QLabel>
+
+/* GUI includes: */
+#include "QIComboBox.h"
+#include "UIColorThemeEditor.h"
+#include "UIConverter.h"
+
+
+UIColorThemeEditor::UIColorThemeEditor(QWidget *pParent /* = 0 */, bool fWithLabel /* = false */)
+    : QIWithRetranslateUI<QWidget>(pParent)
+    , m_fWithLabel(fWithLabel)
+    , m_enmValue(UIColorThemeType_Auto)
+    , m_pLabel(0)
+    , m_pCombo(0)
+{
+    prepare();
+}
+
+void UIColorThemeEditor::setValue(UIColorThemeType enmValue)
+{
+    if (m_pCombo)
+    {
+        /* Update cached value and
+         * combo if value has changed: */
+        if (m_enmValue != enmValue)
+        {
+            m_enmValue = enmValue;
+            populateCombo();
+        }
+
+        /* Look for proper index to choose: */
+        int iIndex = m_pCombo->findData(QVariant::fromValue(m_enmValue));
+        if (iIndex != -1)
+            m_pCombo->setCurrentIndex(iIndex);
+    }
+}
+
+UIColorThemeType UIColorThemeEditor::value() const
+{
+    return m_pCombo ? m_pCombo->currentData().value<UIColorThemeType>() : m_enmValue;
+}
+
+void UIColorThemeEditor::retranslateUi()
+{
+    if (m_pLabel)
+        m_pLabel->setText(tr("Color &Theme:"));
+    if (m_pCombo)
+    {
+        for (int i = 0; i < m_pCombo->count(); ++i)
+        {
+            const UIColorThemeType enmType = m_pCombo->itemData(i).value<UIColorThemeType>();
+            m_pCombo->setItemText(i, gpConverter->toString(enmType));
+        }
+    }
+}
+
+void UIColorThemeEditor::sltHandleCurrentIndexChanged()
+{
+    if (m_pCombo)
+        emit sigValueChanged(m_pCombo->itemData(m_pCombo->currentIndex()).value<UIColorThemeType>());
+}
+
+void UIColorThemeEditor::prepare()
+{
+    /* Create main layout: */
+    QGridLayout *pMainLayout = new QGridLayout(this);
+    if (pMainLayout)
+    {
+        pMainLayout->setContentsMargins(0, 0, 0, 0);
+        int iRow = 0;
+
+        /* Create label: */
+        if (m_fWithLabel)
+            m_pLabel = new QLabel(this);
+        if (m_pLabel)
+            pMainLayout->addWidget(m_pLabel, 0, iRow++, 1, 1);
+
+        /* Create combo layout: */
+        QHBoxLayout *pComboLayout = new QHBoxLayout;
+        if (pComboLayout)
+        {
+            /* Create combo: */
+            m_pCombo = new QIComboBox(this);
+            if (m_pCombo)
+            {
+                setFocusProxy(m_pCombo->focusProxy());
+                /* This is necessary since contents is dynamical now: */
+                m_pCombo->setSizeAdjustPolicy(QComboBox::AdjustToContents);
+                if (m_pLabel)
+                    m_pLabel->setBuddy(m_pCombo->focusProxy());
+                connect(m_pCombo, static_cast<void(QIComboBox::*)(int)>(&QIComboBox::currentIndexChanged),
+                        this, &UIColorThemeEditor::sltHandleCurrentIndexChanged);
+                pComboLayout->addWidget(m_pCombo);
+            }
+
+            /* Add stretch: */
+            pComboLayout->addStretch();
+
+            /* Add combo-layout into main-layout: */
+            pMainLayout->addLayout(pComboLayout, 0, iRow++, 1, 1);
+        }
+    }
+
+    /* Populate combo: */
+    populateCombo();
+
+    /* Apply language settings: */
+    retranslateUi();
+}
+
+void UIColorThemeEditor::populateCombo()
+{
+    if (m_pCombo)
+    {
+        /* Clear combo first of all: */
+        m_pCombo->clear();
+
+        /* Get possible values: */
+        QList<UIColorThemeType> possibleValues;
+        possibleValues << UIColorThemeType_Auto
+                       << UIColorThemeType_Light
+                       << UIColorThemeType_Dark;
+
+        /* Update combo with all the possible values: */
+        foreach (const UIColorThemeType &enmType, possibleValues)
+            m_pCombo->addItem(QString(), QVariant::fromValue(enmType));
+
+        /* Retranslate finally: */
+        retranslateUi();
+    }
+}
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIColorThemeEditor.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIColorThemeEditor.h	(revision 89299)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIColorThemeEditor.h	(revision 89299)
@@ -0,0 +1,86 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIColorThemeEditor class declaration.
+ */
+
+/*
+ * Copyright (C) 2019-2021 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_settings_editors_UIColorThemeEditor_h
+#define FEQT_INCLUDED_SRC_settings_editors_UIColorThemeEditor_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+/* Qt includes: */
+#include <QWidget>
+
+/* GUI includes: */
+#include "QIWithRetranslateUI.h"
+#include "UIExtraDataDefs.h"
+#include "UILibraryDefs.h"
+
+/* Forward declarations: */
+class QLabel;
+class QIComboBox;
+
+/** QWidget subclass used as a color theme editor. */
+class SHARED_LIBRARY_STUFF UIColorThemeEditor : public QIWithRetranslateUI<QWidget>
+{
+    Q_OBJECT;
+
+signals:
+
+    /** Notifies listeners about @a enmValue change. */
+    void sigValueChanged(UIColorThemeType enmValue);
+
+public:
+
+    /** Constructs color theme editor passing @a pParent to the base-class.
+      * @param  fWithLabel  Brings whether we should add label ourselves. */
+    UIColorThemeEditor(QWidget *pParent = 0, bool fWithLabel = false);
+
+    /** Defines editor @a enmValue. */
+    void setValue(UIColorThemeType enmValue);
+    /** Returns editor value. */
+    UIColorThemeType value() const;
+
+protected:
+
+    /** Handles translation event. */
+    virtual void retranslateUi() /* override */;
+
+private slots:
+
+    /** Handles current index change. */
+    void sltHandleCurrentIndexChanged();
+
+private:
+
+    /** Prepares all. */
+    void prepare();
+    /** Populates combo. */
+    void populateCombo();
+
+    /** Holds whether descriptive label should be created. */
+    bool  m_fWithLabel;
+
+    /** Holds the value to be selected. */
+    UIColorThemeType  m_enmValue;
+
+    /** Holds the label instance. */
+    QLabel     *m_pLabel;
+    /** Holds the combo instance. */
+    QIComboBox *m_pCombo;
+};
+
+#endif /* !FEQT_INCLUDED_SRC_settings_editors_UIColorThemeEditor_h */
