VirtualBox

Changeset 4201 in vbox


Ignore:
Timestamp:
Aug 17, 2007 9:52:37 AM (17 years ago)
Author:
vboxsync
Message:

FE/Qt: Refined indicator tooltips in the console window (+ more useful info for the shared folders indicator).

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/include/VBoxConsoleView.h

    r4146 r4201  
    9898    void additionsStateChanged (const QString &, bool, bool);
    9999    void mediaChanged (VBoxDefs::DiskType aType);
     100    void sharedFoldersChanged();
    100101
    101102protected:
  • trunk/src/VBox/Frontends/VirtualBox/include/VBoxConsoleWnd.h

    r4146 r4201  
    112112        USBStuff                    = 0x80,
    113113        VRDPStuff                   = 0x100,
    114         AllStuff                    = 0xFF,
     114        SharedFolderStuff           = 0x200,
     115        AllStuff                    = 0xFFFF,
    115116    };
    116117
     
    167168    void updateDeviceLights();
    168169    void updateMachineState (CEnums::MachineState state);
    169 
    170170    void updateMouseState (int state);
    171 
    172171    void updateAdditionsState (const QString&, bool, bool);
    173 
    174172    void updateMediaState (VBoxDefs::DiskType aType);
     173    void updateSharedFoldersState();
    175174
    176175    void tryClose();
  • trunk/src/VBox/Frontends/VirtualBox/include/VBoxDefs.h

    r4146 r4201  
    135135        SnapshotEventType,
    136136        USBDeviceStateChangeEventType,
     137        SharedFolderChangeEventType,
    137138        RuntimeErrorEventType,
    138139        ModifierKeyChangeEventType,
  • trunk/src/VBox/Frontends/VirtualBox/include/VBoxGlobal.h

    r4071 r4201  
    385385
    386386    /* public static stuff */
     387
     388    static bool isDOSType (const QString &aOSTypeId);
    387389
    388390    static void adoptLabelPixmap (QLabel *);
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp

    r4146 r4201  
    468468    STDMETHOD(OnSharedFolderChange) (Scope_T aScope)
    469469    {
     470        QApplication::postEvent (mView,
     471                                 new QEvent ((QEvent::Type)
     472                                             VBoxDefs::SharedFolderChangeEventType));
    470473        return S_OK;
    471474    }
     
    11501153                /// @todo update menu entries
    11511154
     1155                return true;
     1156            }
     1157
     1158            case VBoxDefs::SharedFolderChangeEventType:
     1159            {
     1160                emit sharedFoldersChanged();
    11521161                return true;
    11531162            }
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp

    r4175 r4201  
    7373    void maybeTip (const QPoint &/* aPoint */)
    7474    {
    75         QString toolTip = VBoxConsoleWnd::tr (
    76             "<qt>Indicates&nbsp;the&nbsp;activity&nbsp;of&nbsp;"
    77             "attached&nbsp;USB&nbsp;devices<br>"
     75        QString ttip = VBoxConsoleWnd::tr (
     76            "<qt><nobr>Indicates the activity of "
     77            "attached USB devices:</nobr>"
    7878            "%1</qt>",
    7979            "USB device indicator");
    8080
    81         QString devices;
     81        QString info;
    8282
    8383        if (mUSBEnabled)
     
    8787            {
    8888                CUSBDevice usb = en.GetNext();
    89                 devices += QString ("[<b><nobr>%1</nobr></b>]<br>")
     89                info += QString ("<br><b><nobr>%1</nobr></b>")
    9090                                    .arg (vboxGlobal().details (usb));
    9191            }
    92             if (devices.isNull())
    93                 devices = VBoxConsoleWnd::tr ("<nobr>[<b>not attached</b>]</nobr>",
    94                                               "USB device indicator");
     92            if (info.isNull())
     93                info = VBoxConsoleWnd::tr ("<br><nobr><b>No USB devices attached</b></nobr>",
     94                                           "USB device indicator");
    9595        }
    9696        else
    97             devices = VBoxConsoleWnd::tr ("<nobr>[<b>USB Controller is disabled</b>]</nobr>",
    98                                           "USB device indicator");
    99 
    100         tip (parentWidget()->rect(), toolTip.arg (devices));
     97            info = VBoxConsoleWnd::tr ("<br><nobr><b>USB Controller is disabled</b></nobr>",
     98                                       "USB device indicator");
     99
     100        tip (parentWidget()->rect(), ttip.arg (info));
    101101    }
    102102
     
    125125    void maybeTip (const QPoint &/* aPoint */)
    126126    {
    127         QString toolTip = VBoxConsoleWnd::tr (
    128             "<qt>Indicates&nbsp;the&nbsp;activity&nbsp;of&nbsp;the&nbsp;network&nbsp;interfaces",
    129             "Network adapters indicator"
    130         );
    131 
    132         QString devices;
     127        QString ttip = VBoxConsoleWnd::tr (
     128            "<qt><nobr>Indicates the activity of the network interfaces:</nobr>"
     129            "%1</qt>",
     130            "Network adapters indicator");
     131
     132        QString info;
    133133
    134134        ulong count = vboxGlobal().virtualBox().GetSystemProperties().GetNetworkAdapterCount();
     
    137137            CNetworkAdapter adapter = mMachine.GetNetworkAdapter (slot);
    138138            if (adapter.GetEnabled())
    139                 devices += VBoxConsoleWnd::tr ("<br><nobr><b>Adapter %1 (%2)</b>: cable %3</nobr>",
    140                                                "Network adapters indicator")
     139                info += VBoxConsoleWnd::tr ("<br><nobr><b>Adapter %1 (%2)</b>: cable %3</nobr>",
     140                                            "Network adapters indicator")
    141141                    .arg (slot)
    142142                    .arg (vboxGlobal().toString (adapter.GetAttachmentType()))
     
    146146        }
    147147
    148         if (devices.isNull())
    149             devices = VBoxConsoleWnd::tr ("<br><nobr><b>All network adapters are disabled</b></nobr>",
    150                                           "Network adapters indicator");
    151 
    152         tip (parentWidget()->rect(), toolTip + devices);
     148        if (info.isNull())
     149            info = VBoxConsoleWnd::tr ("<br><nobr><b>All network adapters are disabled</b></nobr>",
     150                                       "Network adapters indicator");
     151
     152        tip (parentWidget()->rect(), ttip.arg (info));
    153153    }
    154154
     
    858858    connect (console, SIGNAL (mediaChanged (VBoxDefs::DiskType)),
    859859             this, SLOT (updateMediaState (VBoxDefs::DiskType)));
     860    connect (console, SIGNAL (sharedFoldersChanged()),
     861             this, SLOT (updateSharedFoldersState()));
    860862
    861863#ifdef Q_WS_MAC
     
    15431545    QToolTip::add (hostkey_state,
    15441546        tr ("Indicates whether the keyboard is captured by the guest OS "
    1545             "(<img src=hostkey_captured_16px.png/>) or not (<img src=hostkey_16px.png/>)"));
     1547            "(<img src=hostkey_captured_16px.png/>) or not (<img src=hostkey_16px.png/>)."));
    15461548    QToolTip::add (hostkey_name,
    15471549        tr ("Shows the currently assigned Host key.<br>"
    15481550            "This key, when pressed alone, toggles the the keyboard and mouse "
    15491551            "capture state. It can also be used in combination with other keys "
    1550             "to quickly perform actions from the main menu." ));
    1551     QToolTip::add (sf_light,
    1552 /// @todo add later, when activity is actually reported
    1553 //        tr ("Indicates the activity of shared folders."));
    1554         tr ("Provides quick access to shared folders (by a right mouse button click).<br>"
    1555             "Note that the shared folders feature requires Guest Additions to be installed in the guest OS."));
     1552            "to quickly perform actions from the main menu."));
    15561553
    15571554    updateAppearanceOf (AllStuff);
     
    15861583        devicesUnmountFloppyAction->setEnabled (machine_state == CEnums::Running && mounted);
    15871584        fd_light->setState (mounted ? CEnums::DeviceIdle : CEnums::InvalidActivity);
    1588         QString tip = tr (
    1589             "<qt>Indicates&nbsp;the&nbsp;activity&nbsp;of&nbsp;the&nbsp;floppy&nbsp;media"
    1590             "<br>[<b>%1</b>]</qt>"
    1591         );
     1585        QString tip = tr ("<qt><nobr>Indicates the activity of the floppy media:</nobr>"
     1586                          "%1</qt>",
     1587                          "Floppy tooltip");
    15921588        QString name;
    15931589        switch (state)
     
    16001596                QString fullName = description.isEmpty() ?
    16011597                    drvName :
    1602                     QString ("<nobr>%1 (%2)</nobr>").arg (description, drvName);
    1603                 name = tr ("Host&nbsp;Drive&nbsp;", "Floppy tooltip") +
    1604                     fullName;
     1598                    QString ("%1 (%2)").arg (description, drvName);
     1599                name = tr ("<br><nobr><b>Host Drive</b>: %1</nobr>",
     1600                           "Floppy tooltip").arg (fullName);
    16051601                break;
    16061602            }
    16071603            case CEnums::ImageMounted:
    1608                 name = floppy.GetImage().GetFilePath();
     1604            {
     1605                name = tr ("<br><nobr><b>Image</b>: %1</nobr>",
     1606                           "Floppy tooltip")
     1607                    .arg (QDir::convertSeparators (floppy.GetImage().GetFilePath()));
    16091608                break;
     1609            }
    16101610            case CEnums::NotMounted:
    1611                 name = tr ("not&nbsp;mounted", "Floppy tooltip");
     1611            {
     1612                name = tr ("<br><nobr><b>No media mounted</b></nobr>",
     1613                           "Floppy tooltip");
    16121614                break;
     1615            }
    16131616            default:
    16141617                AssertMsgFailed (("Invalid floppy drive state: %d\n", state));
     
    16241627        devicesUnmountDVDAction->setEnabled (machine_state == CEnums::Running && mounted);
    16251628        cd_light->setState (mounted ? CEnums::DeviceIdle : CEnums::InvalidActivity);
    1626         QString tip = tr (
    1627             "<qt>Indicates&nbsp;the&nbsp;activity&nbsp;of&nbsp;the&nbsp;CD/DVD-ROM&nbsp;media"
    1628             "<br>[<b>%1</b>]</qt>"
    1629         );
     1629        QString tip = tr ("<qt><nobr>Indicates the activity of the CD/DVD-ROM media:</nobr>"
     1630                          "%1</qt>",
     1631                          "DVD-ROM tooltip");
    16301632        QString name;
    16311633        switch (state)
     
    16381640                QString fullName = description.isEmpty() ?
    16391641                    drvName :
    1640                     QString ("<nobr>%1 (%2)</nobr>").arg (description, drvName);
    1641                 name = tr ("Host&nbsp;Drive&nbsp;", "DVD-ROM tooltip") +
    1642                     fullName;
     1642                    QString ("%1 (%2)").arg (description, drvName);
     1643                name = tr ("<br><nobr><b>Host Drive</b>: %1</nobr>",
     1644                           "DVD-ROM tooltip").arg (fullName);
    16431645                break;
    16441646            }
    16451647            case CEnums::ImageMounted:
    16461648            {
    1647                 name = dvd.GetImage().GetFilePath();
     1649                name = tr ("<br><nobr><b>Image</b>: %1</nobr>",
     1650                           "DVD-ROM tooltip")
     1651                    .arg (QDir::convertSeparators (dvd.GetImage().GetFilePath()));
    16481652                break;
    16491653            }
    16501654            case CEnums::NotMounted:
    16511655            {
    1652                 name = tr ("not&nbsp;mounted", "DVD-ROM tooltip");
     1656                name = tr ("<br><nobr><b>No media mounted</b></nobr>",
     1657                           "DVD-ROM tooltip");
    16531658                break;
    16541659            }
    16551660            default:
    1656                 AssertMsgFailed (("Invalid dvd drive state: %d\n", state));
     1661                AssertMsgFailed (("Invalid DVD drive state: %d\n", state));
    16571662        }
    16581663        QToolTip::add (cd_light, tip.arg (name));
     
    16601665    if (element & HardDiskStuff)
    16611666    {
    1662         QString info =
    1663             tr ("<qt>Indicates&nbsp;the&nbsp;activity&nbsp;of&nbsp;virtual&nbsp;hard&nbsp;disks");
    1664         const char *ctlNames[] = { "IDE0", "IDE1", "Controller%1" };
    1665         const char *devNames[] = { "Master", "Slave", "Device%1" };
     1667        QString tip = tr ("<qt><nobr>Indicates the activity of virtual hard disks:</nobr>"
     1668                          "%1</qt>",
     1669                          "HDD tooltip");
     1670        QString data;
    16661671        bool hasDisks = false;
    16671672        CHardDiskAttachmentEnumerator aen = cmachine.GetHardDiskAttachments().Enumerate();
    1668         while (aen.HasMore()) {
     1673        while (aen.HasMore())
     1674        {
    16691675            CHardDiskAttachment hda = aen.GetNext();
    1670             QString ctl, dev;
    1671             switch (hda.GetController()) {
    1672                 case CEnums::IDE0Controller:
    1673                     ctl = ctlNames[0];
    1674                     break;
    1675                 case CEnums::IDE1Controller:
    1676                     ctl = ctlNames[1];
    1677                     break;
    1678                 default:
    1679                     break;
    1680             }
    1681             if (!ctl.isNull()) {
    1682                 dev = devNames[hda.GetDeviceNumber()];
    1683             } else {
    1684                 ctl = QString (ctlNames[2]).arg (hda.GetController());
    1685                 dev = QString (devNames[2]).arg (hda.GetDeviceNumber());
    1686             }
    16871676            CHardDisk hd = hda.GetHardDisk();
    1688             info += QString ("<br>[%1&nbsp;%2:&nbsp;<b>%3</b>]")
    1689                 .arg (ctl).arg (dev)
    1690                 .arg (hd.GetLocation().replace (' ', "&nbsp;"));
     1677            data += QString ("<br><nobr><b>%1 %2</b>: %3</nobr>")
     1678                .arg (vboxGlobal().toString (hda.GetController()))
     1679                .arg (vboxGlobal().toString (hda.GetController(),
     1680                                hda.GetDeviceNumber()))
     1681                .arg (QDir::convertSeparators (hd.GetLocation()));
    16911682            hasDisks = true;
    16921683        }
    16931684        if (!hasDisks)
    1694             info += tr ("<br>[<b>not attached</b>]", "HDD tooltip");
    1695         info += "</qt>";
    1696         QToolTip::add (hd_light, info);
     1685            data += tr ("<br><nobr><b>No hard disks attached</b></nobr>",
     1686                        "HDD tooltip");
     1687        QToolTip::add (hd_light, tip.arg (data));
    16971688        hd_light->setState (hasDisks ? CEnums::DeviceIdle : CEnums::InvalidActivity);
    16981689    }
     
    17301721        QString tip = tr ("Indicates whether the Remote Display (VRDP Server) "
    17311722                          "is enabled (<img src=vrdp_16px.png/>) or not "
    1732                           "(<img src=vrdp_disabled_16px.png/>)"
     1723                          "(<img src=vrdp_disabled_16px.png/>)."
    17331724        );
    17341725        if (vrdpsrv.GetEnabled())
     
    17361727        QToolTip::add (vrdp_state, tip);
    17371728#endif
     1729    }
     1730    if (element & SharedFolderStuff)
     1731    {
     1732        QString tip = tr ("<qt><nobr>Indicates the activity of shared folders:</nobr>"
     1733                          "%1</qt>",
     1734                          "Shared folders tooltip");
     1735
     1736        QString data;
     1737        QMap <QString, QString> sfs;
     1738
     1739        /// @todo later: add global folders
     1740
     1741        /* permanent folders */
     1742        CSharedFolderEnumerator en = cmachine.GetSharedFolders().Enumerate();
     1743        while (en.HasMore())
     1744        {
     1745            CSharedFolder sf = en.GetNext();
     1746            sfs.insert (sf.GetName(), sf.GetHostPath());
     1747        }
     1748        /* transient folders */
     1749        en = cconsole.GetSharedFolders().Enumerate();
     1750        while (en.HasMore())
     1751        {
     1752            CSharedFolder sf = en.GetNext();
     1753            sfs.insert (sf.GetName(), sf.GetHostPath());
     1754        }
     1755
     1756        for (QMap <QString, QString>::ConstIterator it = sfs.begin();
     1757             it != sfs.end(); ++ it)
     1758        {
     1759            /* select slashes depending on the OS type */
     1760            if (VBoxGlobal::isDOSType (cconsole.GetGuest().GetOSTypeId()))
     1761                data += QString ("<tr><td><nobr><b>\\\\vboxsvr\\%1</b></nobr></td>"
     1762                                 "<td><nobr>%2</nobr></td>")
     1763                    .arg (it.key(), it.data());
     1764            else
     1765                data += QString ("<tr><td><nobr><b>%1</b></nobr></td>"
     1766                                 "<td><nobr>%2</nobr></td></tr>")
     1767                    .arg (it.key(), it.data());
     1768        }
     1769
     1770        if (sfs.count() == 0)
     1771            data = tr ("<br><nobr><b>No shared folders</b></nobr>",
     1772                       "Shared folders tooltip");
     1773        else
     1774            data = QString ("<br><table border=0 cellspacing=0 cellpadding=0 "
     1775                            "width=100%>%1</table>").arg (data);
     1776
     1777        QToolTip::add (sf_light, tip.arg (data));
    17381778    }
    17391779    if (element & PauseAction)
     
    28972937}
    28982938
     2939void VBoxConsoleWnd::updateSharedFoldersState()
     2940{
     2941    updateAppearanceOf (SharedFolderStuff);
     2942}
     2943
    28992944/**
    29002945 *  Helper to safely close the main console window.
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp

    r4071 r4201  
    912912{
    913913    QString details;
    914     QString m = aDevice.GetManufacturer();
    915     QString p = aDevice.GetProduct();
     914    QString m = aDevice.GetManufacturer().stripWhiteSpace();
     915    QString p = aDevice.GetProduct().stripWhiteSpace();
    916916    if (m.isEmpty() && p.isEmpty())
     917    {
    917918        details =
    918919            tr ("Unknown device %1:%2", "USB device details")
    919920            .arg (QString().sprintf ("%04hX", aDevice.GetVendorId()))
    920921            .arg (QString().sprintf ("%04hX", aDevice.GetProductId()));
     922    }
    921923    else
    922         details = m + " " + p;
     924    {
     925        if (p.upper().startsWith (m.upper()))
     926            details = p;
     927        else
     928            details = m + " " + p;
     929    }
    923930    ushort r = aDevice.GetRevision();
    924931    if (r != 0)
     
    13381345
    13391346                if (srv.GetEnabled())
    1340                 {
    13411347                    item = QString (sSectionItemTpl)
    13421348                        .arg (tr ("VRDP Server Port", "details report (VRDP)"),
    13431349                              tr ("%1", "details report (VRDP)")
    13441350                                  .arg (srv.GetPort()));
    1345                 }
    13461351                else
    13471352                    item = QString (sSectionItemTpl)
     
    13551360                          item); /* items */
    13561361            }
     1362        }
     1363        /* Shared folders */
     1364        {
     1365            ulong count = m.GetSharedFolders().GetCount();
     1366            if (count > 0)
     1367            {
     1368                item = QString (sSectionItemTpl)
     1369                    .arg (tr ("Shared Folders", "details report (shared folders)"),
     1370                          tr ("%1", "details report (shadef folders)")
     1371                              .arg (count));
     1372            }
     1373            else
     1374                item = QString (sSectionItemTpl)
     1375                    .arg (tr ("None", "details report (shared folders)"), "");
     1376
     1377            detailsReport += sectionTpl
     1378                .arg (2 + 1) /* rows */
     1379                .arg ("shared_folder_16px.png", /* icon */
     1380                      "#sfolders", /* link */
     1381                      tr ("Shared Folders", "details report"), /* title */
     1382                      item); /* items */
    13571383        }
    13581384    }
     
    19031929////////////////////////////////////////////////////////////////////////////////
    19041930
     1931/* static */
     1932bool VBoxGlobal::isDOSType (const QString &aOSTypeId)
     1933{
     1934    if (aOSTypeId.left (3) == "dos" ||
     1935        aOSTypeId.left (3) == "win" ||
     1936        aOSTypeId.left (3) == "os2")
     1937        return true;
     1938
     1939    return false;
     1940}
     1941
    19051942/**
    19061943 *  Sets the QLabel background and frame colors according tho the pixmap
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