Index: /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h	(revision 92399)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h	(revision 92400)
@@ -78,4 +78,5 @@
 
 /* Declare global canConvert specializations: */
+template<> SHARED_LIBRARY_STUFF bool canConvert<Qt::SortOrder>();
 template<> SHARED_LIBRARY_STUFF bool canConvert<SizeSuffix>();
 template<> SHARED_LIBRARY_STUFF bool canConvert<StorageSlot>();
@@ -157,4 +158,6 @@
 
 /* Declare global conversion specializations: */
+template<> SHARED_LIBRARY_STUFF QString toInternalString(const Qt::SortOrder &enmSortOrder);
+template<> SHARED_LIBRARY_STUFF Qt::SortOrder fromInternalString<Qt::SortOrder>(const QString &strSortOrder);
 template<> SHARED_LIBRARY_STUFF QString toString(const SizeSuffix &sizeSuffix);
 template<> SHARED_LIBRARY_STUFF SizeSuffix fromString<SizeSuffix>(const QString &strSizeSuffix);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 92399)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 92400)
@@ -32,4 +32,5 @@
 /* Determines if <Object of type X> can be converted to object of other type.
  * These functions returns 'true' for all allowed conversions. */
+template<> bool canConvert<Qt::SortOrder>() { return true; }
 template<> bool canConvert<SizeSuffix>() { return true; }
 template<> bool canConvert<StorageSlot>() { return true; }
@@ -83,4 +84,36 @@
 
 
+/* QString <= Qt::SortOrder: */
+template<> QString toInternalString(const Qt::SortOrder &enmSortOrder)
+{
+    QString strResult;
+    switch (enmSortOrder)
+    {
+        case Qt::AscendingOrder: strResult = "Ascending"; break;
+        case Qt::DescendingOrder: strResult = "Descending"; break;
+        default:
+        {
+            AssertMsgFailed(("No text for sort order=%d", enmSortOrder));
+            break;
+        }
+    }
+    return strResult;
+}
+
+/* Qt::SortOrder <= QString: */
+template<> Qt::SortOrder fromInternalString<Qt::SortOrder>(const QString &strSortOrder)
+{
+    /* Here we have some fancy stuff allowing us
+     * to search through the keys using 'case-insensitive' rule: */
+    QStringList keys;     QList<Qt::SortOrder> values;
+    keys << "Ascending";  values << Qt::AscendingOrder;
+    keys << "Descending"; values << Qt::DescendingOrder;
+    /* Qt::AscendingOrder type for unknown words: */
+    if (!keys.contains(strSortOrder, Qt::CaseInsensitive))
+        return Qt::AscendingOrder;
+    /* Corresponding type for known words: */
+    return values.at(keys.indexOf(QRegExp(strSortOrder, Qt::CaseInsensitive)));
+}
+
 /* QString <= SizeSuffix: */
 template<> QString toString(const SizeSuffix &sizeSuffix)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp	(revision 92399)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp	(revision 92400)
@@ -29,4 +29,5 @@
 const char *UIExtraDataDefs::GUI_InvertMessageOption = "GUI/InvertMessageOption";
 const char *UIExtraDataDefs::GUI_NotificationCenter_KeepSuccessfullProgresses = "GUI/NotificationCenter/KeepSuccessfullProgresses";
+const char *UIExtraDataDefs::GUI_NotificationCenter_Order = "GUI/NotificationCenter/Order";
 #if !defined(VBOX_BLEEDING_EDGE) && !defined(DEBUG)
 const char *UIExtraDataDefs::GUI_PreventBetaWarning = "GUI/PreventBetaWarning";
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 92399)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 92400)
@@ -59,4 +59,6 @@
         /** Holds whether successfull notification-progresses should NOT close automatically. */
         SHARED_LIBRARY_STUFF extern const char *GUI_NotificationCenter_KeepSuccessfullProgresses;
+        /** Holds notification-center order. */
+        SHARED_LIBRARY_STUFF extern const char *GUI_NotificationCenter_Order;
 #if !defined(VBOX_BLEEDING_EDGE) && !defined(DEBUG)
         /** Holds version for which user wants to prevent BETA build warning. */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 92399)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 92400)
@@ -1896,5 +1896,5 @@
            << GUI_RestrictedDialogs
            << GUI_SuppressMessages << GUI_InvertMessageOption
