VirtualBox

Changeset 73134 in vbox


Ignore:
Timestamp:
Jul 14, 2018 8:23:03 PM (6 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9012 Implementing a widget for video capture option ac_profile

Location:
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp

    r73130 r73134  
    193193    }
    194194
    195     /** Defines whether passed Video Capture Options @a enmOptions is @a flags (enabled). */
    196     static QString setVideoCaptureOptionEnabled(const QString &strOptions,
     195    /** Searches for ac_profile and return 1 for "low", 2 for "med", and 3 for "high". Returns 2
     196        if ac_profile is missing */
     197    static int getAudioQualityFromOptions(const QString &strOptions)
     198    {
     199        QList<VideoCaptureOption> aKeys;
     200        QStringList aValues;
     201        parseVideoCaptureOptions(strOptions, aKeys, aValues);
     202        int iIndex = aKeys.indexOf(VideoCaptureOption_AC_Profile);
     203        if (iIndex == -1)
     204            return 2;
     205        if (aValues.value(iIndex).compare("low", Qt::CaseInsensitive) == 0)
     206            return 1;
     207        if (aValues.value(iIndex).compare("high", Qt::CaseInsensitive) == 0)
     208            return 3;
     209        return 2;
     210    }
     211
     212    /** Sets the video capture options for @a enmOptions to @a values. */
     213    static QString setVideoCaptureOptions(const QString &strOptions,
    197214                                                const QVector<VideoCaptureOption> &enmOptions,
    198215                                                const QStringList &values)
     
    421438    m_pScrollerVideoCaptureScreens->setValue(oldDisplayData.m_screens);
    422439
     440    /* Load data from old 'Video Capture Option': */
    423441    bool fAudioCapture = UIDataSettingsMachineDisplay::isVideoCaptureOptionEnabled(oldDisplayData.m_strVideoCaptureOptions,
    424442                                                                                   UIDataSettingsMachineDisplay::VideoCaptureOption_AC);
     
    431449    else if (fAudioCapture && !fVideoCapture)
    432450        m_pComboBoxCaptureMode->setCurrentIndex(static_cast<int>(UIDataSettingsMachineDisplay::CaptureMode_AudioOnly));
     451    m_pSliderAudioCaptureQuality->setValue(UIDataSettingsMachineDisplay::getAudioQualityFromOptions(oldDisplayData.m_strVideoCaptureOptions));
    433452
    434453    /* Polish page finally: */
     
    481500    optionValues.push_back((m_pComboBoxCaptureMode->currentIndex() == static_cast<int>(UIDataSettingsMachineDisplay::CaptureMode_VideoAudio) ||
    482501                            m_pComboBoxCaptureMode->currentIndex() == static_cast<int>(UIDataSettingsMachineDisplay::CaptureMode_AudioOnly)) ? "true" : "false");
    483     optionValues.push_back("low");
     502    if (m_pSliderAudioCaptureQuality->value() == 1)
     503        optionValues.push_back("low");
     504    else if (m_pSliderAudioCaptureQuality->value() == 2)
     505        optionValues.push_back("med");
     506    else
     507        optionValues.push_back("high");
    484508
    485509    QVector<UIDataSettingsMachineDisplay::VideoCaptureOption> videoCaptureOptionVector;
     
    488512    videoCaptureOptionVector.push_back(UIDataSettingsMachineDisplay::VideoCaptureOption_AC_Profile);
    489513
    490     newDisplayData.m_strVideoCaptureOptions = UIDataSettingsMachineDisplay::setVideoCaptureOptionEnabled(m_pCache->base().m_strVideoCaptureOptions,
    491                                                                                                          videoCaptureOptionVector,
    492                                                                                                          optionValues);
     514    newDisplayData.m_strVideoCaptureOptions = UIDataSettingsMachineDisplay::setVideoCaptureOptions(m_pCache->base().m_strVideoCaptureOptions,
     515                                                                                                   videoCaptureOptionVector,
     516                                                                                                   optionValues);
    493517
    494518    /* Cache new display data: */
     
    692716    m_pLabelVideoCaptureQualityMed->setText(tr("medium", "quality"));
    693717    m_pLabelVideoCaptureQualityMax->setText(tr("high", "quality"));
    694 
     718    m_pLabelAudioCaptureQualityMin->setText(tr("low", "quality"));
     719    m_pLabelAudioCaptureQualityMed->setText(tr("medium", "quality"));
     720    m_pLabelAudioCaptureQualityMax->setText(tr("high", "quality"));
    695721    updateVideoCaptureFileSizeHint();
    696722}
     
    923949        /* Prepare 'Video Capture' tab: */
    924950        prepareTabVideoCapture();
    925         prepareModeCombo();
    926951        /* Prepare connections: */
    927952        prepareConnections();
     
    10481073    /* Tab and it's layout created in the .ui file. */
    10491074    {
     1075        /* Capture mode selection combo box. */
     1076        AssertPtrReturnVoid(m_pComboBoxCaptureMode);
     1077        {
     1078            m_pComboBoxCaptureMode->insertItem(UIDataSettingsMachineDisplay::CaptureMode_VideoAudio, "Video/Audio");
     1079            m_pComboBoxCaptureMode->insertItem(UIDataSettingsMachineDisplay::CaptureMode_VideoOnly, "Video Only");
     1080            m_pComboBoxCaptureMode->insertItem(UIDataSettingsMachineDisplay::CaptureMode_AudioOnly, "Audio Only");
     1081        }
     1082
    10501083        /* File-path selector created in the .ui file. */
    10511084        AssertPtrReturnVoid(m_pEditorVideoCapturePath);
     
    11511184            m_pEditorVideoCaptureBitRate->setMaximum(VIDEO_CAPTURE_BIT_RATE_MAX);
    11521185        }
    1153     }
    1154 }
    1155 
    1156 void UIMachineSettingsDisplay::prepareModeCombo()
    1157 {
    1158     if (!m_pComboBoxCaptureMode)
    1159         return;
    1160     m_pComboBoxCaptureMode->insertItem(UIDataSettingsMachineDisplay::CaptureMode_VideoAudio, "Video/Audio");
    1161     m_pComboBoxCaptureMode->insertItem(UIDataSettingsMachineDisplay::CaptureMode_VideoOnly, "Video Only");
    1162     m_pComboBoxCaptureMode->insertItem(UIDataSettingsMachineDisplay::CaptureMode_AudioOnly, "Audio Only");
     1186
     1187         /* Frame-rate slider created in the .ui file. */
     1188        AssertPtrReturnVoid(m_pSliderAudioCaptureQuality);
     1189        {
     1190            /* Configure slider: */
     1191            m_pSliderAudioCaptureQuality->setMinimum(1);
     1192            m_pSliderAudioCaptureQuality->setMaximum(3);
     1193            m_pSliderAudioCaptureQuality->setPageStep(1);
     1194            m_pSliderAudioCaptureQuality->setSingleStep(1);
     1195            m_pSliderAudioCaptureQuality->setTickInterval(1);
     1196            m_pSliderAudioCaptureQuality->setSnappingEnabled(true);
     1197            m_pSliderAudioCaptureQuality->setOptimalHint(1, 2);
     1198            m_pSliderAudioCaptureQuality->setWarningHint(2, 3);
     1199        }
     1200    }
    11631201}
    11641202
     
    16111649            if (fSuccess && newDisplayData.m_strVideoCaptureOptions != oldDisplayData.m_strVideoCaptureOptions)
    16121650            {
     1651                printf("%s\n", qPrintable(newDisplayData.m_strVideoCaptureOptions));
    16131652                m_machine.SetVideoCaptureOptions(newDisplayData.m_strVideoCaptureOptions);
    16141653                fSuccess = m_machine.isOk();
     
    16511690    m_pEditorVideoCaptureFrameRate->setEnabled(fIsVideoCaptureOptionsEnabled && fVideoCapture);
    16521691
    1653     m_pLabelVideoCaptureRate->setEnabled(fIsVideoCaptureOptionsEnabled);
    1654     m_pContainerSliderVideoCaptureQuality->setEnabled(fIsVideoCaptureOptionsEnabled);
     1692    m_pLabelVideoCaptureRate->setEnabled(fIsVideoCaptureOptionsEnabled && fVideoCapture);
     1693    m_pContainerSliderVideoCaptureQuality->setEnabled(fIsVideoCaptureOptionsEnabled && fVideoCapture);
    16551694    m_pEditorVideoCaptureBitRate->setEnabled(fIsVideoCaptureOptionsEnabled && fVideoCapture);
    16561695    m_pScrollerVideoCaptureScreens->setEnabled(fIsVideoCaptureScreenOptionEnabled && fVideoCapture);
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h

    r73092 r73134  
    126126    /** Prepares 'Video Capture' tab. */
    127127    void prepareTabVideoCapture();
    128     /** Populates Capture Mode combobox with related items. */
    129     void prepareModeCombo();
    130128    /** Prepares connections. */
    131129    void prepareConnections();
     
    152150    /** Calculates Video Capture quality for passed @a iFrameWidth, @a iFrameHeight, @a iFrameRate and @a iBitRate. */
    153151    static int calculateQuality(int iFrameWidth, int iFrameHeight, int iFrameRate, int iBitRate);
    154 
    155152    /** Saves existing display data from the cache. */
    156153    bool saveDisplayData();
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.ui

    r73092 r73134  
    664664              </widget>
    665665             </item>
    666              <item row="7" column="1">
     666              <item row="7" column="0">
     667              <widget class="QLabel" name="m_pAudioCaptureQualityLabel">
     668               <property name="text">
     669                <string>&amp;Audio Quality:</string>
     670               </property>
     671               <property name="alignment">
     672                <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     673               </property>
     674               <property name="buddy">
     675                <cstring>m_pSliderAudioCaptureQuality</cstring>
     676               </property>
     677              </widget>
     678             </item>
     679             <item row="7" column="1" rowspan="2">
     680              <widget class="QWidget" name="m_pContainerSliderAudioCaptureQuality">
     681               <layout class="QGridLayout" name="m_pContainerLayoutSliderAudioCaptureQuality">
     682                <property name="spacing">
     683                 <number>0</number>
     684                </property>
     685                <item row="0" column="0" colspan="5">
     686                 <widget class="QIAdvancedSlider" name="m_pSliderAudioCaptureQuality">
     687                  <property name="whatsThis">
     688                   <string>Controls the &lt;b>quality&lt;/b>. Increasing this value will make the video look better at the cost of an increased file size.</string>
     689                  </property>
     690                  <property name="orientation">
     691                   <enum>Qt::Horizontal</enum>
     692                  </property>
     693                 </widget>
     694                </item>
     695                <item row="1" column="0">
     696                 <widget class="QLabel" name="m_pLabelAudioCaptureQualityMin"/>
     697                </item>
     698                <item row="1" column="1">
     699                 <spacer name="m_pStretchAudioCaptureQualityLeft">
     700                  <property name="orientation">
     701                   <enum>Qt::Horizontal</enum>
     702                  </property>
     703                  <property name="sizeHint" stdset="0">
     704                   <size>
     705                    <width>0</width>
     706                    <height>0</height>
     707                   </size>
     708                  </property>
     709                 </spacer>
     710                </item>
     711                <item row="1" column="2">
     712                 <widget class="QLabel" name="m_pLabelAudioCaptureQualityMed"/>
     713                </item>
     714                <item row="1" column="3">
     715                 <spacer name="m_pStretchAudioCaptureQualityRight">
     716                  <property name="orientation">
     717                   <enum>Qt::Horizontal</enum>
     718                  </property>
     719                  <property name="sizeHint" stdset="0">
     720                   <size>
     721                    <width>0</width>
     722                    <height>0</height>
     723                   </size>
     724                  </property>
     725                 </spacer>
     726                </item>
     727                <item row="1" column="4">
     728                 <widget class="QLabel" name="m_pLabelAudioCaptureQualityMax"/>
     729                </item>
     730               </layout>
     731              </widget>
     732             </item>
     733             <item row="9" column="1">
    667734              <widget class="QLabel" name="m_pLabelVideoCaptureSizeHint"/>
    668735             </item>
    669              <item row="8" column="0">
     736             <item row="10" column="0">
    670737              <widget class="QLabel" name="m_pLabelVideoCaptureScreens">
    671738               <property name="text">
     
    680747              </widget>
    681748             </item>
    682              <item row="8" column="1" colspan="3">
     749             <item row="10" column="1" colspan="3">
    683750              <widget class="UIFilmContainer" name="m_pScrollerVideoCaptureScreens">
    684751               <property name="whatsThis">
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