VirtualBox

Changeset 101231 in vbox for trunk


Ignore:
Timestamp:
Sep 21, 2023 9:02:31 PM (17 months ago)
Author:
vboxsync
Message:

FE/Qt: bugref:10513: Update UIEditor with more interesting tab-widget handling; Filtering technique now will be hiding tab-widget tabs if they are not suitable.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIEditor.cpp

    r101230 r101231  
    3838
    3939
     40UIEditor::UIEditor(QTabWidget *pTabWidget)
     41    : m_pTabWidget(pTabWidget)
     42{
     43}
     44
    4045UIEditor::UIEditor(QWidget *pParent /* = 0 */)
    4146    : QIWithRetranslateUI<QWidget>(pParent)
     47    , m_pTabWidget(0)
    4248{
    4349}
     
    8187    }
    8288
    83     /* Update widget visibility: */
    84     setVisible(fVisible);
     89    /* Hide/show this editor special way if it's one of tab-widget tabs: */
     90    if (m_pTabWidget)
     91    {
     92        for (int i = 0; i < m_pTabWidget->count(); ++i)
     93            if (this == m_pTabWidget->widget(i))
     94                m_pTabWidget->setTabVisible(i, fVisible);
     95    }
     96    /* Otherwise update widget visibility usual way: */
     97    else
     98        setVisible(fVisible);
    8599}
    86100
     
    101115            result << pButton->text().remove(re);
    102116
    103     /* Adding all the tab-widget tabs: */
    104     foreach (QTabWidget *pTabWidget, findChildren<QTabWidget*>())
    105         if (pTabWidget)
    106             for (int i = 0; i < pTabWidget->count(); ++i)
    107                 result << pTabWidget->tabText(i).remove(re);
    108 
    109117    /* Adding all the horizontal headers of abstract-item-view: */
    110118    foreach (QAbstractItemView *pView, findChildren<QAbstractItemView*>())
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIEditor.h

    r101230 r101231  
    3535#include "QIWithRetranslateUI.h"
    3636
     37/* Forward declarations: */
     38class QTabWidget;
     39
    3740/** QWidget sub-class used as editor interface. */
    3841class SHARED_LIBRARY_STUFF UIEditor : public QIWithRetranslateUI<QWidget>
     
    4245public:
    4346
     47    /** Constructs editor to be injected into @a pTabWidget. */
     48    UIEditor(QTabWidget *pTabWidget);
    4449    /** Constructs editor passing @a pParent to the base-class. */
    4550    UIEditor(QWidget *pParent = 0);
     
    5358protected:
    5459
     60    /** Handles translation event. */
     61    virtual void retranslateUi() RT_OVERRIDE {}
     62
    5563    /** Returns editor description which could be used to filter it in. */
    5664    virtual QStringList description() const;
     65
     66    /** Holds the parent tab-widget if any. */
     67    QTabWidget *m_pTabWidget;
    5768
    5869    /** Holds the list of sub-editors. */
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp

    r101230 r101231  
    886886{
    887887    /* Prepare 'Screen' tab: */
    888     m_pTabScreen = new QWidget;
     888    m_pTabScreen = new UIEditor(m_pTabWidget);
    889889    if (m_pTabScreen)
    890890    {
     
    897897            if (m_pEditorVideoMemorySize)
    898898            {
    899                 addEditor(m_pEditorVideoMemorySize);
     899                m_pTabScreen->addEditor(m_pEditorVideoMemorySize);
    900900                pLayoutScreen->addWidget(m_pEditorVideoMemorySize);
    901901            }
     
    905905            if (m_pEditorMonitorCount)
    906906            {
    907                 addEditor(m_pEditorMonitorCount);
     907                m_pTabScreen->addEditor(m_pEditorMonitorCount);
    908908                pLayoutScreen->addWidget(m_pEditorMonitorCount);
    909909            }
     
    913913            if (m_pEditorScaleFactor)
    914914            {
    915                 addEditor(m_pEditorScaleFactor);
     915                m_pTabScreen->addEditor(m_pEditorScaleFactor);
    916916                pLayoutScreen->addWidget(m_pEditorScaleFactor);
    917917            }
     
    921921            if (m_pEditorGraphicsController)
    922922            {
    923                 addEditor(m_pEditorGraphicsController);
     923                m_pTabScreen->addEditor(m_pEditorGraphicsController);
    924924                pLayoutScreen->addWidget(m_pEditorGraphicsController);
    925925            }
     
    930930            if (m_pEditorDisplayScreenFeatures)
    931931            {
    932                 addEditor(m_pEditorDisplayScreenFeatures);
     932                m_pTabScreen->addEditor(m_pEditorDisplayScreenFeatures);
    933933                pLayoutScreen->addWidget(m_pEditorDisplayScreenFeatures);
    934934            }
     
    938938        }
    939939
     940        addEditor(m_pTabScreen);
    940941        m_pTabWidget->addTab(m_pTabScreen, QString());
    941942    }
     
    945946{
    946947    /* Prepare 'Remote Display' tab: */
    947     m_pTabRemoteDisplay = new QWidget;
     948    m_pTabRemoteDisplay = new UIEditor(m_pTabWidget);
    948949    if (m_pTabRemoteDisplay)
    949950    {
     
    956957            if (m_pEditorVRDESettings)
    957958            {
    958                 addEditor(m_pEditorVRDESettings);
     959                m_pTabRemoteDisplay->addEditor(m_pEditorVRDESettings);
    959960                pLayoutRemoteDisplay->addWidget(m_pEditorVRDESettings);
    960961            }
     
    963964        }
    964965
     966        addEditor(m_pTabRemoteDisplay);
    965967        m_pTabWidget->addTab(m_pTabRemoteDisplay, QString());
    966968    }
     
    970972{
    971973    /* Prepare 'Recording' tab: */
    972     m_pTabRecording = new QWidget;
     974    m_pTabRecording = new UIEditor(m_pTabWidget);
    973975    if (m_pTabRecording)
    974976    {
     
    981983            if (m_pEditorRecordingSettings)
    982984            {
    983                 addEditor(m_pEditorRecordingSettings);
     985                m_pTabRecording->addEditor(m_pEditorRecordingSettings);
    984986                pLayoutRecording->addWidget(m_pEditorRecordingSettings);
    985987            }
     
    988990        }
    989991
     992        addEditor(m_pTabRecording);
    990993        m_pTabWidget->addTab(m_pTabRecording, QString());
    991994    }
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h

    r98103 r101231  
    168168
    169169        /** Holds the 'Screen' tab instance. */
    170         QWidget                              *m_pTabScreen;
     170        UIEditor                      *m_pTabScreen;
    171171        /** Holds the video memory size editor instance. */
    172         UIVideoMemoryEditor                  *m_pEditorVideoMemorySize;
     172        UIVideoMemoryEditor           *m_pEditorVideoMemorySize;
    173173        /** Holds the monitor count spinbox instance. */
    174         UIMonitorCountEditor                 *m_pEditorMonitorCount;
     174        UIMonitorCountEditor          *m_pEditorMonitorCount;
    175175        /** Holds the scale factor editor instance. */
    176         UIScaleFactorEditor                  *m_pEditorScaleFactor;
     176        UIScaleFactorEditor           *m_pEditorScaleFactor;
    177177        /** Holds the graphics controller editor instance. */
    178         UIGraphicsControllerEditor           *m_pEditorGraphicsController;
     178        UIGraphicsControllerEditor    *m_pEditorGraphicsController;
    179179#ifdef VBOX_WITH_3D_ACCELERATION
    180180        /** Holds the display screen features editor instance. */
    181         UIDisplayScreenFeaturesEditor        *m_pEditorDisplayScreenFeatures;
     181        UIDisplayScreenFeaturesEditor *m_pEditorDisplayScreenFeatures;
    182182#endif
    183183
    184184        /** Holds the 'Remote Display' tab instance. */
    185         QWidget              *m_pTabRemoteDisplay;
     185        UIEditor             *m_pTabRemoteDisplay;
    186186        /** Holds the VRDE settings editor instance. */
    187187        UIVRDESettingsEditor *m_pEditorVRDESettings;
    188188
    189189        /** Holds the 'Recording' tab instance. */
    190         QWidget                   *m_pTabRecording;
     190        UIEditor                  *m_pTabRecording;
    191191        /** Holds the Recording settings editor instance. */
    192192        UIRecordingSettingsEditor *m_pEditorRecordingSettings;
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp

    r101230 r101231  
    556556{
    557557    /* Prepare 'Basic' tab: */
    558     m_pTabBasic = new QWidget;
     558    m_pTabBasic = new UIEditor(m_pTabWidget);
    559559    if (m_pTabBasic)
    560560    {
     
    567567            if (m_pEditorNameAndSystem)
    568568            {
    569                 addEditor(m_pEditorNameAndSystem);
     569                m_pTabBasic->addEditor(m_pEditorNameAndSystem);
    570570                pLayoutBasic->addWidget(m_pEditorNameAndSystem);
    571571            }
     
    574574        }
    575575
     576        addEditor(m_pTabBasic);
    576577        m_pTabWidget->addTab(m_pTabBasic, QString());
    577578    }
     
    581582{
    582583    /* Prepare 'Advanced' tab: */
    583     m_pTabAdvanced = new QWidget;
     584    m_pTabAdvanced = new UIEditor(m_pTabWidget);
    584585    if (m_pTabAdvanced)
    585586    {
     
    592593            if (m_pEditorSnapshotFolder)
    593594            {
    594                 addEditor(m_pEditorSnapshotFolder);
     595                m_pTabAdvanced->addEditor(m_pEditorSnapshotFolder);
    595596                pLayoutAdvanced->addWidget(m_pEditorSnapshotFolder);
    596597            }
     
    600601            if (m_pEditorClipboard)
    601602            {
    602                 addEditor(m_pEditorClipboard);
     603                m_pTabAdvanced->addEditor(m_pEditorClipboard);
    603604                pLayoutAdvanced->addWidget(m_pEditorClipboard);
    604605            }
     
    608609            if (m_pEditorDragAndDrop)
    609610            {
    610                 addEditor(m_pEditorDragAndDrop);
     611                m_pTabAdvanced->addEditor(m_pEditorDragAndDrop);
    611612                pLayoutAdvanced->addWidget(m_pEditorDragAndDrop);
    612613            }
     
    615616        }
    616617
     618        addEditor(m_pTabAdvanced);
    617619        m_pTabWidget->addTab(m_pTabAdvanced, QString());
    618620    }
     
    622624{
    623625    /* Prepare 'Description' tab: */
    624     m_pTabDescription = new QWidget;
     626    m_pTabDescription = new UIEditor(m_pTabWidget);
    625627    if (m_pTabDescription)
    626628    {
     
    634636            {
    635637                m_pEditorDescription->setObjectName(QStringLiteral("m_pEditorDescription"));
    636                 addEditor(m_pEditorDescription);
     638                m_pTabDescription->addEditor(m_pEditorDescription);
    637639                pLayoutDescription->addWidget(m_pEditorDescription);
    638640            }
    639641        }
    640642
     643        addEditor(m_pTabDescription);
    641644        m_pTabWidget->addTab(m_pTabDescription, QString());
    642645    }
     
    646649{
    647650    /* Prepare 'Encryption' tab: */
    648     m_pTabEncryption = new QWidget;
     651    m_pTabEncryption = new UIEditor(m_pTabWidget);
    649652    if (m_pTabEncryption)
    650653    {
     
    657660            if (m_pEditorDiskEncryptionSettings)
    658661            {
    659                 addEditor(m_pEditorDiskEncryptionSettings);
     662                m_pTabEncryption->addEditor(m_pEditorDiskEncryptionSettings);
    660663                pLayoutEncryption->addWidget(m_pEditorDiskEncryptionSettings);
    661664            }
     
    664667        }
    665668
     669        addEditor(m_pTabEncryption);
    666670        m_pTabWidget->addTab(m_pTabEncryption, QString());
    667671    }
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.h

    r98103 r101231  
    147147
    148148        /** Holds the 'Basic' tab instance. */
    149         QWidget               *m_pTabBasic;
     149        UIEditor              *m_pTabBasic;
    150150        /** Holds the name and system editor instance. */
    151151        UINameAndSystemEditor *m_pEditorNameAndSystem;
    152152
    153153        /** Holds the 'Advanced' tab instance. */
    154         QWidget                 *m_pTabAdvanced;
     154        UIEditor                *m_pTabAdvanced;
    155155        /** Holds the snapshot folder editor instance. */
    156156        UISnapshotFolderEditor  *m_pEditorSnapshotFolder;
     
    161161
    162162        /** Holds the 'Description' tab instance. */
    163         QWidget             *m_pTabDescription;
     163        UIEditor            *m_pTabDescription;
    164164        /** Holds the description editor instance. */
    165165        UIDescriptionEditor *m_pEditorDescription;
    166166
    167167        /** Holds the 'Encryption' tab instance. */
    168         QWidget                        *m_pTabEncryption;
     168        UIEditor                       *m_pTabEncryption;
    169169        /** Holds the cipher settings editor instance. */
    170170        UIDiskEncryptionSettingsEditor *m_pEditorDiskEncryptionSettings;
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp

    r101230 r101231  
    709709{
    710710    /* Prepare 'Motherboard' tab: */
    711     m_pTabMotherboard = new QWidget;
     711    m_pTabMotherboard = new UIEditor(m_pTabWidget);
    712712    if (m_pTabMotherboard)
    713713    {
     
    723723            if (m_pEditorBaseMemory)
    724724            {
    725                 addEditor(m_pEditorBaseMemory);
     725                m_pTabMotherboard->addEditor(m_pEditorBaseMemory);
    726726                pLayoutMotherboard->addWidget(m_pEditorBaseMemory, 0, 0, 1, 2);
    727727            }
     
    731731            if (m_pEditorBootOrder)
    732732            {
    733                 addEditor(m_pEditorBootOrder);
     733                m_pTabMotherboard->addEditor(m_pEditorBootOrder);
    734734                pLayoutMotherboard->addWidget(m_pEditorBootOrder, 1, 0);
    735735            }
     
    739739            if (m_pEditorChipset)
    740740            {
    741                 addEditor(m_pEditorChipset);
     741                m_pTabMotherboard->addEditor(m_pEditorChipset);
    742742                pLayoutMotherboard->addWidget(m_pEditorChipset, 2, 0);
    743743            }
     
    747747            if (m_pEditorTpm)
    748748            {
    749                 addEditor(m_pEditorTpm);
     749                m_pTabMotherboard->addEditor(m_pEditorTpm);
    750750                pLayoutMotherboard->addWidget(m_pEditorTpm, 3, 0);
    751751            }
     
    755755            if (m_pEditorPointingHID)
    756756            {
    757                 addEditor(m_pEditorPointingHID);
     757                m_pTabMotherboard->addEditor(m_pEditorPointingHID);
    758758                pLayoutMotherboard->addWidget(m_pEditorPointingHID, 4, 0);
    759759            }
     
    763763            if (m_pEditorMotherboardFeatures)
    764764            {
    765                 addEditor(m_pEditorMotherboardFeatures);
     765                m_pTabMotherboard->addEditor(m_pEditorMotherboardFeatures);
    766766                pLayoutMotherboard->addWidget(m_pEditorMotherboardFeatures, 5, 0);
    767767            }
    768768        }
    769769
     770        addEditor(m_pTabMotherboard);
    770771        m_pTabWidget->addTab(m_pTabMotherboard, QString());
    771772    }
     
    775776{
    776777    /* Prepare 'Processor' tab: */
    777     m_pTabProcessor = new QWidget;
     778    m_pTabProcessor = new UIEditor(m_pTabWidget);
    778779    if (m_pTabProcessor)
    779780    {
     
    789790            if (m_pEditorVCPU)
    790791            {
    791                 addEditor(m_pEditorVCPU);
     792                m_pTabProcessor->addEditor(m_pEditorVCPU);
    792793                pLayoutProcessor->addWidget(m_pEditorVCPU, 0, 0, 1, 2);
    793794            }
     
    797798            if (m_pEditorExecCap)
    798799            {
    799                 addEditor(m_pEditorExecCap);
     800                m_pTabProcessor->addEditor(m_pEditorExecCap);
    800801                pLayoutProcessor->addWidget(m_pEditorExecCap, 1, 0, 1, 2);
    801802            }
     
    805806            if (m_pEditorProcessorFeatures)
    806807            {
    807                 addEditor(m_pEditorProcessorFeatures);
     808                m_pTabProcessor->addEditor(m_pEditorProcessorFeatures);
    808809                pLayoutProcessor->addWidget(m_pEditorProcessorFeatures, 2, 0);
    809810            }
    810811        }
    811812
     813        addEditor(m_pTabProcessor);
    812814        m_pTabWidget->addTab(m_pTabProcessor, QString());
    813815    }
     
    817819{
    818820    /* Prepare 'Acceleration' tab: */
    819     m_pTabAcceleration = new QWidget;
     821    m_pTabAcceleration = new UIEditor(m_pTabWidget);
    820822    if (m_pTabAcceleration)
    821823    {
     
    831833            if (m_pEditorParavirtProvider)
    832834            {
    833                 addEditor(m_pEditorParavirtProvider);
     835                m_pTabAcceleration->addEditor(m_pEditorParavirtProvider);
    834836                pLayoutAcceleration->addWidget(m_pEditorParavirtProvider, 0, 0, 1, 2);
    835837            }
     
    839841            if (m_pEditorAccelerationFeatures)
    840842            {
    841                 addEditor(m_pEditorAccelerationFeatures);
     843                m_pTabAcceleration->addEditor(m_pEditorAccelerationFeatures);
    842844                pLayoutAcceleration->addWidget(m_pEditorAccelerationFeatures, 1, 0);
    843845            }
    844846
     847            addEditor(m_pTabAcceleration);
    845848            m_pTabWidget->addTab(m_pTabAcceleration, QString());
    846849        }
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.h

    r98103 r101231  
    154154
    155155        /** Holds the 'Motherboard' tab instance. */
    156         QWidget                     *m_pTabMotherboard;
     156        UIEditor                    *m_pTabMotherboard;
    157157        /** Holds the base memory editor instance. */
    158158        UIBaseMemoryEditor          *m_pEditorBaseMemory;
     
    169169
    170170        /** Holds the 'Processor' tab instance. */
    171         QWidget                   *m_pTabProcessor;
     171        UIEditor                  *m_pTabProcessor;
    172172        /** Holds the VCPU editor instance. */
    173173        UIVirtualCPUEditor        *m_pEditorVCPU;
     
    178178
    179179        /** Holds the 'Acceleration' tab instance. */
    180         QWidget                      *m_pTabAcceleration;
     180        UIEditor                     *m_pTabAcceleration;
    181181        /** Holds the paravirtualization provider editor instance. */
    182182        UIParavirtProviderEditor     *m_pEditorParavirtProvider;
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