VirtualBox

Changeset 92400 in vbox


Ignore:
Timestamp:
Nov 12, 2021 3:07:42 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
148254
Message:

FE/Qt: bugref:10067: UINotificationCenter: Support for Ascending/Descending notification ordering; Corresponding flag is GUI/NotificationCenter/Order.

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h

    r89295 r92400  
    7878
    7979/* Declare global canConvert specializations: */
     80template<> SHARED_LIBRARY_STUFF bool canConvert<Qt::SortOrder>();
    8081template<> SHARED_LIBRARY_STUFF bool canConvert<SizeSuffix>();
    8182template<> SHARED_LIBRARY_STUFF bool canConvert<StorageSlot>();
     
    157158
    158159/* Declare global conversion specializations: */
     160template<> SHARED_LIBRARY_STUFF QString toInternalString(const Qt::SortOrder &enmSortOrder);
     161template<> SHARED_LIBRARY_STUFF Qt::SortOrder fromInternalString<Qt::SortOrder>(const QString &strSortOrder);
    159162template<> SHARED_LIBRARY_STUFF QString toString(const SizeSuffix &sizeSuffix);
    160163template<> SHARED_LIBRARY_STUFF SizeSuffix fromString<SizeSuffix>(const QString &strSizeSuffix);
  • trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp

    r91717 r92400  
    3232/* Determines if <Object of type X> can be converted to object of other type.
    3333 * These functions returns 'true' for all allowed conversions. */
     34template<> bool canConvert<Qt::SortOrder>() { return true; }
    3435template<> bool canConvert<SizeSuffix>() { return true; }
    3536template<> bool canConvert<StorageSlot>() { return true; }
     
    8384
    8485
     86/* QString <= Qt::SortOrder: */
     87template<> QString toInternalString(const Qt::SortOrder &enmSortOrder)
     88{
     89    QString strResult;
     90    switch (enmSortOrder)
     91    {
     92        case Qt::AscendingOrder: strResult = "Ascending"; break;
     93        case Qt::DescendingOrder: strResult = "Descending"; break;
     94        default:
     95        {
     96            AssertMsgFailed(("No text for sort order=%d", enmSortOrder));
     97            break;
     98        }
     99    }
     100    return strResult;
     101}
     102
     103/* Qt::SortOrder <= QString: */
     104template<> Qt::SortOrder fromInternalString<Qt::SortOrder>(const QString &strSortOrder)
     105{
     106    /* Here we have some fancy stuff allowing us
     107     * to search through the keys using 'case-insensitive' rule: */
     108    QStringList keys;     QList<Qt::SortOrder> values;
     109    keys << "Ascending";  values << Qt::AscendingOrder;
     110    keys << "Descending"; values << Qt::DescendingOrder;
     111    /* Qt::AscendingOrder type for unknown words: */
     112    if (!keys.contains(strSortOrder, Qt::CaseInsensitive))
     113        return Qt::AscendingOrder;
     114    /* Corresponding type for known words: */
     115    return values.at(keys.indexOf(QRegExp(strSortOrder, Qt::CaseInsensitive)));
     116}
     117
    85118/* QString <= SizeSuffix: */
    86119template<> QString toString(const SizeSuffix &sizeSuffix)
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp

    r92398 r92400  
    2929const char *UIExtraDataDefs::GUI_InvertMessageOption = "GUI/InvertMessageOption";
    3030const char *UIExtraDataDefs::GUI_NotificationCenter_KeepSuccessfullProgresses = "GUI/NotificationCenter/KeepSuccessfullProgresses";
     31const char *UIExtraDataDefs::GUI_NotificationCenter_Order = "GUI/NotificationCenter/Order";
    3132#if !defined(VBOX_BLEEDING_EDGE) && !defined(DEBUG)
    3233const char *UIExtraDataDefs::GUI_PreventBetaWarning = "GUI/PreventBetaWarning";
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h

    r92398 r92400  
    5959        /** Holds whether successfull notification-progresses should NOT close automatically. */
    6060        SHARED_LIBRARY_STUFF extern const char *GUI_NotificationCenter_KeepSuccessfullProgresses;
     61        /** Holds notification-center order. */
     62        SHARED_LIBRARY_STUFF extern const char *GUI_NotificationCenter_Order;
    6163#if !defined(VBOX_BLEEDING_EDGE) && !defined(DEBUG)
    6264        /** Holds version for which user wants to prevent BETA build warning. */
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp

    r92398 r92400  
    18961896           << GUI_RestrictedDialogs
    18971897           << GUI_SuppressMessages << GUI_InvertMessageOption
    1898            << GUI_NotificationCenter_KeepSuccessfullProgresses
     1898           << GUI_NotificationCenter_KeepSuccessfullProgresses << GUI_NotificationCenter_Order
    18991899#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
    19001900           << GUI_PreventApplicationUpdate << GUI_UpdateDate << GUI_UpdateCheckCount
     
    23522352}
    23532353
     2354Qt::SortOrder UIExtraDataManager::notificationCenterOrder()
     2355{
     2356    return gpConverter->fromInternalString<Qt::SortOrder>(extraDataString(GUI_NotificationCenter_Order));
     2357}
     2358
     2359void UIExtraDataManager::setNotificationCenterOrder(Qt::SortOrder enmOrder)
     2360{
     2361    const QString strValue = enmOrder == Qt::AscendingOrder ? QString() : gpConverter->toInternalString(enmOrder);
     2362    setExtraDataString(GUI_NotificationCenter_Order, strValue);
     2363}
     2364
    23542365#if !defined(VBOX_BLEEDING_EDGE) && !defined(DEBUG)
    23552366QString UIExtraDataManager::preventBetaBuildWarningForVersion()
     
    47264737        if (strKey.startsWith("GUI/"))
    47274738        {
     4739            /* Notification-center order? */
     4740            if (strKey == GUI_NotificationCenter_Order)
     4741                emit sigNotificationCenterOrderChange();
    47284742            /* Language changed? */
    47294743            if (strKey == GUI_LanguageID)
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h

    r91713 r92400  
    6666    void sigExtraDataChange(const QUuid &uID, const QString &strKey, const QString &strValue);
    6767
     68    /** Notifies about notification-center order change. */
     69    void sigNotificationCenterOrderChange();
     70
    6871    /** Notifies about GUI language change. */
    6972    void sigLanguageChange(QString strLanguage);
     
    188191        /** Defines whether successfull notification-progresses should NOT close (@a fKeep) automatically. */
    189192        void setKeepSuccessfullNotificationProgresses(bool fKeep);
     193
     194        /** Returns notification-center order. */
     195        Qt::SortOrder notificationCenterOrder();
     196        /** Defines notification-progresses @a enmOrder. */
     197        void setNotificationCenterOrder(Qt::SortOrder enmOrder);
    190198
    191199#if !defined(VBOX_BLEEDING_EDGE) && !defined(DEBUG)
  • trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.cpp

    r92295 r92400  
    148148    : QIWithRetranslateUI<QWidget>(pParent)
    149149    , m_pModel(0)
     150    , m_enmOrder(Qt::AscendingOrder)
    150151    , m_pLayoutMain(0)
    151152    , m_pLayoutButtons(0)
     
    352353}
    353354
     355void UINotificationCenter::sltHandleOrderChange()
     356{
     357    m_enmOrder = gEDataManager->notificationCenterOrder();
     358    sltModelChanged();
     359}
     360
    354361void UINotificationCenter::sltHandleOpenButtonToggled(bool fToggled)
    355362{
     
    402409
    403410    /* Populate model contents again: */
    404     foreach (const QUuid &uId, m_pModel->ids())
    405         m_pLayoutItems->addWidget(UINotificationItem::create(this, m_pModel->objectById(uId)));
     411    const int iCount = m_pModel->ids().count();
     412    for (int iIndex = 0; iIndex < iCount; ++iIndex)
     413    {
     414        const QUuid &uId = m_pModel->ids().at(iIndex);
     415        m_pLayoutItems->insertWidget(m_enmOrder == Qt::AscendingOrder ? iCount : 0,
     416                                     UINotificationItem::create(this, m_pModel->objectById(uId)));
     417    }
    406418
    407419    /* Since there is a scroll-area expanded up to whole
     
    443455    prepareStateMachineSliding();
    444456    prepareOpenTimer();
     457
     458    /* Prepare order: */
     459    m_enmOrder = gEDataManager->notificationCenterOrder();
     460    connect(gEDataManager, &UIExtraDataManager::sigNotificationCenterOrderChange,
     461            this, &UINotificationCenter::sltHandleOrderChange);
    445462
    446463    /* Apply language settings: */
  • trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.h

    r92295 r92400  
    101101private slots:
    102102
     103    /** Handles order changes. */
     104    void sltHandleOrderChange();
     105
    103106    /** Issues request to make open button @a fToggled. */
    104107    void sltHandleOpenButtonToggled(bool fToggled);
     
    151154    /** Holds the model instance. */
    152155    UINotificationModel *m_pModel;
     156
     157    /** Holds the order. */
     158    Qt::SortOrder  m_enmOrder;
    153159
    154160    /** Holds the main layout instance. */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette