VirtualBox

Changeset 364 in vbox


Ignore:
Timestamp:
Jan 26, 2007 4:41:23 PM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
17928
Message:

FE/Qt: Added USB filter templates to the USB page of the VM Settings dialog.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsDlg.ui

    r285 r364  
    19421942                                            <widget class="QToolButton">
    19431943                                                <property name="name">
     1944                                                    <cstring>tbAddUSBFilterFrom</cstring>
     1945                                                </property>
     1946                                                <property name="focusPolicy">
     1947                                                    <enum>TabFocus</enum>
     1948                                                </property>
     1949                                                <property name="text">
     1950                                                    <string></string>
     1951                                                </property>
     1952                                                <property name="accel">
     1953                                                    <string>Ins</string>
     1954                                                </property>
     1955                                                <property name="iconSet">
     1956                                                    <iconset></iconset>
     1957                                                </property>
     1958                                                <property name="textLabel">
     1959                                                    <string>Add existing</string>
     1960                                                </property>
     1961                                                <property name="autoRaise">
     1962                                                    <bool>true</bool>
     1963                                                </property>
     1964                                                <property name="whatsThis" stdset="0">
     1965                                                    <string>Adds a new USB filter from an existing USB device.</string>
     1966                                                </property>
     1967                                            </widget>
     1968                                            <widget class="QToolButton">
     1969                                                <property name="name">
    19441970                                                    <cstring>tbRemoveUSBFilter</cstring>
    19451971                                                </property>
     
    25322558    </connection>
    25332559    <connection>
     2560        <sender>tbAddUSBFilterFrom</sender>
     2561        <signal>clicked()</signal>
     2562        <receiver>VBoxVMSettingsDlg</receiver>
     2563        <slot>tbAddUSBFilterFrom_clicked()</slot>
     2564    </connection>
     2565    <connection>
    25342566        <sender>tbRemoveUSBFilter</sender>
    25352567        <signal>clicked()</signal>
     
    25902622    <tabstop>lvUSBFilters</tabstop>
    25912623    <tabstop>tbAddUSBFilter</tabstop>
     2624    <tabstop>tbAddUSBFilterFrom</tabstop>
    25922625    <tabstop>tbRemoveUSBFilter</tabstop>
    25932626    <tabstop>tbUSBFilterUp</tabstop>
     
    26132646    <include location="global" impldecl="in implementation">qfocusdata.h</include>
    26142647    <include location="global" impldecl="in implementation">qtimer.h</include>
     2648    <include location="global" impldecl="in implementation">qpopupmenu.h</include>
    26152649    <include location="local" impldecl="in declaration">COMDefs.h</include>
    26162650    <include location="local" impldecl="in declaration">QIWidgetValidator.h</include>
     
    26252659    <forward>class VBoxMediaComboBox</forward>
    26262660    <forward>class VBoxDiskImageManagerDlg</forward>
     2661    <forward>class QPopupMenu</forward>
    26272662</forwards>
    26282663<variables>
     
    26552690    <variable access="private">VBoxMediaComboBox *cbISODVD;</variable>
    26562691    <variable access="private">VBoxMediaComboBox *cbISOFloppy;</variable>
     2692    <variable access="private">QPopupMenu *usbDevicesMenu;</variable>
     2693    <variable access="private">QMap&lt;int, CUSBDevice&gt; usbDevicesMap;</variable>
     2694    <variable access="private">int mUsbDevicesMenuNoDevicesId;</variable>
    26572695</variables>
    26582696<slots>
     
    26792717    <slot>lvUSBFilters_setCurrentText( const QString &amp; aText )</slot>
    26802718    <slot>tbAddUSBFilter_clicked()</slot>
     2719    <slot>tbAddUSBFilterFrom_clicked()</slot>
     2720    <slot>menuAddUSBFilterFrom_activated( int )</slot>
     2721    <slot>menuAddUSBFilterFrom_highlighted( int )</slot>
    26812722    <slot>tbRemoveUSBFilter_clicked()</slot>
    26822723    <slot>tbUSBFilterUp_clicked()</slot>
  • trunk/src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsDlg.ui.h

    r285 r364  
    447447    tbAddUSBFilter->setIconSet (VBoxGlobal::iconSet ("usb_add_16px.png",
    448448                                                     "usb_add_disabled_16px.png"));
     449    tbAddUSBFilterFrom->setIconSet (VBoxGlobal::iconSet ("usb_read_16px.png",
     450                                                         "usb_read_16px.png"));
    449451    tbRemoveUSBFilter->setIconSet (VBoxGlobal::iconSet ("usb_remove_16px.png",
    450452                                                        "usb_remove_disabled_16px.png"));
     
    453455    tbUSBFilterDown->setIconSet (VBoxGlobal::iconSet ("usb_movedown_16px.png",
    454456                                                      "usb_movedown_disabled_16px.png"));
    455 
     457    usbDevicesMenu = new QPopupMenu (this, "usbDevicesMenu");
     458    connect (usbDevicesMenu, SIGNAL(activated(int)), this, SLOT(menuAddUSBFilterFrom_activated(int)));
     459    connect (usbDevicesMenu, SIGNAL(highlighted(int)), this, SLOT(menuAddUSBFilterFrom_highlighted(int)));
    456460    mLastUSBFilterNum = 0;
    457461    mUSBFilterListModified = false;
     462    mUsbDevicesMenuNoDevicesId = -1;
    458463
    459464    /* VRDP Page */
     
    17111716}
    17121717
     1718void VBoxVMSettingsDlg::tbAddUSBFilterFrom_clicked()
     1719{
     1720    usbDevicesMenu->clear();
     1721    usbDevicesMap.clear();
     1722    CHost host = vboxGlobal().virtualBox().GetHost();
     1723
     1724    bool isUSBEmpty = host.GetUSBDevices().GetCount() == 0;
     1725    if (isUSBEmpty)
     1726    {
     1727        mUsbDevicesMenuNoDevicesId = usbDevicesMenu->insertItem (
     1728            tr ("<no available devices>", "USB devices"));
     1729        usbDevicesMenu->setItemEnabled (mUsbDevicesMenuNoDevicesId, false);
     1730    }
     1731    else
     1732    {
     1733        mUsbDevicesMenuNoDevicesId = -1;
     1734        CHostUSBDeviceEnumerator en = host.GetUSBDevices().Enumerate();
     1735        while (en.HasMore())
     1736        {
     1737            CHostUSBDevice iterator = en.GetNext();
     1738            CUSBDevice usb = CUnknown (iterator);
     1739            int id = usbDevicesMenu->insertItem (vboxGlobal().details (usb));
     1740            usbDevicesMap [id] = usb;
     1741        }
     1742    }
     1743    usbDevicesMenu->exec (QCursor::pos());
     1744}
     1745
     1746void VBoxVMSettingsDlg::menuAddUSBFilterFrom_highlighted (int aIndex)
     1747{
     1748    /* the <no available devices> item is highlighted */
     1749    if (aIndex == mUsbDevicesMenuNoDevicesId)
     1750    {
     1751        QToolTip::add (usbDevicesMenu,
     1752            tr ("No supported devices connected to the host PC",
     1753                "USB device tooltip"));
     1754        return;
     1755    }
     1756
     1757    CUSBDevice usb = usbDevicesMap [aIndex];
     1758    /* if null then some other item but a USB device is highlighted */
     1759    if (usb.isNull())
     1760    {
     1761        QToolTip::remove (usbDevicesMenu);
     1762        return;
     1763    }
     1764
     1765    QString tip = vboxGlobal().toolTip (usb);
     1766    QToolTip::add (usbDevicesMenu, tip);
     1767}
     1768
     1769void VBoxVMSettingsDlg::menuAddUSBFilterFrom_activated (int aIndex)
     1770{
     1771    CUSBDevice usb = usbDevicesMap [aIndex];
     1772    /* if null then some other item but a USB device is selected */
     1773    if (usb.isNull())
     1774        return;
     1775
     1776    CUSBDeviceFilter filter = cmachine.GetUSBController()
     1777        .CreateDeviceFilter (tr ("New Filter %1", "usb")
     1778                                 .arg (++ mLastUSBFilterNum));
     1779
     1780    filter.SetVendorId (QString().sprintf ("%04hX", usb.GetVendorId()));
     1781    filter.SetProductId (QString().sprintf ("%04hX", usb.GetProductId()));
     1782    filter.SetRevision (QString().sprintf ("%04hX", usb.GetRevision()));
     1783    filter.SetPort (QString().sprintf ("%04hX", usb.GetPort()));
     1784    filter.SetManufacturer (usb.GetManufacturer());
     1785    filter.SetProduct (usb.GetProduct());
     1786    filter.SetSerialNumber (usb.GetSerialNumber());
     1787    filter.SetRemote (usb.GetRemote() ? "yes" : "no");
     1788
     1789    filter.SetActive (true);
     1790    addUSBFilter (filter, true /* isNew */);
     1791
     1792    mUSBFilterListModified = true;
     1793}
     1794
    17131795void VBoxVMSettingsDlg::tbRemoveUSBFilter_clicked()
    17141796{
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