Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/UIWelcomePane.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/UIWelcomePane.cpp	(revision 103093)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/UIWelcomePane.cpp	(revision 103094)
@@ -27,6 +27,8 @@
 
 /* Qt includes: */
+#include <QButtonGroup>
 #include <QGridLayout>
 #include <QLabel>
+#include <QPushButton>
 #include <QStyle>
 #include <QUrl>
@@ -37,4 +39,5 @@
 #include "UICommon.h"
 #include "UIDesktopWidgetWatchdog.h"
+#include "UIExtraDataManager.h"
 #include "UIIconPool.h"
 #include "UIWelcomePane.h"
@@ -48,4 +51,5 @@
     : QIWithRetranslateUI<QWidget>(pParent)
     , m_pLabelGreetings(0)
+    , m_pLabelMode(0)
     , m_pLabelIcon(0)
 {
@@ -88,4 +92,20 @@
                                       "for more information and latest news.</p>")
                                       .arg(QKeySequence(QKeySequence::HelpContents).toString(QKeySequence::NativeText)));
+
+    /* Translate experience mode stuff: */
+    if (m_pLabelMode)
+        m_pLabelMode->setText(tr("<h3>Please choose Experience Mode!</h3>"
+                                 "By default, the VirtualBox GUI is hiding some options, tools and wizards. "
+                                 "<p>The <b>Basic Mode</b> is intended for a users who are not interested in advanced "
+                                 "functionality and prefer a simpler, cleaner interface.</p>"
+                                 "<p>The <b>Expert Mode</b> is intended for experienced users who wish to utilize all "
+                                 "VirtualBox functionality.</p>"
+                                 "<p>You can choose whether you are a beginner or experienced user by selecting required "
+                                 "option at the right. This choice can always be changed in Global Preferences or Machine "
+                                 "Settings windows.</p>"));
+    if (m_buttons.contains(false))
+        m_buttons.value(false)->setText(tr("Basic Mode"));
+    if (m_buttons.contains(true))
+        m_buttons.value(true)->setText(tr("Expert Mode"));
 }
 
@@ -93,4 +113,22 @@
 {
     uiCommon().openURL(urlLink.toString());
+}
+
+void UIWelcomePane::sltHandleButtonClicked(QAbstractButton *pButton)
+{
+    /* Make sure one of buttons was really pressed: */
+    AssertReturnVoid(m_buttons.contains(pButton));
+
+    /* Hide everything related to experience mode: */
+    if (m_pLabelMode)
+        m_pLabelMode->hide();
+    if (m_buttons.contains(false))
+        m_buttons.value(false)->hide();
+    if (m_buttons.contains(true))
+        m_buttons.value(true)->hide();
+
+    /* Check which button was pressed actually and save the value: */
+    const bool fExpertMode = m_buttons.key(pButton, false);
+    gEDataManager->setSettingsInExpertMode(fExpertMode);
 }
 
@@ -115,5 +153,5 @@
         pMainLayout->setContentsMargins(iL, iT, iR, iB);
         pMainLayout->setSpacing(iSpacing);
-        pMainLayout->setRowStretch(1, 1);
+        pMainLayout->setRowStretch(2, 1);
 
         /* Prepare greetings label: */
@@ -132,4 +170,52 @@
             m_pLabelIcon->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
             pMainLayout->addWidget(m_pLabelIcon, 0, 1);
+        }
+
+        /* This block for the case if experienced mode is NOT defined yet: */
+        if (gEDataManager->extraDataString(UIExtraDataDefs::GUI_Settings_ExpertMode).isNull())
+        {
+            /* Prepare experience mode label: */
+            m_pLabelMode = new QIRichTextLabel(this);
+            if (m_pLabelMode)
+            {
+                m_pLabelMode->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
+                pMainLayout->addWidget(m_pLabelMode, 1, 0);
+            }
+
+            /* Prepare button layout: */
+            QVBoxLayout *pLayoutButton = new QVBoxLayout;
+            if (pLayoutButton)
+            {
+                pLayoutButton->setSpacing(iSpacing / 2);
+
+                /* Prepare button group: */
+                QButtonGroup *pButtonGroup = new QButtonGroup(this);
+                if (pButtonGroup)
+                {
+                    /* Prepare Basic button ('false' means 'not Expert'): */
+                    m_buttons[false] = new QPushButton(this);
+                    QAbstractButton *pButtonBasic = m_buttons.value(false);
+                    if (pButtonBasic)
+                    {
+                        pButtonGroup->addButton(pButtonBasic);
+                        pLayoutButton->addWidget(pButtonBasic);
+                    }
+
+                    /* Prepare Expert button ('true' means 'is Expert'): */
+                    m_buttons[true] = new QPushButton(this);
+                    QAbstractButton *pButtonExpert = m_buttons[true];
+                    if (pButtonExpert)
+                    {
+                        pButtonGroup->addButton(pButtonExpert);
+                        pLayoutButton->addWidget(pButtonExpert);
+                    }
+
+                    connect(pButtonGroup, &QButtonGroup::buttonClicked,
+                            this, &UIWelcomePane::sltHandleButtonClicked);
+                }
+
+                pLayoutButton->addStretch();
+                pMainLayout->addLayout(pLayoutButton, 1, 1);
+            }
         }
     }
Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/UIWelcomePane.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/UIWelcomePane.h	(revision 103093)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/UIWelcomePane.h	(revision 103094)
@@ -40,4 +40,5 @@
 
 /* Forward declarations: */
+class QAbstractButton;
 class QLabel;
 class QIRichTextLabel;
@@ -66,4 +67,7 @@
     void sltHandleLinkActivated(const QUrl &urlLink);
 
+    /** Handles @a pButton click. */
+    void sltHandleButtonClicked(QAbstractButton *pButton);
+
 private:
 
@@ -80,7 +84,11 @@
 
     /** Holds the greetings label instance. */
-    QIRichTextLabel *m_pLabelGreetings;
+    QIRichTextLabel              *m_pLabelGreetings;
+    /** Holds the mode label instance. */
+    QIRichTextLabel              *m_pLabelMode;
+    /** Holds a list of experience mode button instances. */
+    QMap<bool, QAbstractButton*>  m_buttons;
     /** Holds the icon label instance. */
-    QLabel          *m_pLabelIcon;
+    QLabel                       *m_pLabelIcon;
 };
 
