VirtualBox

Ignore:
Timestamp:
Feb 9, 2010 1:46:31 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
57460
Message:

FE/Qt4: Be a little bit more user friendly and try to guess the OS type automatically in the new VM wizard.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp

    r26333 r26367  
    2929#include "VBoxVMSettingsHD.h"
    3030
     31/* Globals */
     32struct osTypePattern
     33{
     34    QRegExp pattern;
     35    const char *pcstId;
     36};
     37
     38/* Defines some patterns to guess the right OS type. Should be in sync with
     39 * VirtualBox-settings-common.xsd in Main. The list is sorted by priority. The
     40 * first matching string found, will be used. */
     41static const osTypePattern gs_OSTypePattern[] =
     42{
     43    { QRegExp("DO", Qt::CaseInsensitive), "DOS" },
     44    { QRegExp("Net", Qt::CaseInsensitive), "Netware" },
     45    { QRegExp("L4", Qt::CaseInsensitive), "L4" },
     46    { QRegExp("Wi.*3", Qt::CaseInsensitive), "Windows31" },
     47    { QRegExp("Wi.*98", Qt::CaseInsensitive), "Windows98" },
     48    { QRegExp("Wi.*95", Qt::CaseInsensitive), "Windows95" },
     49    { QRegExp("Wi.*Me", Qt::CaseInsensitive), "WindowsMe" },
     50    { QRegExp("Wi.*NT", Qt::CaseInsensitive), "WindowsNT4" },
     51    { QRegExp("Wi.*X.*64", Qt::CaseInsensitive), "WindowsXP_64" },
     52    { QRegExp("Wi.*X", Qt::CaseInsensitive), "WindowsXP" },
     53    { QRegExp("Wi.*2003.*64", Qt::CaseInsensitive), "Windows2003_64" },
     54    { QRegExp("Wi.*2003", Qt::CaseInsensitive), "Windows2003" },
     55    { QRegExp("Wi.*V.*64", Qt::CaseInsensitive), "WindowsVista_64" },
     56    { QRegExp("Wi.*V", Qt::CaseInsensitive), "WindowsVista" },
     57    { QRegExp("Wi.*2008.*64", Qt::CaseInsensitive), "Windows2008_64" },
     58    { QRegExp("Wi.*2008", Qt::CaseInsensitive), "Windows2008" },
     59    { QRegExp("Wi.*2", Qt::CaseInsensitive), "Windows2000" },
     60    { QRegExp("Wi.*7.*64", Qt::CaseInsensitive), "Windows7_64" },
     61    { QRegExp("Wi.*7", Qt::CaseInsensitive), "Windows7" },
     62    { QRegExp("Wi", Qt::CaseInsensitive), "WindowsXP" },
     63    { QRegExp("OS2.*W.*4.?5", Qt::CaseInsensitive), "OS2Warp45" },
     64    { QRegExp("OS2.*W.*4", Qt::CaseInsensitive), "OS2Warp4" },
     65    { QRegExp("OS2.*W", Qt::CaseInsensitive), "OS2Warp3" },
     66    { QRegExp("OS2.*e", Qt::CaseInsensitive), "OS2eCS" },
     67    { QRegExp("OS2", Qt::CaseInsensitive), "OS2" },
     68    { QRegExp("Ar.*64", Qt::CaseInsensitive), "ArchLinux_64" },
     69    { QRegExp("Ar", Qt::CaseInsensitive), "ArchLinux" },
     70    { QRegExp("De.*64", Qt::CaseInsensitive), "Debian_64" },
     71    { QRegExp("De", Qt::CaseInsensitive), "Debian" },
     72    { QRegExp("(SU)|(No)", Qt::CaseInsensitive), "OpenSUSE" },
     73    { QRegExp("((SU)|(No)).*64", Qt::CaseInsensitive), "OpenSUSE_64" },
     74    { QRegExp("Fe.*64", Qt::CaseInsensitive), "Fedora_64" },
     75    { QRegExp("Fe", Qt::CaseInsensitive), "Fedora" },
     76    { QRegExp("Ge.*64", Qt::CaseInsensitive), "Gentoo_64" },
     77    { QRegExp("Ge", Qt::CaseInsensitive), "Gentoo" },
     78    { QRegExp("Man.*64", Qt::CaseInsensitive), "Mandriva_64" },
     79    { QRegExp("Man", Qt::CaseInsensitive), "Mandriva" },
     80    { QRegExp("Re.*64", Qt::CaseInsensitive), "RedHat_64" },
     81    { QRegExp("Re", Qt::CaseInsensitive), "RedHat" },
     82    { QRegExp("Tu", Qt::CaseInsensitive), "Turbolinux" },
     83    { QRegExp("Ub.*64", Qt::CaseInsensitive), "Ubuntu_64" },
     84    { QRegExp("Ub", Qt::CaseInsensitive), "Ubuntu" },
     85    { QRegExp("Xa.*64", Qt::CaseInsensitive), "Xandros_64" },
     86    { QRegExp("Xa", Qt::CaseInsensitive), "Xandros" },
     87    { QRegExp("Or.*64", Qt::CaseInsensitive), "Oracle_64" },
     88    { QRegExp("Or", Qt::CaseInsensitive), "Oracle" },
     89    { QRegExp("Li.*2.?2", Qt::CaseInsensitive), "Linux22" },
     90    { QRegExp("Li.*2.?4.*64", Qt::CaseInsensitive), "Linux24_64" },
     91    { QRegExp("Li.*2.?4", Qt::CaseInsensitive), "Linux24" },
     92    { QRegExp("Li.*2.?6.*64", Qt::CaseInsensitive), "Linux26_64" },
     93    { QRegExp("Li.*2.?6", Qt::CaseInsensitive), "Linux26" },
     94    { QRegExp("Li", Qt::CaseInsensitive), "Linux26" },
     95    { QRegExp("Fr.*B.*64", Qt::CaseInsensitive), "FreeBSD_64" },
     96    { QRegExp("Fr.*B", Qt::CaseInsensitive), "FreeBSD" },
     97    { QRegExp("Op.*B.*64", Qt::CaseInsensitive), "OpenBSD_64" },
     98    { QRegExp("Op.*B", Qt::CaseInsensitive), "OpenBSD" },
     99    { QRegExp("Ne.*B.*64", Qt::CaseInsensitive), "NetBSD_64" },
     100    { QRegExp("Ne.*B", Qt::CaseInsensitive), "NetBSD" },
     101    { QRegExp("Op.*So.*64", Qt::CaseInsensitive), "OpenSolaris_64" },
     102    { QRegExp("Op.*So", Qt::CaseInsensitive), "OpenSolaris" },
     103    { QRegExp("So.*64", Qt::CaseInsensitive), "Solaris_64" },
     104    { QRegExp("So", Qt::CaseInsensitive), "Solaris" },
     105    { QRegExp("QN", Qt::CaseInsensitive), "QNX" },
     106    { QRegExp("Mac.*64", Qt::CaseInsensitive), "MacOS_64" },
     107    { QRegExp("Mac", Qt::CaseInsensitive), "MacOS" },
     108    { QRegExp("Ot", Qt::CaseInsensitive), "Other" },
     109};
     110
    31111UINewVMWzd::UINewVMWzd(QWidget *pParent) : QIWizard(pParent)
    32112{
     
    92172    registerField("type*", m_pTypeSelector, "type", SIGNAL(osTypeChanged()));
    93173
     174    connect(m_pNameEditor, SIGNAL(textChanged(const QString&)),
     175            this, SLOT(sltNameChanged(const QString&)));
     176
    94177    /* Setup contents */
    95178    m_pTypeSelector->activateLayout();
     
    115198    /* 'Name' field should have focus initially */
    116199    m_pNameEditor->setFocus();
     200}
     201
     202void UINewVMWzdPage2::sltNameChanged(const QString &strNewText)
     203{
     204    /* Search for a matching OS type based on the string the user typed
     205     * already. */
     206    for (size_t i=0; i < RT_ELEMENTS(gs_OSTypePattern); ++i)
     207        if (strNewText.contains(gs_OSTypePattern[i].pattern))
     208        {
     209            m_pTypeSelector->setType(vboxGlobal().vmGuestOSType(gs_OSTypePattern[i].pcstId));
     210            break;
     211        }
    117212}
    118213
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.h

    r26079 r26367  
    7272
    7373    UINewVMWzdPage2();
     74
     75protected slots:
     76
     77    void sltNameChanged(const QString &strNewText);
    7478
    7579protected:
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