VirtualBox

Ignore:
Timestamp:
Jul 11, 2008 10:50:38 AM (16 years ago)
Author:
vboxsync
Message:

Fe/Qt4: '3003: Auto-update: New-version notifier'

  1. Settings moved to Global Settings / Update page.
  2. New Version Notifier now can be run only in background mode.
Location:
trunk/src/VBox/Frontends/VirtualBox4
Files:
12 edited

Legend:

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

    r10488 r10515  
    572572        include/VBoxGLSettingsGeneral.h \
    573573        include/VBoxGLSettingsInput.h \
     574        include/VBoxGLSettingsUpdate.h \
    574575        include/VBoxGLSettingsLanguage.h \
    575576        include/VBoxSettingsDialog.h \
     
    642643        src/VBoxGLSettingsGeneral.cpp \
    643644        src/VBoxGLSettingsInput.cpp \
     645        src/VBoxGLSettingsUpdate.cpp \
    644646        src/VBoxGLSettingsLanguage.cpp \
    645647        src/VBoxSettingsDialog.cpp \
  • trunk/src/VBox/Frontends/VirtualBox4/VBoxUI.pro

    r10439 r10515  
    5252    ui/VBoxGLSettingsGeneral.ui \
    5353    ui/VBoxGLSettingsInput.ui \
     54    ui/VBoxGLSettingsUpdate.ui \
    5455    ui/VBoxGLSettingsLanguage.ui
    5556
  • trunk/src/VBox/Frontends/VirtualBox4/include/VBoxProblemReporter.h

    r10439 r10515  
    267267                             const QString &aResult);
    268268
    269     void showUpdateResult (QWidget *aParent,
    270                            const QString &aVersion,
    271                            const QString &aLink);
     269    void showUpdateSuccess (QWidget *aParent,
     270                            const QString &aVersion,
     271                            const QString &aLink);
     272    void showUpdateFailure (QWidget *aParent,
     273                            const QString &aReason);
     274    void showUpdateNotFound (QWidget *aParent);
    272275
    273276    bool confirmInputCapture (bool *aAutoConfirmed = NULL);
  • trunk/src/VBox/Frontends/VirtualBox4/include/VBoxSettingsDialogSpecific.h

    r10474 r10515  
    4444        GeneralId = 0,
    4545        InputId,
     46        UpdateId,
    4647        LanguageId,
    4748        USBId
  • trunk/src/VBox/Frontends/VirtualBox4/include/VBoxUpdateDlg.h

    r10459 r10515  
    3131/* Qt includes */
    3232#include <QUrl>
     33#include <QDate>
    3334
    3435class VBoxNetworkFramework;
     
    5859public:
    5960
     61    enum
     62    {
     63        NeverCheck = -2,
     64        AutoCheck  = -3
     65    };
     66
    6067    static void populate();
    6168    static QStringList list();
    6269
    63     VBoxUpdateData (const QString &aData, bool aEncode);
     70    VBoxUpdateData (const QString &aData);
     71    VBoxUpdateData (int aIndex);
    6472
    6573    bool isNecessary();
    6674    bool isAutomatic();
    6775
    68     const QString& data() const { return mData; }
    69     int index() { return mIndex; }
     76    QString data() const;
     77    int index() const;
     78    QString date() const;
    7079
    7180private:
    7281
    7382    /* Private functions */
    74     int decode (const QString &aData) const;
    75     QString encode (int aIndex) const;
     83    void decode (const QString &aData);
     84    void encode (int aIndex);
    7685
    7786    /* Private variables */
     
    8089    QString mData;
    8190    int mIndex;
     91    QDate mDate;
    8292};
    8393
     
    92102    static bool isAutomatic();
    93103
    94     VBoxUpdateDlg (VBoxUpdateDlg **aSelf, QWidget *aParent = 0,
    95                    Qt::WindowFlags aFlags = 0);
     104    VBoxUpdateDlg (VBoxUpdateDlg **aSelf, bool aForceRun,
     105                   QWidget *aParent = 0, Qt::WindowFlags aFlags = 0);
    96106   ~VBoxUpdateDlg();
    97107
     
    99109
    100110    void accept();
    101     void reject();
    102111    void search();
    103112
     
    109118
    110119    void processTimeout();
    111     void onToggleFirstPage();
    112     void onToggleSecondPage();
    113120
    114121    void onNetBegin (int aStatus);
     
    130137    QTimer *mTimeout;
    131138    QUrl mUrl;
     139    bool mForceRun;
    132140    bool mSuicide;
    133141};
  • trunk/src/VBox/Frontends/VirtualBox4/src/VBoxConsoleWnd.cpp

    r10462 r10515  
    14951495    vmAutoresizeMenu->setToolTip (tr ("Auto-resize Guest Display",
    14961496                                      "enable/disable..."));
    1497     vmAutoresizeGuestAction->setText (VBoxGlobal::insertKeyToActionText (tr ("Auto-resize &Guest Display"), 
     1497    vmAutoresizeGuestAction->setText (VBoxGlobal::insertKeyToActionText (tr ("Auto-resize &Guest Display"),
    14981498                                                                         "G"));
    14991499    vmAutoresizeGuestAction->setStatusTip (
     
    15911591        tr ("Open VirtualBox registration form"));
    15921592
    1593     helpUpdateAction->setText (tr ("&Update VirtualBox..."));
     1593    helpUpdateAction->setText (tr ("C&heck for a new version..."));
    15941594    helpUpdateAction->setStatusTip (
    1595         tr ("Open VirtualBox New Version Notifier"));
     1595        tr ("Check for a new VirtualBox version"));
    15961596
    15971597    helpAboutAction->setText (tr ("&About VirtualBox..."));
  • trunk/src/VBox/Frontends/VirtualBox4/src/VBoxGlobal.cpp

    r10439 r10515  
    39383938{
    39393939    bool isNecessary = VBoxUpdateDlg::isNecessary();
    3940     bool isAutomatic = VBoxUpdateDlg::isAutomatic();
    39413940
    39423941    if (!aForce && !isNecessary)
     
    39663965        {
    39673966            /* We've got the "mutex", create a new update dialog */
    3968             VBoxUpdateDlg *dlg = new VBoxUpdateDlg (&mUpdDlg, 0);
     3967            VBoxUpdateDlg *dlg = new VBoxUpdateDlg (&mUpdDlg, aForce, 0);
    39693968            dlg->setAttribute (Qt::WA_DeleteOnClose);
    39703969            Assert (dlg == mUpdDlg);
    39713970
    3972             if (!aForce && isAutomatic)
    3973                 mUpdDlg->search();
    3974             else
    3975                 mUpdDlg->show();
     3971            /* Update dialog always in background mode for now.
     3972             * if (!aForce && isAutomatic) */
     3973            mUpdDlg->search();
     3974            /* else mUpdDlg->show(); */
    39763975        }
    39773976    }
  • trunk/src/VBox/Frontends/VirtualBox4/src/VBoxProblemReporter.cpp

    r10439 r10515  
    15441544}
    15451545
    1546 void VBoxProblemReporter::showUpdateResult (QWidget *aParent,
    1547                                             const QString &aVersion,
    1548                                             const QString &aLink)
     1546void VBoxProblemReporter::showUpdateSuccess (QWidget *aParent,
     1547                                             const QString &aVersion,
     1548                                             const QString &aLink)
    15491549{
    15501550    message (aParent, Info,
     
    15551555                 "<p><a href=%2>%3</a></p>")
    15561556                 .arg (aVersion, aLink, aLink));
     1557}
     1558
     1559void VBoxProblemReporter::showUpdateFailure (QWidget *aParent,
     1560                                             const QString &aReason)
     1561{
     1562    message (aParent, Info,
     1563             tr ("<p>Unable to obtain new version information "
     1564                 "due to network error:</p><p><b>%1</b></p>")
     1565                 .arg (aReason));
     1566}
     1567
     1568void VBoxProblemReporter::showUpdateNotFound (QWidget *aParent)
     1569{
     1570    message (aParent, Info,
     1571             tr ("You have already installed the latest VirtualBox "
     1572                 "version, there is no newer version currently available."));
    15571573}
    15581574
  • trunk/src/VBox/Frontends/VirtualBox4/src/VBoxSelectorWnd.cpp

    r10439 r10515  
    12191219        tr ("Open VirtualBox registration form"));
    12201220
    1221     helpUpdateAction->setText (tr ("&Update VirtualBox..."));
     1221    helpUpdateAction->setText (tr ("C&heck for a new version..."));
    12221222    helpUpdateAction->setStatusTip (
    1223         tr ("Open VirtualBox New Version Notifier"));
     1223        tr ("Check for a new VirtualBox version"));
    12241224
    12251225    helpAboutAction->setText (tr ("&About VirtualBox..."));
  • trunk/src/VBox/Frontends/VirtualBox4/src/VBoxSettingsDialogSpecific.cpp

    r10475 r10515  
    3131#include "VBoxGLSettingsGeneral.h"
    3232#include "VBoxGLSettingsInput.h"
     33#include "VBoxGLSettingsUpdate.h"
    3334#include "VBoxGLSettingsLanguage.h"
    3435
     
    6061    attachPage (new VBoxGLSettingsInput());
    6162
     63    attachPage (new VBoxGLSettingsUpdate());
     64
    6265    attachPage (new VBoxGLSettingsLanguage());
    6366
     
    121124    mSelector->addItem (VBoxGlobal::iconSet (":/hostkey_16px.png"),
    122125                        tr ("Input"), InputId, "#input");
     126
     127    /* Update page */
     128    mSelector->addItem (VBoxGlobal::iconSet (":/refresh_16px.png"),
     129                        tr ("Update"), UpdateId, "#update");
    123130
    124131    /* Language page */
     
    134141    /* Translate the selector */
    135142    mSelector->polish();
    136    
     143
    137144    VBoxSettingsDialog::retranslateUi();
    138145
     
    382389    /* Translate the selector */
    383390    mSelector->polish();
    384    
     391
    385392    VBoxSettingsDialog::retranslateUi();
    386393
  • trunk/src/VBox/Frontends/VirtualBox4/src/VBoxUpdateDlg.cpp

    r10459 r10515  
    2929/* Qt includes */
    3030#include <QTimer>
    31 #include <QDate>
    3231
    3332/* Time to auto-disconnect if no network answer received. */
    3433static const int MaxWaitTime = 20000;
    35 /* Inner index number used as 'never' show identifier. */
    36 static const int IndexNever = -1;
    37 /* Inner index number used as 'auto' search identifier. */
    38 static const int IndexAuto = -2;
    3934
    4035
     
    8782
    8883    /* Separately retranslate each day */
    89     mDayList << UpdateDay (VBoxUpdateDlg::tr ("in 1 day"),  "1 d");
    90     mDayList << UpdateDay (VBoxUpdateDlg::tr ("in 2 days"), "2 d");
    91     mDayList << UpdateDay (VBoxUpdateDlg::tr ("in 3 days"), "3 d");
    92     mDayList << UpdateDay (VBoxUpdateDlg::tr ("in 4 days"), "4 d");
    93     mDayList << UpdateDay (VBoxUpdateDlg::tr ("in 5 days"), "5 d");
    94     mDayList << UpdateDay (VBoxUpdateDlg::tr ("in 6 days"), "6 d");
     84    mDayList << UpdateDay (VBoxUpdateDlg::tr ("1 day"),  "1 d");
     85    mDayList << UpdateDay (VBoxUpdateDlg::tr ("2 days"), "2 d");
     86    mDayList << UpdateDay (VBoxUpdateDlg::tr ("3 days"), "3 d");
     87    mDayList << UpdateDay (VBoxUpdateDlg::tr ("4 days"), "4 d");
     88    mDayList << UpdateDay (VBoxUpdateDlg::tr ("5 days"), "5 d");
     89    mDayList << UpdateDay (VBoxUpdateDlg::tr ("6 days"), "6 d");
    9590
    9691    /* Separately retranslate each week */
    97     mDayList << UpdateDay (VBoxUpdateDlg::tr ("in 1 week"),  "1 w");
    98     mDayList << UpdateDay (VBoxUpdateDlg::tr ("in 2 weeks"), "2 w");
    99     mDayList << UpdateDay (VBoxUpdateDlg::tr ("in 3 weeks"), "3 w");
     92    mDayList << UpdateDay (VBoxUpdateDlg::tr ("1 week"),  "1 w");
     93    mDayList << UpdateDay (VBoxUpdateDlg::tr ("2 weeks"), "2 w");
     94    mDayList << UpdateDay (VBoxUpdateDlg::tr ("3 weeks"), "3 w");
    10095
    10196    /* Separately retranslate each month */
    102     mDayList << UpdateDay (VBoxUpdateDlg::tr ("in 1 month"), "1 m");
    103 
    104     /* Retranslate 'never' */
    105     mDayList << UpdateDay (VBoxUpdateDlg::tr ("never"), "never");
     97    mDayList << UpdateDay (VBoxUpdateDlg::tr ("1 month"), "1 m");
    10698}
    10799
     
    114106}
    115107
    116 VBoxUpdateData::VBoxUpdateData (const QString &aData, bool aEncode)
    117 {
    118     if (aEncode)
    119     {
    120         if (aData.isNull())
    121             mIndex = IndexAuto;
    122         else
     108VBoxUpdateData::VBoxUpdateData (const QString &aData)
     109    : mData (aData)
     110    , mIndex (-1)
     111{
     112    decode (mData);
     113}
     114
     115VBoxUpdateData::VBoxUpdateData (int aIndex)
     116    : mIndex (aIndex)
     117{
     118    encode (mIndex);
     119}
     120
     121bool VBoxUpdateData::isNecessary()
     122{
     123    return mIndex != NeverCheck &&
     124           QDate::currentDate() >= mDate;
     125}
     126
     127bool VBoxUpdateData::isAutomatic()
     128{
     129    return mIndex == AutoCheck;
     130}
     131
     132QString VBoxUpdateData::data() const
     133{
     134    return mData;
     135}
     136
     137int VBoxUpdateData::index() const
     138{
     139    return mIndex;
     140}
     141
     142QString VBoxUpdateData::date() const
     143{
     144    return mIndex == NeverCheck ? VBoxUpdateDlg::tr ("never") :
     145           mIndex == AutoCheck ? VBoxUpdateDlg::tr ("on startup") :
     146           mDate.toString ("yyyy.MM.dd");
     147}
     148
     149void VBoxUpdateData::decode (const QString &aData)
     150{
     151    /* Parse standard values */
     152    if (aData == "auto")
     153        mIndex = AutoCheck;
     154    else if (aData == "never")
     155        mIndex = NeverCheck;
     156    /* Parse other values */
     157    else
     158    {
     159        QStringList parser (aData.split (", ", QString::SkipEmptyParts));
     160        if (parser.size() == 2)
    123161        {
    124             mIndex = mDayList.indexOf (UpdateDay (aData, QString::null));
    125             Assert (mIndex >= 0);
     162            /* Parse 'remind' value */
     163            if (mDayList.isEmpty())
     164                populate();
     165            mIndex = mDayList.indexOf (UpdateDay (QString::null, parser [0]));
     166
     167            /* Parse 'date' value */
     168            mDate = QDate::fromString (parser [1], Qt::ISODate);
    126169        }
    127170
    128         if (mIndex >= 0 && mDayList [mIndex].key == "never")
    129             mIndex = IndexNever;
    130 
    131         mData = encode (mIndex);
    132     }
    133     else
    134     {
    135         mData = aData;
    136         mIndex = decode (mData);
    137     }
    138 }
    139 
    140 bool VBoxUpdateData::isNecessary()
    141 {
    142     return mIndex != IndexNever;
    143 }
    144 
    145 bool VBoxUpdateData::isAutomatic()
    146 {
    147     return mIndex == IndexAuto;
    148 }
    149 
    150 int VBoxUpdateData::decode (const QString &aData) const
    151 {
    152     int result = 0;
    153 
    154     if (aData == "auto")
    155         result = IndexAuto;
    156     else if (aData == "never")
    157         result = IndexNever;
    158     else
    159     {
    160         QDate date = QDate::fromString (aData);
    161         if (date.isValid() && QDate::currentDate() < date)
    162             result = IndexNever;
    163     }
    164 
    165     return result;
    166 }
    167 
    168 QString VBoxUpdateData::encode (int aIndex) const
    169 {
    170     QString result;
    171 
    172     if (aIndex == IndexAuto)
    173         result = "auto";
    174     else if (aIndex == IndexNever)
    175         result = "never";
    176     else
    177     {
    178         QDate date = QDate::currentDate();
    179         QString remindTime = mDayList [aIndex].key;
    180         QStringList parser = remindTime.split (' ');
     171        /* Incorrect values handles as 'once per day' mode.
     172         * This is the default value if there is no such extra-data. */
     173        if (mIndex == -1 || !mDate.isValid())
     174        {
     175            mIndex = 0;
     176            mDate = QDate::currentDate();
     177        }
     178    }
     179}
     180
     181void VBoxUpdateData::encode (int aIndex)
     182{
     183    /* Encode standard values */
     184    if (aIndex == AutoCheck)
     185        mData = "auto";
     186    else if (aIndex == NeverCheck)
     187        mData = "never";
     188    /* Encode other values */
     189    else
     190    {
     191        /* Encode 'remind' value */
     192        if (mDayList.isEmpty())
     193            populate();
     194        QString remindPeriod = mDayList [aIndex].key;
     195
     196        /* Encode 'date' value */
     197        mDate = QDate::currentDate();
     198        QStringList parser (remindPeriod.split (' '));
    181199        if (parser [1] == "d")
    182             date = date.addDays (parser [0].toInt());
     200            mDate = mDate.addDays (parser [0].toInt());
    183201        else if (parser [1] == "w")
    184             date = date.addDays (parser [0].toInt() * 7);
     202            mDate = mDate.addDays (parser [0].toInt() * 7);
    185203        else if (parser [1] == "m")
    186             date = date.addMonths (parser [0].toInt());
    187         result = date.toString();
    188     }
    189 
    190     return result;
     204            mDate = mDate.addMonths (parser [0].toInt());
     205        QString remindDate = mDate.toString (Qt::ISODate);
     206
     207        /* Composite mData */
     208        mData = QString ("%1, %2").arg (remindPeriod, remindDate);
     209    }
    191210}
    192211
     
    196215{
    197216    VBoxUpdateData data (vboxGlobal().virtualBox().
    198         GetExtraData (VBoxDefs::GUI_UpdateDate), false);
     217        GetExtraData (VBoxDefs::GUI_UpdateDate));
    199218
    200219    return data.isNecessary();
     
    204223{
    205224    VBoxUpdateData data (vboxGlobal().virtualBox().
    206         GetExtraData (VBoxDefs::GUI_UpdateDate), false);
     225        GetExtraData (VBoxDefs::GUI_UpdateDate));
    207226
    208227    return data.isAutomatic();
    209228}
    210229
    211 VBoxUpdateDlg::VBoxUpdateDlg (VBoxUpdateDlg **aSelf,
    212                               QWidget *aParent,
    213                               Qt::WindowFlags aFlags)
     230VBoxUpdateDlg::VBoxUpdateDlg (VBoxUpdateDlg **aSelf, bool aForceRun,
     231                              QWidget *aParent, Qt::WindowFlags aFlags)
    214232    : QIWithRetranslateUI2<QIAbstractWizard> (aParent, aFlags)
    215233    , mSelf (aSelf)
     
    217235    , mTimeout (new QTimer (this))
    218236    , mUrl ("http://www.virtualbox.org/download/latest_version")
     237    , mForceRun (aForceRun)
    219238    , mSuicide (false)
    220239{
     
    233252    /* Setup other connections */
    234253    connect (mTimeout, SIGNAL (timeout()), this, SLOT (processTimeout()));
    235     connect (mRbCheck, SIGNAL (toggled (bool)), this, SLOT (onToggleFirstPage()));
    236     connect (mRbRemind, SIGNAL (toggled (bool)), this, SLOT (onToggleFirstPage()));
    237     connect (mRbAutoCheck, SIGNAL (toggled (bool)), this, SLOT (onToggleSecondPage()));
    238     connect (mRbRecheck, SIGNAL (toggled (bool)), this, SLOT (onToggleSecondPage()));
     254    connect (mBtnCheck, SIGNAL (clicked()), this, SLOT (search()));
    239255
    240256    /* Initialize wizard hdr */
     
    242258
    243259    /* Setup initial condition */
    244     onToggleFirstPage();
    245     onToggleSecondPage();
    246 
    247260    mPbCheck->setMinimumWidth (mLogoUpdate->width() +
    248261                               mLogoUpdate->frameWidth() * 2);
     
    272285void VBoxUpdateDlg::accept()
    273286{
    274     if (mPageStack->currentWidget() == mPageUpdate)
    275     {
    276         vboxGlobal().virtualBox().SetExtraData (VBoxDefs::GUI_UpdateDate,
    277             VBoxUpdateData (mCbRemindTime->currentText(), true).data());
    278     } else
    279     if (mPageStack->currentWidget() == mPageFinish)
    280     {
    281         if (mRbAutoCheck->isChecked())
    282             vboxGlobal().virtualBox().SetExtraData (VBoxDefs::GUI_UpdateDate,
    283                 VBoxUpdateData (QString::null, true).data());
    284         else
    285             vboxGlobal().virtualBox().SetExtraData (VBoxDefs::GUI_UpdateDate,
    286                 VBoxUpdateData (mCbRecheckTime->currentText(), true).data());
    287     } else
    288     Assert (0);
     287    /* Recalculate new update data */
     288    VBoxUpdateData oldData (vboxGlobal().virtualBox().
     289        GetExtraData (VBoxDefs::GUI_UpdateDate));
     290    VBoxUpdateData newData (oldData.index());
     291    vboxGlobal().virtualBox().SetExtraData (VBoxDefs::GUI_UpdateDate,
     292                                            newData.data());
    289293
    290294    QIAbstractWizard::accept();
    291 }
    292 
    293 void VBoxUpdateDlg::reject()
    294 {
    295     vboxGlobal().virtualBox().SetExtraData (VBoxDefs::GUI_UpdateDate,
    296         VBoxUpdateData (VBoxUpdateData::list() [2], true).data());
    297 
    298     QIAbstractWizard::reject();
    299295}
    300296
     
    322318    /* Translate uic generated strings */
    323319    Ui::VBoxUpdateDlg::retranslateUi (this);
    324 
    325     int ci1 = mCbRemindTime->currentIndex();
    326     int ci2 = mCbRecheckTime->currentIndex();
    327 
    328     mCbRemindTime->clear();
    329     mCbRecheckTime->clear();
    330 
    331     VBoxUpdateData::populate();
    332     mCbRemindTime->insertItems (0, VBoxUpdateData::list());
    333     mCbRecheckTime->insertItems (0, VBoxUpdateData::list());
    334 
    335     mCbRemindTime->setCurrentIndex (ci1 == -1 ? 0 : ci1);
    336     mCbRecheckTime->setCurrentIndex (ci2 == -1 ? 0 : ci2);
    337320}
    338321
     
    340323{
    341324    searchAbort (tr ("Connection timed out."));
    342 }
    343 
    344 void VBoxUpdateDlg::onToggleFirstPage()
    345 {
    346     disconnect (mBtnConfirm, SIGNAL (clicked()), 0, 0);
    347     if (mRbCheck->isChecked())
    348         connect (mBtnConfirm, SIGNAL (clicked()), this, SLOT (search()));
    349     else
    350         connect (mBtnConfirm, SIGNAL (clicked()), this, SLOT (accept()));
    351 
    352     mCbRemindTime->setEnabled (mRbRemind->isChecked());
    353 }
    354 
    355 void VBoxUpdateDlg::onToggleSecondPage()
    356 {
    357     mCbRecheckTime->setEnabled (mRbRecheck->isChecked());
    358325}
    359326
     
    396363{
    397364    if (mPageStack->currentWidget() == mPageUpdate)
    398         mRbCheck->isChecked() ? mRbCheck->setFocus() :
    399                                 mRbRemind->setFocus();
    400     else
    401         mRbAutoCheck->isChecked() ? mRbAutoCheck->setFocus() :
    402                                     mRbRecheck->setFocus();
     365        mBtnCheck->setFocus();
     366    else
     367        mBtnFinish->setFocus();
    403368}
    404369
     
    415380    {
    416381        /* For background update */
    417         mPageStack->setCurrentIndex (1);
     382        if (mForceRun)
     383            vboxProblem().showUpdateFailure (this, aReason);
    418384        QTimer::singleShot (0, this, SLOT (accept()));
    419385    }
     
    434400    QStringList list = aFullList.split ("\n", QString::SkipEmptyParts);
    435401
    436 //  gcc-3.2 cannot grok this expression for some reason
    437 //  QString latestVersion (QString (list [0]).remove (QRegExp ("Version: ")));
    438     QString latestVersion = ((QString)(list [0])).remove (QRegExp ("Version: "));
     402    QString latestVersion (list [0]);
     403    latestVersion.remove (QRegExp ("Version: "));
    439404    QString currentVersion (vboxGlobal().virtualBox().GetVersion());
    440405    VBoxVersion cv (currentVersion);
     
    454419                {
    455420                    /* For background update */
    456                     vboxProblem().showUpdateResult (this,
     421                    vboxProblem().showUpdateSuccess (this,
    457422                        lv.toString(), platformInfo [1]);
    458                     mPageStack->setCurrentIndex (1);
    459423                    QTimer::singleShot (0, this, SLOT (accept()));
    460424                }
     
    476440    {
    477441        /* For background update */
    478         mPageStack->setCurrentIndex (1);
     442        if (mForceRun)
     443            vboxProblem().showUpdateNotFound (this);
    479444        QTimer::singleShot (0, this, SLOT (accept()));
    480445    }
  • trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxUpdateDlg.ui

    r10461 r10515  
    2323    <x>0</x>
    2424    <y>0</y>
    25     <width>636</width>
    26     <height>519</height>
     25    <width>578</width>
     26    <height>417</height>
    2727   </rect>
    2828  </property>
     
    6464         </property>
    6565         <property name="text" >
    66           <string>Welcome to the VirtualBox New Version Notifier!</string>
     66          <string>Check for a new version</string>
    6767         </property>
    6868        </widget>
     
    113113             </property>
    114114             <property name="text" >
    115               <string>&lt;p>VirtualBox can now search for the latest version available for downloading. Will you let VirtualBox to do this?&lt;/p>&lt;p>You can make VirtualBox look for the newer version now by selecting "Check for the new version available" or ask VirtualBox remind you about this in some period of time by selecting "Remind me about it" and choosing the desired period from the corresponding combo-box.&lt;/p>&lt;p>You can also run VirtualBox New Version Notifier anytime from the application Help menu.&lt;/p></string>
     115              <string>&lt;p>VirtualBox can check the latest version available for downloading. Will you let VirtualBox to do this now?&lt;/p>&lt;p>You can make VirtualBox look for the newer version now by pressing &lt;b>Check&lt;/b> button or postpone it for then next time by pressing &lt;b>Cancel&lt;/b>.&lt;/p>&lt;p>You can run VirtualBox New Version Notifier anytime from the application Help menu by activating &lt;b>'Check for a new version...'&lt;/b> action.&lt;/p></string>
    116116             </property>
    117117             <property name="wordWrap" >
     
    136136            </spacer>
    137137           </item>
    138            <item>
    139             <widget class="QRadioButton" name="mRbCheck" >
    140              <property name="text" >
    141               <string>&amp;Check for the new version available</string>
    142              </property>
    143              <property name="checked" >
    144               <bool>true</bool>
    145              </property>
    146             </widget>
    147            </item>
    148            <item>
    149             <widget class="QRadioButton" name="mRbRemind" >
    150              <property name="text" >
    151               <string>&amp;Remind me about it</string>
    152              </property>
    153             </widget>
    154            </item>
    155            <item>
    156             <layout class="QHBoxLayout" >
    157              <property name="spacing" >
    158               <number>0</number>
    159              </property>
    160              <item>
    161               <spacer>
    162                <property name="orientation" >
    163                 <enum>Qt::Horizontal</enum>
    164                </property>
    165                <property name="sizeType" >
    166                 <enum>QSizePolicy::Fixed</enum>
    167                </property>
    168                <property name="sizeHint" >
    169                 <size>
    170                  <width>16</width>
    171                  <height>10</height>
    172                 </size>
    173                </property>
    174               </spacer>
    175              </item>
    176              <item>
    177               <widget class="QComboBox" name="mCbRemindTime" />
    178              </item>
    179              <item>
    180               <spacer>
    181                <property name="orientation" >
    182                 <enum>Qt::Horizontal</enum>
    183                </property>
    184                <property name="sizeHint" >
    185                 <size>
    186                  <width>0</width>
    187                  <height>10</height>
    188                 </size>
    189                </property>
    190               </spacer>
    191              </item>
    192             </layout>
    193            </item>
    194138          </layout>
    195139         </item>
     
    241185         </item>
    242186         <item>
    243           <widget class="QPushButton" name="mBtnConfirm" >
     187          <widget class="QPushButton" name="mBtnCheck" >
    244188           <property name="text" >
    245             <string>&amp;Ok</string>
     189            <string>Chec&amp;k</string>
    246190           </property>
    247191           <property name="default" >
    248192            <bool>true</bool>
     193           </property>
     194          </widget>
     195         </item>
     196         <item>
     197          <spacer>
     198           <property name="orientation" >
     199            <enum>Qt::Horizontal</enum>
     200           </property>
     201           <property name="sizeType" >
     202            <enum>QSizePolicy::Fixed</enum>
     203           </property>
     204           <property name="sizeHint" >
     205            <size>
     206             <width>5</width>
     207             <height>0</height>
     208            </size>
     209           </property>
     210          </spacer>
     211         </item>
     212         <item>
     213          <widget class="QPushButton" name="mBtnCancel" >
     214           <property name="text" >
     215            <string>&amp;Cancel</string>
    249216           </property>
    250217          </widget>
     
    267234         </property>
    268235         <property name="text" >
    269           <string>Search Results</string>
     236          <string>Check Results</string>
    270237         </property>
    271238        </widget>
     
    372339              </widget>
    373340             </item>
    374              <item>
    375               <widget class="QILabel" name="mTextFinishInfo" >
    376                <property name="sizePolicy" >
    377                 <sizepolicy vsizetype="Minimum" hsizetype="Minimum" >
    378                  <horstretch>0</horstretch>
    379                  <verstretch>0</verstretch>
    380                 </sizepolicy>
    381                </property>
    382                <property name="minimumSize" >
    383                 <size>
    384                  <width>300</width>
    385                  <height>0</height>
    386                 </size>
    387                </property>
    388                <property name="text" >
    389                 <string>&lt;p>From now you can make VirtualBox automatically look for the new version every time application is being started by selecting "Check for the new version on startup" or ask VirtualBox to remind you about this in some period of time by selecting "Remind me about it" and choosing the desired period from the corresponding combo-box.&lt;/p>&lt;p>You can also run VirtualBox New Version Notifier anytime from the application Help menu.&lt;/p></string>
    390                </property>
    391                <property name="wordWrap" >
    392                 <bool>true</bool>
    393                </property>
    394               </widget>
    395              </item>
    396341            </layout>
    397342           </item>
     
    412357            </spacer>
    413358           </item>
    414            <item>
    415             <widget class="QRadioButton" name="mRbAutoCheck" >
    416              <property name="text" >
    417               <string>&amp;Check for the new version on startup</string>
    418              </property>
    419              <property name="checked" >
    420               <bool>true</bool>
    421              </property>
    422             </widget>
    423            </item>
    424            <item>
    425             <widget class="QRadioButton" name="mRbRecheck" >
    426              <property name="text" >
    427               <string>&amp;Remind me about it</string>
    428              </property>
    429             </widget>
    430            </item>
    431            <item>
    432             <layout class="QHBoxLayout" >
    433              <property name="spacing" >
    434               <number>0</number>
    435              </property>
    436              <item>
    437               <spacer>
    438                <property name="orientation" >
    439                 <enum>Qt::Horizontal</enum>
    440                </property>
    441                <property name="sizeType" >
    442                 <enum>QSizePolicy::Fixed</enum>
    443                </property>
    444                <property name="sizeHint" >
    445                 <size>
    446                  <width>16</width>
    447                  <height>10</height>
    448                 </size>
    449                </property>
    450               </spacer>
    451              </item>
    452              <item>
    453               <widget class="QComboBox" name="mCbRecheckTime" />
    454              </item>
    455              <item>
    456               <spacer>
    457                <property name="orientation" >
    458                 <enum>Qt::Horizontal</enum>
    459                </property>
    460                <property name="sizeHint" >
    461                 <size>
    462                  <width>0</width>
    463                  <height>10</height>
    464                 </size>
    465                </property>
    466               </spacer>
    467              </item>
    468             </layout>
    469            </item>
    470359          </layout>
    471360         </item>
     
    497386          <widget class="QPushButton" name="mBtnFinish" >
    498387           <property name="text" >
    499             <string>&amp;Ok</string>
     388            <string>&amp;Close</string>
    500389           </property>
    501390           <property name="default" >
     
    520409 </customwidgets>
    521410 <tabstops>
    522   <tabstop>mBtnConfirm</tabstop>
     411  <tabstop>mBtnCheck</tabstop>
    523412 </tabstops>
    524413 <resources>
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