VirtualBox

Changeset 66475 in vbox


Ignore:
Timestamp:
Apr 7, 2017 2:38:57 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
114464
Message:

FE/Qt: Machine settings: Audio page: Error handling (settings save).

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp

    r66398 r66475  
    5757
    5858/* COM includes: */
     59# include "CAudioAdapter.h"
    5960# include "CConsole.h"
    6061# include "CMachine.h"
     
    11501151                          QString() /* cancel button text */,
    11511152                          false /* ok button by default? */);
     1153}
     1154
     1155void UIMessageCenter::cannotSaveAudioSettings(const CMachine &comMachine, QWidget *pParent /* = 0 */)
     1156{
     1157    error(pParent, MessageType_Error,
     1158          tr("Cannot save audio settings."),
     1159          formatErrorInfo(comMachine));
     1160}
     1161
     1162void UIMessageCenter::cannotSaveAudioAdapterSettings(const CAudioAdapter &comAdapter, QWidget *pParent /* = 0 */)
     1163{
     1164    error(pParent, MessageType_Error,
     1165          tr("Cannot save audio adapter settings."),
     1166          formatErrorInfo(comAdapter));
    11521167}
    11531168
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h

    r66398 r66475  
    239239    int confirmFloppyAttachmentCreation(const QString &strControllerName, QWidget *pParent = 0) const;
    240240    int confirmRemovingOfLastDVDDevice(QWidget *pParent = 0) const;
     241    void cannotSaveAudioSettings(const CMachine &comMachine, QWidget *pParent = 0);
     242    void cannotSaveAudioAdapterSettings(const CAudioAdapter &comAdapter, QWidget *pParent = 0);
    241243    void cannotAttachDevice(const CMachine &machine, UIMediumType type, const QString &strLocation, const StorageSlot &storageSlot, QWidget *pParent = 0);
    242244    bool warnAboutIncorrectPort(QWidget *pParent = 0) const;
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsAudio.cpp

    r66460 r66475  
    2323# include "UIConverter.h"
    2424# include "UIMachineSettingsAudio.h"
     25# include "UIMessageCenter.h"
    2526
    2627/* COM includes: */
     
    143144    UISettingsPageMachine::fetchData(data);
    144145
    145     /* Make sure machine is offline & audio data was changed: */
    146     if (isMachineOffline() && m_pCache->wasChanged())
    147     {
    148         /* Check whether adapter still valid: */
    149         CAudioAdapter comAdapter = m_machine.GetAudioAdapter();
    150         if (!comAdapter.isNull())
    151         {
    152             /* Get old audio data from the cache: */
    153             const UIDataSettingsMachineAudio &oldAudioData = m_pCache->base();
    154             /* Get new audio data from the cache: */
    155             const UIDataSettingsMachineAudio &newAudioData = m_pCache->data();
    156 
    157             /* Store whether audio is enabled: */
    158             if (newAudioData.m_fAudioEnabled != oldAudioData.m_fAudioEnabled)
    159                 comAdapter.SetEnabled(newAudioData.m_fAudioEnabled);
    160             /* Store audio driver type: */
    161             if (newAudioData.m_audioDriverType != oldAudioData.m_audioDriverType)
    162                 comAdapter.SetAudioDriver(newAudioData.m_audioDriverType);
    163             /* Store audio controller type: */
    164             if (newAudioData.m_audioControllerType != oldAudioData.m_audioControllerType)
    165                 comAdapter.SetAudioController(newAudioData.m_audioControllerType);
    166         }
    167     }
     146    /* Update audio data and failing state: */
     147    setFailed(!saveAudioData());
    168148
    169149    /* Upload machine to data: */
     
    275255}
    276256
     257bool UIMachineSettingsAudio::saveAudioData()
     258{
     259    /* Prepare result: */
     260    bool fSuccess = true;
     261    /* Save audio settings from the cache: */
     262    if (fSuccess && isMachineInValidMode() && m_pCache->wasChanged())
     263    {
     264        /* Get old audio data from the cache: */
     265        const UIDataSettingsMachineAudio &oldAudioData = m_pCache->base();
     266        /* Get new audio data from the cache: */
     267        const UIDataSettingsMachineAudio &newAudioData = m_pCache->data();
     268
     269        /* Get audio adapter for further activities: */
     270        CAudioAdapter comAdapter = m_machine.GetAudioAdapter();
     271        fSuccess = m_machine.isOk() && comAdapter.isNotNull();
     272        /* Show error message if necessary: */
     273        if (!fSuccess)
     274            msgCenter().cannotSaveAudioSettings(m_machine, this);
     275
     276        /* Save whether audio is enabled: */
     277        if (fSuccess && isMachineOffline() && newAudioData.m_fAudioEnabled != oldAudioData.m_fAudioEnabled)
     278        {
     279            comAdapter.SetEnabled(newAudioData.m_fAudioEnabled);
     280            fSuccess = comAdapter.isOk();
     281        }
     282        /* Save audio driver type: */
     283        if (fSuccess && isMachineOffline() && newAudioData.m_audioDriverType != oldAudioData.m_audioDriverType)
     284        {
     285            comAdapter.SetAudioDriver(newAudioData.m_audioDriverType);
     286            fSuccess = comAdapter.isOk();
     287        }
     288        /* Save audio controller type: */
     289        if (fSuccess && isMachineOffline() && newAudioData.m_audioControllerType != oldAudioData.m_audioControllerType)
     290        {
     291            comAdapter.SetAudioController(newAudioData.m_audioControllerType);
     292            fSuccess = comAdapter.isOk();
     293        }
     294        /* Show error message if necessary: */
     295        if (!fSuccess)
     296            msgCenter().cannotSaveAudioAdapterSettings(comAdapter, this);
     297    }
     298    /* Return result: */
     299    return fSuccess;
     300}
     301
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsAudio.h

    r66345 r66475  
    7373    void cleanup();
    7474
     75    /** Saves existing audio data from the cache. */
     76    bool saveAudioData();
     77
    7578    /** Holds the page data cache instance. */
    7679    UISettingsCacheMachineAudio *m_pCache;
Note: See TracChangeset for help on using the changeset viewer.

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