-           << GUI_NotificationCenter_KeepSuccessfullProgresses
+           << GUI_NotificationCenter_KeepSuccessfullProgresses << GUI_NotificationCenter_Order
 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER
            << GUI_PreventApplicationUpdate << GUI_UpdateDate << GUI_UpdateCheckCount
@@ -2352,4 +2352,15 @@
 }
 
+Qt::SortOrder UIExtraDataManager::notificationCenterOrder()
+{
+    return gpConverter->fromInternalString<Qt::SortOrder>(extraDataString(GUI_NotificationCenter_Order));
+}
+
+void UIExtraDataManager::setNotificationCenterOrder(Qt::SortOrder enmOrder)
+{
+    const QString strValue = enmOrder == Qt::AscendingOrder ? QString() : gpConverter->toInternalString(enmOrder);
+    setExtraDataString(GUI_NotificationCenter_Order, strValue);
+}
+
 #if !defined(VBOX_BLEEDING_EDGE) && !defined(DEBUG)
 QString UIExtraDataManager::preventBetaBuildWarningForVersion()
@@ -4726,4 +4737,7 @@
         if (strKey.startsWith("GUI/"))
         {
+            /* Notification-center order? */
+            if (strKey == GUI_NotificationCenter_Order)
+                emit sigNotificationCenterOrderChange();
             /* Language changed? */
             if (strKey == GUI_LanguageID)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 92399)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 92400)
@@ -66,4 +66,7 @@
     void sigExtraDataChange(const QUuid &uID, const QString &strKey, const QString &strValue);
 
+    /** Notifies about notification-center order change. */
+    void sigNotificationCenterOrderChange();
+
     /** Notifies about GUI language change. */
     void sigLanguageChange(QString strLanguage);
@@ -188,4 +191,9 @@
         /** Defines whether successfull notification-progresses should NOT close (@a fKeep) automatically. */
         void setKeepSuccessfullNotificationProgresses(bool fKeep);
+
+        /** Returns notification-center order. */
+        Qt::SortOrder notificationCenterOrder();
+        /** Defines notification-progresses @a enmOrder. */
+        void setNotificationCenterOrder(Qt::SortOrder enmOrder);
 
 #if !defined(VBOX_BLEEDING_EDGE) && !defined(DEBUG)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.cpp	(revision 92399)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.cpp	(revision 92400)
@@ -148,4 +148,5 @@
     : QIWithRetranslateUI<QWidget>(pParent)
     , m_pModel(0)
+    , m_enmOrder(Qt::AscendingOrder)
     , m_pLayoutMain(0)
     , m_pLayoutButtons(0)
@@ -352,4 +353,10 @@
 }
 
+void UINotificationCenter::sltHandleOrderChange()
+{
+    m_enmOrder = gEDataManager->notificationCenterOrder();
+    sltModelChanged();
+}
+
 void UINotificationCenter::sltHandleOpenButtonToggled(bool fToggled)
 {
@@ -402,6 +409,11 @@
 
     /* Populate model contents again: */
-    foreach (const QUuid &uId, m_pModel->ids())
-        m_pLayoutItems->addWidget(UINotificationItem::create(this, m_pModel->objectById(uId)));
+    const int iCount = m_pModel->ids().count();
+    for (int iIndex = 0; iIndex < iCount; ++iIndex)
+    {
+        const QUuid &uId = m_pModel->ids().at(iIndex);
+        m_pLayoutItems->insertWidget(m_enmOrder == Qt::AscendingOrder ? iCount : 0,
+                                     UINotificationItem::create(this, m_pModel->objectById(uId)));
+    }
 
     /* Since there is a scroll-area expanded up to whole
@@ -443,4 +455,9 @@
     prepareStateMachineSliding();
     prepareOpenTimer();
+
+    /* Prepare order: */
+    m_enmOrder = gEDataManager->notificationCenterOrder();
+    connect(gEDataManager, &UIExtraDataManager::sigNotificationCenterOrderChange,
+            this, &UINotificationCenter::sltHandleOrderChange);
 
     /* Apply language settings: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.h	(revision 92399)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.h	(revision 92400)
@@ -101,4 +101,7 @@
 private slots:
 
+    /** Handles order changes. */
+    void sltHandleOrderChange();
+
     /** Issues request to make open button @a fToggled. */
     void sltHandleOpenButtonToggled(bool fToggled);
@@ -151,4 +154,7 @@
     /** Holds the model instance. */
     UINotificationModel *m_pModel;
+
+    /** Holds the order. */
+    Qt::SortOrder  m_enmOrder;
 
     /** Holds the main layout instance. */
