VBoxGlobalSettingsDlg.ui.h revision b9042bb7a5efd07d617a8a7d812b669d75682779
a78048ccbdb6256da15e6b0e7e95355e480c2301nd/**
a78048ccbdb6256da15e6b0e7e95355e480c2301nd *
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd * VBox frontends: Qt GUI ("VirtualBox"):
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd * "Global settings" dialog UI include (Qt Designer)
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd/*
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * Copyright (C) 2006 InnoTek Systemberatung GmbH
a78048ccbdb6256da15e6b0e7e95355e480c2301nd *
96ad5d81ee4a2cc66a4ae19893efc8aa6d06fae7jailletc * This file is part of VirtualBox Open Source Edition (OSE), as
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * available from http://www.virtualbox.org. This file is free software;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * you can redistribute it and/or modify it under the terms of the GNU
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * General Public License as published by the Free Software Foundation,
2e545ce2450a9953665f701bb05350f0d3f26275nd * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * distribution. VirtualBox OSE is distributed in the hope that it will
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * be useful, but WITHOUT ANY WARRANTY of any kind.
a78048ccbdb6256da15e6b0e7e95355e480c2301nd *
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * If you received this file as part of a commercial VirtualBox
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen * distribution, then only the terms of your commercial VirtualBox
3f08db06526d6901aa08c110b5bc7dde6bc39905nd * license agreement apply instead of the previous paragraph.
a78048ccbdb6256da15e6b0e7e95355e480c2301nd */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd/****************************************************************************
3f08db06526d6901aa08c110b5bc7dde6bc39905nd** ui.h extension file, included from the uic-generated form implementation.
a78048ccbdb6256da15e6b0e7e95355e480c2301nd**
a78048ccbdb6256da15e6b0e7e95355e480c2301nd** If you wish to add, delete or rename functions or slots use
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung** Qt Designer which will update this file, preserving your code. Create an
a78048ccbdb6256da15e6b0e7e95355e480c2301nd** init() function in place of a constructor, and a destroy() function in
4b575a6b6704b516f22d65a3ad35696d7b9ba372rpluem** place of a destructor.
4b575a6b6704b516f22d65a3ad35696d7b9ba372rpluem*****************************************************************************/
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd/**
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * Returns the path to the item in the form of 'grandparent > parent > item'
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * using the text of the first column of every item.
a78048ccbdb6256da15e6b0e7e95355e480c2301nd */
a78048ccbdb6256da15e6b0e7e95355e480c2301ndstatic QString path (QListViewItem *li)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd static QString sep = ": ";
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QString p;
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh QListViewItem *cur = li;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd while (cur)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (!p.isNull())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd p = sep + p;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd p = cur->text (0).simplifyWhiteSpace() + p;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd cur = cur->parent();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd return p;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd}
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301ndenum
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd // listView column numbers
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView_Category = 0,
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView_Id = 1,
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView_Link = 2,
a78048ccbdb6256da15e6b0e7e95355e480c2301nd};
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301ndvoid VBoxGlobalSettingsDlg::init()
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd setCaption (tr ("VirtualBox Global Settings"));
a78048ccbdb6256da15e6b0e7e95355e480c2301nd setIcon (QPixmap::fromMimeSource ("settings_16px.png"));
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* all pages are initially valid */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd valid = true;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd buttonOk->setEnabled( true );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd warningSpacer->changeSize( 0, 0, QSizePolicy::Expanding );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd warningLabel->setHidden( true );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd warningPixmap->setHidden( true );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* disable unselecting items by clicking in the unused area of the list */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd new QIListViewSelectionPreserver (this, listView);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* hide the header and internal columns */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView->header()->hide();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView->setColumnWidthMode (listView_Id, QListView::Manual);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView->setColumnWidthMode (listView_Link, QListView::Manual);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView->hideColumn (listView_Id);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView->hideColumn (listView_Link);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* sort by the id column (to have pages in the desired order) */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView->setSorting (listView_Id);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView->sort();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* disable further sorting (important for network adapters) */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView->setSorting (-1);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* set the first item selected */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView->setSelected (listView->firstChild(), true);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd listView_currentChanged (listView->firstChild());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd warningPixmap->setMaximumSize( 16, 16 );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd warningPixmap->setPixmap( QMessageBox::standardIcon( QMessageBox::Warning ) );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* page title font is derived from the system font */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QFont f = font();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd f.setBold( true );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd f.setPointSize( f.pointSize() + 2 );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd titleLabel->setFont( f );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* setup the what's this label */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QApplication::setGlobalMouseTracking (true);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd qApp->installEventFilter (this);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd whatsThisTimer = new QTimer (this);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd connect (whatsThisTimer, SIGNAL (timeout()), this, SLOT (updateWhatsThis()));
a78048ccbdb6256da15e6b0e7e95355e480c2301nd whatsThisCandidate = NULL;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd whatsThisLabel->setTextFormat (Qt::RichText);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd whatsThisLabel->setMinimumHeight (whatsThisLabel->frameWidth() * 2 +
a78048ccbdb6256da15e6b0e7e95355e480c2301nd 4 /* seems that RichText adds some margin */ +
a78048ccbdb6256da15e6b0e7e95355e480c2301nd whatsThisLabel->fontMetrics().lineSpacing() * 3);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /*
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * create and layout non-standard widgets
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * ----------------------------------------------------------------------
a78048ccbdb6256da15e6b0e7e95355e480c2301nd */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd hkeHostKey = new QIHotKeyEdit( pageKeyboard, "hkeHostKey" );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd hkeHostKey->setSizePolicy(
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Fixed ));
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QWhatsThis::add (hkeHostKey,
a78048ccbdb6256da15e6b0e7e95355e480c2301nd tr ("Displays the key used as a Host Key in the VM window. Activate the "
a78048ccbdb6256da15e6b0e7e95355e480c2301nd "entry field and press a new Host Key. Note that alphanumeric, "
a78048ccbdb6256da15e6b0e7e95355e480c2301nd "cursor movement and editing keys cannot be used as a Host Key."));
a78048ccbdb6256da15e6b0e7e95355e480c2301nd layoutHostKey->addWidget( hkeHostKey );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd txHostKey->setBuddy( hkeHostKey );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd setTabOrder (listView, hkeHostKey);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /*
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * setup connections and set validation for pages
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * ----------------------------------------------------------------------
a78048ccbdb6256da15e6b0e7e95355e480c2301nd */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* General page */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd/// @todo (dmik) remove
a78048ccbdb6256da15e6b0e7e95355e480c2301nd// leVDIFolder->setValidator (new QRegExpValidator (QRegExp (".+"), this));
a78048ccbdb6256da15e6b0e7e95355e480c2301nd// leMachineFolder->setValidator (new QRegExpValidator (QRegExp (".+"), this));
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd wvalGeneral = new QIWidgetValidator (pageGeneral, this);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd connect (wvalGeneral, SIGNAL (validityChanged (const QIWidgetValidator *)),
a78048ccbdb6256da15e6b0e7e95355e480c2301nd this, SLOT (enableOk( const QIWidgetValidator *)));
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* Keyboard page */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd wvalKeyboard = new QIWidgetValidator( pageKeyboard, this );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd connect (wvalKeyboard, SIGNAL (validityChanged (const QIWidgetValidator *)),
a78048ccbdb6256da15e6b0e7e95355e480c2301nd this, SLOT (enableOk( const QIWidgetValidator *)));
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /*
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * set initial values
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * ----------------------------------------------------------------------
a78048ccbdb6256da15e6b0e7e95355e480c2301nd */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* General page */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* keyboard page */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /*
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * update the Ok button state for pages with validation
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * (validityChanged() connected to enableNext() will do the job)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd wvalGeneral->revalidate();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd wvalKeyboard->revalidate();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd}
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301ndbool VBoxGlobalSettingsDlg::eventFilter (QObject *object, QEvent *event)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (!object->isWidgetType())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd return QDialog::eventFilter (object, event);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QWidget *widget = static_cast <QWidget *> (object);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (widget->topLevelWidget() != this)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd return QDialog::eventFilter (object, event);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd switch (event->type())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd case QEvent::Enter:
a78048ccbdb6256da15e6b0e7e95355e480c2301nd case QEvent::Leave:
a78048ccbdb6256da15e6b0e7e95355e480c2301nd {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (event->type() == QEvent::Enter)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd whatsThisCandidate = widget;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd else
a78048ccbdb6256da15e6b0e7e95355e480c2301nd whatsThisCandidate = NULL;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd whatsThisTimer->start (100, true /* sshot */);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd break;
4aa603e6448b99f9371397d439795c91a93637eand }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd case QEvent::FocusIn:
4aa603e6448b99f9371397d439795c91a93637eand {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd updateWhatsThis (true /* gotFocus */);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd break;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd default:
a78048ccbdb6256da15e6b0e7e95355e480c2301nd break;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd return QDialog::eventFilter (object, event);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd}
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301ndvoid VBoxGlobalSettingsDlg::listView_currentChanged (QListViewItem *item)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd Assert (item);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd int id = item->text (1).toInt();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd Assert (id >= 0);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd titleLabel->setText (::path (item));
a78048ccbdb6256da15e6b0e7e95355e480c2301nd widgetStack->raiseWidget (id);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd}
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301ndvoid VBoxGlobalSettingsDlg::enableOk (const QIWidgetValidator *wval)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd Q_UNUSED (wval);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* detect the overall validity */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd bool newValid = true;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QObjectList *l = this->queryList ("QIWidgetValidator");
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QObjectListIt it (*l);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QObject *obj;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd while ((obj = it.current()) != 0)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd newValid &= ((QIWidgetValidator *) obj)->isValid();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd ++it;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd delete l;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (valid != newValid)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd valid = newValid;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd buttonOk->setEnabled (valid);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (valid)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd warningSpacer->changeSize (0, 0, QSizePolicy::Expanding);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd else
a78048ccbdb6256da15e6b0e7e95355e480c2301nd warningSpacer->changeSize (0, 0);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd warningLabel->setHidden (valid);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd warningPixmap->setHidden (valid);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd}
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301ndvoid VBoxGlobalSettingsDlg::revalidate (QIWidgetValidator * /*wval*/)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* do individual validations for pages */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* currently nothing */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd}
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd/**
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * Reads global settings from the given VMGlobalSettings instance
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * and from the given CSystemProperties object.
a78048ccbdb6256da15e6b0e7e95355e480c2301nd */
a78048ccbdb6256da15e6b0e7e95355e480c2301ndvoid VBoxGlobalSettingsDlg::getFrom (const CSystemProperties &props,
a78048ccbdb6256da15e6b0e7e95355e480c2301nd const VMGlobalSettings &gs)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* default folders */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd leVDIFolder->setText (props.GetDefaultVDIFolder());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd leMachineFolder->setText (props.GetDefaultMachineFolder());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* proprietary GUI settings */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd hkeHostKey->setKey (gs.hostKey() );
a78048ccbdb6256da15e6b0e7e95355e480c2301nd chbAutoCapture->setChecked (gs.autoCapture());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd// wvalXXXX->revalidate();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd}
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd/**
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * Writes global settings to the given VMGlobalSettings instance
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * and to the given CSystemProperties object.
a78048ccbdb6256da15e6b0e7e95355e480c2301nd */
a78048ccbdb6256da15e6b0e7e95355e480c2301ndvoid VBoxGlobalSettingsDlg::putBackTo (CSystemProperties &props,
a78048ccbdb6256da15e6b0e7e95355e480c2301nd VMGlobalSettings &gs)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* default folders */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (leVDIFolder->isModified())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd props.SetDefaultVDIFolder (leVDIFolder->text());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (props.isOk() && leMachineFolder->isModified())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd props.SetDefaultMachineFolder (leMachineFolder->text());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (!props.isOk())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd return;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* proprietary GUI settings */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd gs.setHostKey (hkeHostKey->key());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd gs.setAutoCapture (chbAutoCapture->isChecked());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd}
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301ndvoid VBoxGlobalSettingsDlg::updateWhatsThis (bool gotFocus /* = false */)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QString text;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QWidget *widget = NULL;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (!gotFocus)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (whatsThisCandidate != NULL && whatsThisCandidate != this)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd widget = whatsThisCandidate;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd else
a78048ccbdb6256da15e6b0e7e95355e480c2301nd {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd widget = focusData()->focusWidget();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* if the given widget lacks the whats'this text, look at its parent */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd while (widget && widget != this)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd text = QWhatsThis::textFor (widget);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (!text.isEmpty())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd break;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd widget = widget->parentWidget();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (text.isEmpty() && !warningString.isEmpty())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd text = warningString;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (text.isEmpty())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd text = QWhatsThis::textFor (this);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd whatsThisLabel->setText (text);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd}
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301ndvoid VBoxGlobalSettingsDlg::setWarning (const QString &warning)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd warningString = warning;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (!warning.isEmpty())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd warningString = QString ("<font color=red>%1</font>").arg (warning);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (!warningString.isEmpty())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd whatsThisLabel->setText (warningString);
4aa603e6448b99f9371397d439795c91a93637eand else
a78048ccbdb6256da15e6b0e7e95355e480c2301nd updateWhatsThis (true);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd}
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301ndvoid VBoxGlobalSettingsDlg::tbResetFolder_clicked()
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QToolButton *tb = ::qt_cast <QToolButton *> (sender());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd Assert (tb);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QLineEdit *le = 0;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (tb == tbResetVDIFolder) le = leVDIFolder;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd else if (tb == tbResetMachineFolder) le = leMachineFolder;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd Assert (le);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /*
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * do this instead of le->setText (QString::null) to cause
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * isModified() return true
a78048ccbdb6256da15e6b0e7e95355e480c2301nd */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd le->selectAll();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd le->del();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd}
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301ndvoid VBoxGlobalSettingsDlg::tbSelectFolder_clicked()
a78048ccbdb6256da15e6b0e7e95355e480c2301nd{
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QToolButton *tb = ::qt_cast <QToolButton *> (sender());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd Assert (tb);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QLineEdit *le = 0;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (tb == tbSelectVDIFolder) le = leVDIFolder;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd else if (tb == tbSelectMachineFolder) le = leMachineFolder;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd Assert (le);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QString homeFolder = vboxGlobal().virtualBox().GetHomeFolder();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QFileDialog dlg (homeFolder, QString::null, this);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd dlg.setMode (QFileDialog::DirectoryOnly);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (!le->text().isEmpty())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* set the first parent directory that exists as the current */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd#if 0 /** @todo fix this linux bustage properly */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QFileInfo fld (QDir (homeFolder), le->text());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd#else
a78048ccbdb6256da15e6b0e7e95355e480c2301nd const QDir _dir (homeFolder);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QFileInfo fld (_dir, le->text());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd#endif
a78048ccbdb6256da15e6b0e7e95355e480c2301nd do
a78048ccbdb6256da15e6b0e7e95355e480c2301nd {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QString dp = fld.dirPath (false);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd fld = QFileInfo (dp);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd while (!fld.exists() && !QDir (fld.absFilePath()).isRoot());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (fld.exists())
a78048ccbdb6256da15e6b0e7e95355e480c2301nd dlg.setDir (fld.absFilePath());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd if (dlg.exec() == QDialog::Accepted)
a78048ccbdb6256da15e6b0e7e95355e480c2301nd {
a78048ccbdb6256da15e6b0e7e95355e480c2301nd QString folder = QDir::convertSeparators (dlg.selectedFile());
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /* remove trailing slash */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd folder.truncate (folder.length() - 1);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd /*
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * do this instead of le->setText (folder) to cause
a78048ccbdb6256da15e6b0e7e95355e480c2301nd * isModified() return true
a78048ccbdb6256da15e6b0e7e95355e480c2301nd */
a78048ccbdb6256da15e6b0e7e95355e480c2301nd le->selectAll();
a78048ccbdb6256da15e6b0e7e95355e480c2301nd le->insert (folder);
a78048ccbdb6256da15e6b0e7e95355e480c2301nd }
a78048ccbdb6256da15e6b0e7e95355e480c2301nd}
a78048ccbdb6256da15e6b0e7e95355e480c2301nd