VirtualBox

Changeset 54794 in vbox for trunk/src


Ignore:
Timestamp:
Mar 16, 2015 5:16:38 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
98989
Message:

FE/Qt: 6660: Advanced extra-data management tool: When saving extra-data changes - choose proper kind of machine depending on machine/session states.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp

    r54463 r54794  
    4646# include "UIActionPool.h"
    4747# include "UIConverter.h"
     48# include "UISettingsDefs.h"
     49# include "UIMessageCenter.h"
    4850# ifdef DEBUG
    4951#  include "VBoxUtils.h"
    50 #  include "UIMessageCenter.h"
    5152#  include "UIVirtualBoxEventHandler.h"
    5253#  include "UIIconPool.h"
     
    7677/* Namespaces: */
    7778using namespace UIExtraDataDefs;
     79using namespace UISettingsDefs;
    7880
    7981
     
    19131915        /* Update global extra-data: */
    19141916        vbox.SetExtraData(strKey, strValue);
     1917        if (!vbox.isOk())
     1918            msgCenter().cannotSetExtraData(vbox, strKey, strValue);
    19151919    }
    19161920    /* Machine extra-data: */
     
    19191923        /* Search for corresponding machine: */
    19201924        CVirtualBox vbox = vboxGlobal().virtualBox();
    1921         CMachine machine = vbox.FindMachine(strID);
     1925        const CMachine machine = vbox.FindMachine(strID);
    19221926        AssertReturnVoid(vbox.isOk() && !machine.isNull());
     1927        /* Check the configuration access-level: */
     1928        const KMachineState machineState = machine.GetState();
     1929        const KSessionState sessionState = machine.GetSessionState();
     1930        const ConfigurationAccessLevel cLevel = configurationAccessLevel(sessionState, machineState);
     1931        /* Prepare machine session: */
     1932        CSession session;
     1933        if (cLevel == ConfigurationAccessLevel_Full)
     1934            session = vboxGlobal().openSession(strID);
     1935        else
     1936            session = vboxGlobal().openExistingSession(strID);
     1937        AssertReturnVoid(!session.isNull());
     1938        /* Get machine from that session: */
     1939        CMachine sessionMachine = session.GetMachine();
    19231940        /* Update machine extra-data: */
    1924         machine.SetExtraData(strKey, strValue);
     1941        sessionMachine.SetExtraData(strKey, strValue);
     1942        if (!sessionMachine.isOk())
     1943            msgCenter().cannotSetExtraData(sessionMachine, strKey, strValue);
     1944        session.UnlockMachine();
    19251945    }
    19261946}
     
    19441964}
    19451965
    1946 void UIExtraDataManager::setExtraDataStringList(const QString &strKey, const QStringList &strValue, const QString &strID /* = GlobalID */)
     1966void UIExtraDataManager::setExtraDataStringList(const QString &strKey, const QStringList &value, const QString &strID /* = GlobalID */)
    19471967{
    19481968    /* Make sure VBoxSVC is available: */
     
    19581978
    19591979    /* [Re]cache passed value: */
    1960     data[strKey] = strValue.join(",");
     1980    data[strKey] = value.join(",");
    19611981
    19621982    /* Global extra-data: */
     
    19661986        CVirtualBox vbox = vboxGlobal().virtualBox();
    19671987        /* Update global extra-data: */
    1968         vbox.SetExtraDataStringList(strKey, strValue);
     1988        vbox.SetExtraDataStringList(strKey, value);
     1989        if (!vbox.isOk())
     1990            msgCenter().cannotSetExtraData(vbox, strKey, value.join(","));
    19691991    }
    19701992    /* Machine extra-data: */
     
    19731995        /* Search for corresponding machine: */
    19741996        CVirtualBox vbox = vboxGlobal().virtualBox();
    1975         CMachine machine = vbox.FindMachine(strID);
     1997        const CMachine machine = vbox.FindMachine(strID);
    19761998        AssertReturnVoid(vbox.isOk() && !machine.isNull());
     1999        /* Check the configuration access-level: */
     2000        const KMachineState machineState = machine.GetState();
     2001        const KSessionState sessionState = machine.GetSessionState();
     2002        const ConfigurationAccessLevel cLevel = configurationAccessLevel(sessionState, machineState);
     2003        /* Prepare machine session: */
     2004        CSession session;
     2005        if (cLevel == ConfigurationAccessLevel_Full)
     2006            session = vboxGlobal().openSession(strID);
     2007        else
     2008            session = vboxGlobal().openExistingSession(strID);
     2009        AssertReturnVoid(!session.isNull());
     2010        /* Get machine from that session: */
     2011        CMachine sessionMachine = session.GetMachine();
    19772012        /* Update machine extra-data: */
    1978         machine.SetExtraDataStringList(strKey, strValue);
     2013        sessionMachine.SetExtraDataStringList(strKey, value);
     2014        if (!sessionMachine.isOk())
     2015            msgCenter().cannotSetExtraData(sessionMachine, strKey, value.join(","));
     2016        session.UnlockMachine();
    19792017    }
    19802018}
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h

    r54463 r54794  
    124124          * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
    125125        QStringList extraDataStringList(const QString &strKey, const QString &strID = GlobalID);
    126         /** Defines extra-data value corresponding to passed @a strKey as strValue.
     126        /** Defines extra-data value corresponding to passed @a strKey as value.
    127127          * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
    128         void setExtraDataStringList(const QString &strKey, const QStringList &strValue, const QString &strID = GlobalID);
     128        void setExtraDataStringList(const QString &strKey, const QStringList &value, const QString &strID = GlobalID);
    129129    /** @} */
    130130
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp

    r54731 r54794  
    514514             "Make sure your desktop environment can properly handle URLs of this type.")
    515515             .arg(strUrl));
     516}
     517
     518void UIMessageCenter::cannotSetExtraData(const CVirtualBox &vbox, const QString &strKey, const QString &strValue)
     519{
     520    error(0, MessageType_Error,
     521          tr("Failed to set the global VirtualBox extra data for key <i>%1</i> to value <i>{%2}</i>.")
     522             .arg(strKey, strValue),
     523          formatErrorInfo(vbox));
     524}
     525
     526void UIMessageCenter::cannotSetExtraData(const CMachine &machine, const QString &strKey, const QString &strValue)
     527{
     528    error(0, MessageType_Error,
     529          tr("Failed to set the extra data for key <i>%1</i> of machine <i>%2</i> to value <i>{%3}</i>.")
     530             .arg(strKey, CMachine(machine).GetName(), strValue),
     531          formatErrorInfo(machine));
    516532}
    517533
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h

    r54731 r54794  
    171171    void cannotGetMediaAccessibility(const UIMedium &medium) const;
    172172    void cannotOpenURL(const QString &strUrl) const;
     173    void cannotSetExtraData(const CVirtualBox &vbox, const QString &strKey, const QString &strValue);
     174    void cannotSetExtraData(const CMachine &machine, const QString &strKey, const QString &strValue);
    173175
    174176    /* API: Selector warnings: */
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