VirtualBox

Changeset 5022 in vbox for trunk/src


Ignore:
Timestamp:
Sep 25, 2007 1:56:26 PM (17 years ago)
Author:
vboxsync
Message:

First version of VirtualBox Registration Dialog implemented.
Non-modal dialog (which appears maximum 3 times if rejected and 1 time if accepted).
Confirm button inaccessible for 5 seconds after dialog startup.
User should input his name and correct email address to Confirm registration.
After that inner mechanism tries to connect to required *.php script performs handshake and registration.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk

    r4887 r5022  
    103103        include/VBoxConsoleView.h \
    104104        include/VBoxProblemReporter.h \
    105         include/VBoxDownloaderWgt.h
     105        include/VBoxDownloaderWgt.h \
     106        include/VBoxNetworkFramework.h
    106107
    107108# Sources containing local definitions of classes that use the Q_OBJECT macro
     
    167168        src/VBoxVMListBox.cpp \
    168169        src/VBoxFrameBuffer.cpp \
    169         src/HappyHttp.cpp
     170        src/HappyHttp.cpp \
     171        src/VBoxNetworkFramework.cpp
    170172
    171173ifeq ($(filter-out freebsd linux netbsd openbsd solaris,$(BUILD_TARGET)),) # X11
     
    189191src/HappyHttp.cpp_CXXFLAGS += -fexceptions
    190192src/VBoxDownloaderWgt.cpp_CXXFLAGS += -fexceptions
     193src/VBoxNetworkFramework.cpp_CXXFLAGS += -fexceptions
    191194endif
    192195src/HappyHttp.cpp_CXXFLAGS.linux += -O2
  • trunk/src/VBox/Frontends/VirtualBox/VBoxUI.pro

    r4944 r5022  
    3535        ui/VBoxAboutDlg.ui \
    3636        ui/VBoxVMFirstRunWzd.ui \
    37         ui/VBoxVMLogViewer.ui
     37        ui/VBoxVMLogViewer.ui \
     38        ui/VBoxRegistrationDlg.ui
    3839
    3940IMAGES  = images/tpixel.png \
  • trunk/src/VBox/Frontends/VirtualBox/include/VBoxDefs.h

    r4572 r5022  
    132132        MachineDataChangeEventType,
    133133        MachineRegisteredEventType,
     134        ShowRegDlgEventType,
    134135        SessionStateChangeEventType,
    135136        SnapshotEventType,
     
    163164    static const char* GUI_LicenseKey;
    164165#endif
     166    static const char* GUI_RegistrationTryLeft;
     167    static const char* GUI_RegistrationDlgWinID;
    165168};
    166169
  • trunk/src/VBox/Frontends/VirtualBox/include/VBoxGlobal.h

    r4572 r5022  
    100100};
    101101
     102class VBoxShowRegDlgEvent : public QEvent
     103{
     104public:
     105    VBoxShowRegDlgEvent()
     106        : QEvent ((QEvent::Type) VBoxDefs::ShowRegDlgEventType)
     107        {}
     108};
     109
    102110class VBoxSessionStateChangeEvent : public QEvent
    103111{
     
    136144class VBoxSelectorWnd;
    137145class VBoxConsoleWnd;
     146class VBoxRegistrationDlg;
    138147
    139148class VBoxGlobal : public QObject
     
    367376    bool showVirtualBoxLicense();
    368377#endif
     378
     379    void showRegistrationDialog();
    369380
    370381    CSession openSession (const QUuid &id);
     
    519530    VBoxSelectorWnd *selector_wnd;
    520531    VBoxConsoleWnd *console_wnd;
     532
     533    VBoxRegistrationDlg *mRegDlg;
    521534
    522535    QUuid vmUuid;
  • trunk/src/VBox/Frontends/VirtualBox/include/VBoxProblemReporter.h

    r4572 r5022  
    209209    void warnAboutNewAdditions (QWidget *, const QString &, const QString &);
    210210
     211    void cannotConnectRegister (QWidget *aParent,
     212                                const QString &aURL,
     213                                const QString &aReason);
     214    void showRegisterResult (QWidget *aParent,
     215                             const QString &aResult);
     216
    211217    bool remindAboutInputCapture();
    212218    bool remindAboutAutoCapture();
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxDefs.cpp

    r4572 r5022  
    3232const char* VBoxDefs::GUI_LicenseKey = "GUI/LicenseAgreed";
    3333#endif
    34 
     34const char* VBoxDefs::GUI_RegistrationTryLeft = "GUI/RegistrationTryLeft";
     35const char* VBoxDefs::GUI_RegistrationDlgWinID = "GUI/RegistrationDlgWinID";
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp

    r4862 r5022  
    2424#include "VBoxProblemReporter.h"
    2525#include "QIHotKeyEdit.h"
     26#include "VBoxRegistrationDlg.h"
    2627
    2728#include <qapplication.h>
     
    204205            if (sKey.startsWith ("GUI/"))
    205206            {
     207                if (!sVal.isEmpty() &&
     208                    sKey == VBoxDefs::GUI_RegistrationDlgWinID)
     209                {
     210                    if (sVal == QString ("%1")
     211                        .arg (qApp->mainWidget()->winId()))
     212                    {
     213                        *allowChange = TRUE;
     214                        QApplication::postEvent (&global, new VBoxShowRegDlgEvent());
     215                    }
     216                    else
     217                        *allowChange = FALSE;
     218                    return S_OK;
     219                }
     220
    206221                /* try to set the global setting to check its syntax */
    207222                VBoxGlobalSettings gs (false /* non-null */);
     
    654669    : valid (false)
    655670    , selector_wnd (0), console_wnd (0)
     671    , mRegDlg (0)
    656672    , media_enum_thread (0)
    657673    , verString ("1.0")
     
    16271643}
    16281644#endif
     1645
     1646void VBoxGlobal::showRegistrationDialog()
     1647{
     1648    /* check if the registration already passed */
     1649    if (virtualBox().GetExtraData (VBoxDefs::GUI_RegistrationTryLeft) == "0")
     1650        return;
     1651
     1652    /* store the winid of main app wgt to ensure only one reg dlg running */
     1653    virtualBox().SetExtraData (VBoxDefs::GUI_RegistrationDlgWinID,
     1654                               QString ("%1").arg (qApp->mainWidget()->winId()));
     1655}
    16291656
    16301657/**
     
    34283455            return true;
    34293456        }
     3457        case VBoxDefs::ShowRegDlgEventType:
     3458        {
     3459            /* show unique registration dialog */
     3460            if (!mRegDlg)
     3461            {
     3462                VBoxRegistrationDlg *dlg = new VBoxRegistrationDlg();
     3463                dlg->setup (&mRegDlg, "http://www.innotek.de/register762.php");
     3464                Assert (dlg == mRegDlg);
     3465                mRegDlg->show();
     3466            }
     3467            return true;
     3468        }
    34303469        case VBoxDefs::SessionStateChangeEventType:
    34313470        {
     
    37193758    if (selector_wnd)
    37203759        delete selector_wnd;
     3760    if (mRegDlg)
     3761        delete mRegDlg;
    37213762
    37223763    /* ensure CGuestOSType objects are no longer used */
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxProblemReporter.cpp

    r4740 r5022  
    14041404}
    14051405
     1406void VBoxProblemReporter::cannotConnectRegister (QWidget *aParent,
     1407                                                 const QString &aURL,
     1408                                                 const QString &aReason)
     1409{
     1410    message (aParent, Error,
     1411             tr ("<p>Failed to connect to the VirtualBox network "
     1412                 "registration form "
     1413                 "<nobr><a href=\"%1\">%2</a>.</nobr></p><p>%3</p>")
     1414                 .arg (aURL).arg (aURL).arg (aReason));
     1415}
     1416
     1417void VBoxProblemReporter::showRegisterResult (QWidget *aParent,
     1418                                              const QString &aResult)
     1419{
     1420    aResult == "OK" ?
     1421        message (aParent, Info,
     1422                 tr ("<p><nobr>You have successfully registered with innotek. "
     1423                     "Thank you for registration.</nobr></p>")) :
     1424        message (aParent, Error,
     1425                 tr ("<p>Registration failed (%1)</p>").arg (aResult));
     1426}
     1427
    14061428/** @return false if the dialog wasn't actually shown (i.e. it was autoconfirmed) */
    14071429bool VBoxProblemReporter::remindAboutInputCapture()
  • trunk/src/VBox/Frontends/VirtualBox/src/main.cpp

    r4880 r5022  
    231231            if (vboxGlobal().isVMConsoleProcess())
    232232            {
    233                 a.setMainWidget( &vboxGlobal().consoleWnd());
     233                a.setMainWidget (&vboxGlobal().consoleWnd());
    234234                if (vboxGlobal().startMachine (vboxGlobal().managedVMUuid()))
     235                {
     236                    vboxGlobal().showRegistrationDialog();
    235237                    rc = a.exec();
     238                }
    236239            }
    237240            else if (noSelector)
     
    242245            {
    243246                a.setMainWidget (&vboxGlobal().selectorWnd());
     247                vboxGlobal().showRegistrationDialog();
    244248                vboxGlobal().selectorWnd().show();
    245249                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