VirtualBox

Changeset 5148 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Oct 3, 2007 12:05:25 PM (17 years ago)
Author:
vboxsync
Message:

2332: Registration feature:

Make one Registration Dialog allowed to be run in one time (for different COM-clients: VBoxSelector & VBoxConsole's).

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

Legend:

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

    r5140 r5148  
    186186    void onExitFullscreen();
    187187
     188    void onToggleRegMenuItem (bool aEnable);
     189
    188190private:
    189191
  • trunk/src/VBox/Frontends/VirtualBox/include/VBoxDefs.h

    r5128 r5148  
    133133        MachineRegisteredEventType,
    134134        ShowRegDlgEventType,
     135        ToggleRegMenuItemEvent,
    135136        SessionStateChangeEventType,
    136137        SnapshotEventType,
  • trunk/src/VBox/Frontends/VirtualBox/include/VBoxGlobal.h

    r5139 r5148  
    108108};
    109109
     110class VBoxToggleRegMenuItem : public QEvent
     111{
     112public:
     113    VBoxToggleRegMenuItem (bool aEnable)
     114        : QEvent ((QEvent::Type) VBoxDefs::ToggleRegMenuItemEvent)
     115        , mEnable (aEnable)
     116        {}
     117
     118    bool mEnable;
     119};
     120
    110121class VBoxSessionStateChangeEvent : public QEvent
    111122{
     
    376387    bool showVirtualBoxLicense();
    377388#endif
    378 
    379     void checkRegistration();
    380389
    381390    CSession openSession (const QUuid &id);
     
    507516    void sessionStateChanged (const VBoxSessionStateChangeEvent &e);
    508517    void snapshotChanged (const VBoxSnapshotEvent &e);
     518    void toggleRegMenuItem (bool aEnable);
    509519
    510520public slots:
     
    512522    bool openURL (const QString &aURL);
    513523
    514     void showRegistrationDialog();
     524    void checkRegistration (bool aForced = true);
    515525
    516526protected:
     
    518528    bool event (QEvent *e);
    519529    bool eventFilter (QObject *, QEvent *);
     530
     531    void showRegistrationDialog();
    520532
    521533private:
  • trunk/src/VBox/Frontends/VirtualBox/include/VBoxSelectorWnd.h

    r5140 r5148  
    103103    void snapshotChanged (const VBoxSnapshotEvent &e);
    104104
     105    void onToggleRegMenuItem (bool aEnable);
     106
    105107private:
    106108
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp

    r5140 r5148  
    378378#ifdef VBOX_WITH_REGISTRATION
    379379    helpRegisterAction->addTo (helpMenu);
     380    helpRegisterAction->setEnabled (vboxGlobal().virtualBox().
     381        GetExtraData (VBoxDefs::GUI_RegistrationDlgWinID).isEmpty());
    380382#endif
    381383    helpAboutAction->addTo( helpMenu );
     
    530532             &vboxProblem(), SLOT (showHelpWebDialog()));
    531533    connect (helpRegisterAction, SIGNAL (activated()),
    532              &vboxGlobal(), SLOT (showRegistrationDialog()));
     534             &vboxGlobal(), SLOT (checkRegistration()));
     535    connect (&vboxGlobal(), SIGNAL (toggleRegMenuItem (bool)),
     536             this, SLOT (onToggleRegMenuItem (bool)));
    533537    connect (helpAboutAction, SIGNAL (activated()),
    534538             &vboxProblem(), SLOT (showHelpAboutDialog()));
     
    10181022    console->setIgnoreMainwndResize (false);
    10191023    console->normalizeGeometry (true /* adjustPosition */);
     1024}
     1025
     1026void VBoxConsoleWnd::onToggleRegMenuItem (bool aEnable)
     1027{
     1028    helpRegisterAction->setEnabled (aEnable);
    10201029}
    10211030
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp

    r5139 r5148  
    131131public:
    132132
    133     VBoxCallback (VBoxGlobal &aGlobal) : global (aGlobal)
     133    VBoxCallback (VBoxGlobal &aGlobal) : global (aGlobal), mShowRegDlg (false)
    134134    {
    135135#if defined (Q_OS_WIN32)
     
    209209            if (sKey.startsWith ("GUI/"))
    210210            {
    211                 if (!sVal.isEmpty() &&
    212                     sKey == VBoxDefs::GUI_RegistrationDlgWinID)
     211                if (sKey == VBoxDefs::GUI_RegistrationDlgWinID)
    213212                {
    214                     if (sVal == QString ("%1")
    215                         .arg ((long)qApp->mainWidget()->winId()))
     213                    if (mShowRegDlg)
    216214                    {
    217                         *allowChange = TRUE;
    218                         QApplication::postEvent (&global, new VBoxShowRegDlgEvent());
     215                        if (sVal.isEmpty() ||
     216                            sVal == QString ("%1").arg ((long)qApp->mainWidget()->winId()))
     217                            *allowChange = TRUE;
     218                        else
     219                            *allowChange = FALSE;
    219220                    }
    220221                    else
    221                         *allowChange = FALSE;
     222                        *allowChange = TRUE;
    222223                    return S_OK;
    223224                }
     
    256257            if (sKey.startsWith ("GUI/"))
    257258            {
     259                if (sKey == VBoxDefs::GUI_RegistrationDlgWinID)
     260                {
     261                    if (sVal.isEmpty())
     262                    {
     263                        mShowRegDlg = false;
     264                        QApplication::postEvent (&global, new VBoxToggleRegMenuItem (true));
     265                    }
     266                    else if (sVal == QString ("%1").arg ((long)qApp->mainWidget()->winId()))
     267                    {
     268                        mShowRegDlg = true;
     269                        QApplication::postEvent (&global, new VBoxToggleRegMenuItem (true));
     270                        QApplication::postEvent (&global, new VBoxShowRegDlgEvent());
     271                    }
     272                    else
     273                        QApplication::postEvent (&global, new VBoxToggleRegMenuItem (false));
     274                }
     275
    258276                mutex.lock();
    259277                global.gset.setPublicProperty (sKey, sVal);
     
    329347    /** protects #OnExtraDataChange() */
    330348    QMutex mutex;
     349
     350    bool mShowRegDlg;
    331351
    332352#if defined (Q_OS_WIN32)
     
    16501670#endif
    16511671
    1652 void VBoxGlobal::checkRegistration()
     1672void VBoxGlobal::checkRegistration (bool aForced)
    16531673{
    16541674#ifdef VBOX_WITH_REGISTRATION
    1655     if (!VBoxRegistrationDlg::hasToBeShown())
     1675    if (!aForced && !VBoxRegistrationDlg::hasToBeShown())
    16561676        return;
    16571677
    1658     /* Store the ID of the main window to ensure that only one registration
    1659      * dialog is shown at a time. This operation will implicitly cause the
    1660      * dialog to show if it's not already shown. */
    1661     virtualBox().SetExtraData (VBoxDefs::GUI_RegistrationDlgWinID,
    1662                                QString ("%1").arg ((long) qApp->mainWidget()->winId()));
    1663 #endif
    1664 }
    1665 
    1666 void VBoxGlobal::showRegistrationDialog()
    1667 {
    1668 #ifdef VBOX_WITH_REGISTRATION
    16691678    if (mRegDlg)
    16701679    {
     
    16741683        mRegDlg->setActiveWindow();
    16751684    }
     1685    /* Store the ID of the main window to ensure that only one registration
     1686     * dialog is shown at a time. This operation will implicitly cause the
     1687     * dialog to show if it's not already shown. */
    16761688    else
     1689        virtualBox().SetExtraData (VBoxDefs::GUI_RegistrationDlgWinID,
     1690            QString ("%1").arg ((long) qApp->mainWidget()->winId()));
     1691#endif
     1692}
     1693
     1694void VBoxGlobal::showRegistrationDialog()
     1695{
     1696#ifdef VBOX_WITH_REGISTRATION
     1697    if (!mRegDlg)
    16771698    {
    16781699        /* Create new registration dialog */
     
    34963517            return true;
    34973518        }
     3519        case VBoxDefs::ToggleRegMenuItemEvent:
     3520        {
     3521            emit toggleRegMenuItem (((VBoxToggleRegMenuItem *)e)->mEnable);
     3522            return true;
     3523        }
    34983524        case VBoxDefs::SessionStateChangeEventType:
    34993525        {
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxSelectorWnd.cpp

    r5140 r5148  
    530530#ifdef VBOX_WITH_REGISTRATION
    531531    helpRegisterAction->addTo (helpMenu);
     532    helpRegisterAction->setEnabled (vboxGlobal().virtualBox().
     533        GetExtraData (VBoxDefs::GUI_RegistrationDlgWinID).isEmpty());
    532534#endif
    533535    helpAboutAction->addTo (helpMenu);
     
    591593             &vboxProblem(), SLOT (showHelpWebDialog()));
    592594    connect (helpRegisterAction, SIGNAL (activated()),
    593              &vboxGlobal(), SLOT (showRegistrationDialog()));
     595             &vboxGlobal(), SLOT (checkRegistration()));
     596    connect (&vboxGlobal(), SIGNAL (toggleRegMenuItem (bool)),
     597             this, SLOT (onToggleRegMenuItem (bool)));
    594598    connect (helpAboutAction, SIGNAL (activated()),
    595599             &vboxProblem(), SLOT (showHelpAboutDialog()));
     
    13861390}
    13871391
     1392void VBoxSelectorWnd::onToggleRegMenuItem (bool aEnable)
     1393{
     1394    helpRegisterAction->setEnabled (aEnable);
     1395}
     1396
    13881397#include "VBoxSelectorWnd.moc"
  • trunk/src/VBox/Frontends/VirtualBox/src/main.cpp

    r5139 r5148  
    234234                if (vboxGlobal().startMachine (vboxGlobal().managedVMUuid()))
    235235                {
    236                     vboxGlobal().checkRegistration();
     236                    vboxGlobal().checkRegistration (false);
    237237                    rc = a.exec();
    238238                }
     
    245245            {
    246246                a.setMainWidget (&vboxGlobal().selectorWnd());
    247                 vboxGlobal().checkRegistration();
     247                vboxGlobal().checkRegistration (false);
    248248                vboxGlobal().selectorWnd().show();
    249249                vboxGlobal().startEnumeratingMedia();
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