VirtualBox

Ignore:
Timestamp:
Jul 8, 2014 12:50:15 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
94820
Message:

FE/Qt: 6660: Advanced extra-data management framework: Extend public API part, move some internal stuff to public.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/extradata
Files:
2 edited

Legend:

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

    r51928 r51929  
    2323#include "UIExtraDataManager.h"
    2424#include "UIMainEventListener.h"
     25#include "VBoxGlobalSettings.h"
    2526#include "VBoxGlobal.h"
    26 #include "VBoxGlobalSettings.h"
    2727#include "UIActionPool.h"
    2828#include "UIConverter.h"
     
    145145}
    146146
     147QString UIExtraDataManager::extraDataString(const QString &strKey, const QString &strID /* = GlobalID */)
     148{
     149    /* Hot-load machine extra-data map if necessary: */
     150    if (strID != GlobalID && !m_data.contains(strID))
     151        hotloadMachineExtraDataMap(strID);
     152
     153    /* Read-only access corresponding map: */
     154    const ExtraDataMap data = m_data.value(strID);
     155
     156    /* QString() if value was not set: */
     157    if (!data.contains(strKey))
     158        return QString();
     159
     160    /* Returns corresponding value: */
     161    return data[strKey];
     162}
     163
     164void UIExtraDataManager::setExtraDataString(const QString &strKey, const QString &strValue, const QString &strID /* = GlobalID */)
     165{
     166    /* Hot-load machine extra-data map if necessary: */
     167    if (strID != GlobalID && !m_data.contains(strID))
     168        hotloadMachineExtraDataMap(strID);
     169
     170    /* Access corresponding map: */
     171    ExtraDataMap &data = m_data[strID];
     172
     173    /* [Re]cache passed value: */
     174    data[strKey] = strValue;
     175
     176    /* Global extra-data: */
     177    if (strID == GlobalID)
     178    {
     179        /* Get global object: */
     180        CVirtualBox vbox = vboxGlobal().virtualBox();
     181        /* Update global extra-data: */
     182        vbox.SetExtraData(strKey, strValue);
     183    }
     184    /* Machine extra-data: */
     185    else
     186    {
     187        /* Search for corresponding machine: */
     188        CVirtualBox vbox = vboxGlobal().virtualBox();
     189        CMachine machine = vbox.FindMachine(strID);
     190        AssertReturnVoid(vbox.isOk() && !machine.isNull());
     191        /* Update machine extra-data: */
     192        machine.SetExtraData(strKey, strValue);
     193    }
     194}
     195
     196QStringList UIExtraDataManager::extraDataStringList(const QString &strKey, const QString &strID /* = GlobalID */)
     197{
     198    /* Hot-load machine extra-data map if necessary: */
     199    if (strID != GlobalID && !m_data.contains(strID))
     200        hotloadMachineExtraDataMap(strID);
     201
     202    /* Read-only access corresponding map: */
     203    const ExtraDataMap data = m_data.value(strID);
     204
     205    /* QStringList() if machine value was not set: */
     206    if (!data.contains(strKey))
     207        return QStringList();
     208
     209    /* Few old extra-data string-lists were separated with 'semicolon' symbol.
     210     * All new separated by 'comma'. We have to take that into account. */
     211    return data[strKey].split(QRegExp("[;,]"), QString::SkipEmptyParts);
     212}
     213
     214void UIExtraDataManager::setExtraDataStringList(const QString &strKey, const QStringList &strValue, const QString &strID /* = GlobalID */)
     215{
     216    /* Hot-load machine extra-data map if necessary: */
     217    if (strID != GlobalID && !m_data.contains(strID))
     218        hotloadMachineExtraDataMap(strID);
     219
     220    /* Access corresponding map: */
     221    ExtraDataMap &data = m_data[strID];
     222
     223    /* [Re]cache passed value: */
     224    data[strKey] = strValue.join(",");
     225
     226    /* Global extra-data: */
     227    if (strID == GlobalID)
     228    {
     229        /* Get global object: */
     230        CVirtualBox vbox = vboxGlobal().virtualBox();
     231        /* Update global extra-data: */
     232        vbox.SetExtraDataStringList(strKey, strValue);
     233    }
     234    /* Machine extra-data: */
     235    else
     236    {
     237        /* Search for corresponding machine: */
     238        CVirtualBox vbox = vboxGlobal().virtualBox();
     239        CMachine machine = vbox.FindMachine(strID);
     240        AssertReturnVoid(vbox.isOk() && !machine.isNull());
     241        /* Update machine extra-data: */
     242        machine.SetExtraDataStringList(strKey, strValue);
     243    }
     244}
     245
    147246UIExtraDataManager::UIExtraDataManager()
    148247    : m_pHandler(0)
     
    12621361}
    12631362
    1264 void UIExtraDataManager::cleanup()
    1265 {
    1266     /* Cleanup Main event-listener: */
    1267     cleanupMainEventListener();
    1268 }
    1269 
    12701363void UIExtraDataManager::cleanupMainEventListener()
    12711364{
     
    12731366    const CVirtualBox &vbox = vboxGlobal().virtualBox();
    12741367    vbox.GetEventSource().UnregisterListener(m_listener);
     1368}
     1369
     1370void UIExtraDataManager::cleanup()
     1371{
     1372    /* Cleanup Main event-listener: */
     1373    cleanupMainEventListener();
    12751374}
    12761375
     
    13521451}
    13531452
    1354 QString UIExtraDataManager::extraDataString(const QString &strKey, const QString &strID /* = GlobalID */)
    1355 {
    1356     /* Hot-load machine extra-data map if necessary: */
    1357     if (strID != GlobalID && !m_data.contains(strID))
    1358         hotloadMachineExtraDataMap(strID);
    1359 
    1360     /* Access corresponding map: */
    1361     ExtraDataMap &data = m_data[strID];
    1362 
    1363     /* QString() if value was not set: */
    1364     if (!data.contains(strKey))
    1365         return QString();
    1366 
    1367     /* Returns corresponding value: */
    1368     return data[strKey];
    1369 }
    1370 
    1371 void UIExtraDataManager::setExtraDataString(const QString &strKey, const QString &strValue, const QString &strID /* = GlobalID */)
    1372 {
    1373     /* Hot-load machine extra-data map if necessary: */
    1374     if (strID != GlobalID && !m_data.contains(strID))
    1375         hotloadMachineExtraDataMap(strID);
    1376 
    1377     /* Access corresponding map: */
    1378     ExtraDataMap &data = m_data[strID];
    1379 
    1380     /* [Re]cache passed value: */
    1381     data[strKey] = strValue;
    1382 
    1383     /* Global extra-data: */
    1384     if (strID == GlobalID)
    1385     {
    1386         /* Get global object: */
    1387         CVirtualBox vbox = vboxGlobal().virtualBox();
    1388         /* Update global extra-data: */
    1389         vbox.SetExtraData(strKey, strValue);
    1390     }
    1391     /* Machine extra-data: */
    1392     else
    1393     {
    1394         /* Search for corresponding machine: */
    1395         CVirtualBox vbox = vboxGlobal().virtualBox();
    1396         CMachine machine = vbox.FindMachine(strID);
    1397         AssertReturnVoid(vbox.isOk() && !machine.isNull());
    1398         /* Update machine extra-data: */
    1399         machine.SetExtraData(strKey, strValue);
    1400     }
    1401 }
    1402 
    1403 QStringList UIExtraDataManager::extraDataStringList(const QString &strKey, const QString &strID /* = GlobalID */)
    1404 {
    1405     /* Hot-load machine extra-data map if necessary: */
    1406     if (strID != GlobalID && !m_data.contains(strID))
    1407         hotloadMachineExtraDataMap(strID);
    1408 
    1409     /* Access corresponding map: */
    1410     ExtraDataMap &data = m_data[strID];
    1411 
    1412     /* QStringList() if machine value was not set: */
    1413     if (!data.contains(strKey))
    1414         return QStringList();
    1415 
    1416     /* Few old extra-data string-lists were separated with 'semicolon' symbol.
    1417      * All new separated by 'comma'. We have to take that into account. */
    1418     return data[strKey].split(QRegExp("[;,]"), QString::SkipEmptyParts);
    1419 }
    1420 
    1421 void UIExtraDataManager::setExtraDataStringList(const QString &strKey, const QStringList &strValue, const QString &strID /* = GlobalID */)
    1422 {
    1423     /* Hot-load machine extra-data map if necessary: */
    1424     if (strID != GlobalID && !m_data.contains(strID))
    1425         hotloadMachineExtraDataMap(strID);
    1426 
    1427     /* Access corresponding map: */
    1428     ExtraDataMap &data = m_data[strID];
    1429 
    1430     /* [Re]cache passed value: */
    1431     data[strKey] = strValue.join(",");
    1432 
    1433     /* Global extra-data: */
    1434     if (strID == GlobalID)
    1435     {
    1436         /* Get global object: */
    1437         CVirtualBox vbox = vboxGlobal().virtualBox();
    1438         /* Update global extra-data: */
    1439         vbox.SetExtraDataStringList(strKey, strValue);
    1440     }
    1441     /* Machine extra-data: */
    1442     else
    1443     {
    1444         /* Search for corresponding machine: */
    1445         CVirtualBox vbox = vboxGlobal().virtualBox();
    1446         CMachine machine = vbox.FindMachine(strID);
    1447         AssertReturnVoid(vbox.isOk() && !machine.isNull());
    1448         /* Update machine extra-data: */
    1449         machine.SetExtraDataStringList(strKey, strValue);
    1450     }
    1451 }
    1452 
    14531453/* static */
    14541454QString UIExtraDataManager::extraDataKeyPerScreen(const QString &strBase, ulong uScreenIndex, bool fSameRuleForPrimary /* = false */)
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h

    r51928 r51929  
    7575    /** Static Extra-data Manager destructor. */
    7676    static void destroy();
     77
     78    /** @name General
     79      * @{ */
     80        /** Returns whether Extra-data Manager cached the map with passed @a strID. */
     81        bool contains(const QString &strID) const { return m_data.contains(strID); }
     82        /** Returns read-only extra-data map for passed @a strID. */
     83        const ExtraDataMap map(const QString &strID) const { return m_data.value(strID); }
     84
     85        /** Returns extra-data value corresponding to passed @a strKey as QString.
     86          * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
     87        QString extraDataString(const QString &strKey, const QString &strID = GlobalID);
     88        /** Defines extra-data value corresponding to passed @a strKey as strValue.
     89          * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
     90        void setExtraDataString(const QString &strKey, const QString &strValue, const QString &strID = GlobalID);
     91
     92        /** Returns extra-data value corresponding to passed @a strKey as QStringList.
     93          * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
     94        QStringList extraDataStringList(const QString &strKey, const QString &strID = GlobalID);
     95        /** Defines extra-data value corresponding to passed @a strKey as strValue.
     96          * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
     97        void setExtraDataStringList(const QString &strKey, const QStringList &strValue, const QString &strID = GlobalID);
     98    /** @} */
    7799
    78100    /** @name Messaging
     
    397419    void prepareMainEventListener();
    398420
    399     /** Cleanup Extra-data Manager. */
    400     void cleanup();
    401421    /** Cleanup Main event-listener. */
    402422    void cleanupMainEventListener();
     
    405425    // /** Cleanup extra-data map. */
    406426    // void cleanupExtraDataMap();
     427    /** Cleanup Extra-data Manager. */
     428    void cleanup();
    407429
    408430    /** Hot-load machine extra-data map. */
     
    421443    QString toFeatureRestricted(bool fRestricted);
    422444
    423     /** Returns extra-data value corresponding to passed @a strKey as QString.
    424       * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
    425     QString extraDataString(const QString &strKey, const QString &strID = GlobalID);
    426     /** Defines extra-data value corresponding to passed @a strKey as strValue.
    427       * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
    428     void setExtraDataString(const QString &strKey, const QString &strValue, const QString &strID = GlobalID);
    429 
    430     /** Returns extra-data value corresponding to passed @a strKey as QStringList.
    431       * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
    432     QStringList extraDataStringList(const QString &strKey, const QString &strID = GlobalID);
    433     /** Defines extra-data value corresponding to passed @a strKey as strValue.
    434       * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
    435     void setExtraDataStringList(const QString &strKey, const QStringList &strValue, const QString &strID = GlobalID);
    436 
    437445    /** Returns string consisting of @a strBase appended with @a uScreenIndex for the *non-primary* screen-index.
    438446      * If @a fSameRuleForPrimary is 'true' same rule will be used for *primary* screen-index. Used for storing per-screen extra-data. */
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