Changeset 5c7262b


Ignore:
Timestamp:
11/13/13 07:26:03 (15 months ago)
Author:
yurkis <yurkis@…>
Branches:
master, releng/10.0, releng/10.0.1, releng/10.0.2, releng/10.0.3, releng/10.1, releng/10.1.1
Children:
5cf5dd5
Parents:
3d59698
Message:

PCBSD Update center: PBI update prototype is ready

Location:
src-qt4/pc-updatecenter
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • src-qt4/pc-updatecenter/indicatorwidget.cpp

    rd6e137b r5c7262b  
    3636    connect(mpUC, SIGNAL(stateChanged(CAbstractUpdateController::EUpdateControllerState)), 
    3737            this, SLOT(stateChanged(CAbstractUpdateController::EUpdateControllerState))); 
     38    connect(mpUC, SIGNAL(progress(CAbstractUpdateController::SProgress)), 
     39            this, SLOT(progress(CAbstractUpdateController::SProgress))); 
     40 
    3841    connect(ui->checkButton, SIGNAL(clicked()), mpUC, SLOT(check())); 
     42    connect(ui->installButton , SIGNAL(clicked()), mpUC, SLOT(updateAll())); 
     43    connect(ui->cancelButton , SIGNAL(clicked()), mpUC, SLOT(cancel())); 
     44 
    3945 
    4046    return true; 
     
    7177void IndicatorWidget::progress(CAbstractUpdateController::SProgress progress) 
    7278{ 
    73     Q_UNUSED(progress); 
     79    ui->progress->setMinimum(progress.mProgressMin); 
     80    ui->progress->setMaximum(progress.mProgressMax); 
     81    ui->progress->setValue(progress.mProgressCurr); 
     82    ui->msgLabel->setText(progress.mMessage); 
     83    ui->cancelButton->setEnabled(progress.misCanCancel); 
     84 
     85    QString pict_name= (progress.mSubstate == CAbstractUpdateController::eInstall)? mInstallImage : mDownloadImage; 
     86 
     87    ui->stateImage->setPixmap(QPixmap(pict_name)); 
    7488} 
    7589 
     
    7993    ui->checkButton->setVisible(false); 
    8094    ui->installButton->setVisible(false); 
    81  
    82     //ui->stateImage->setPixmap(QPixmap(mCheckImage)); 
     95    ui->cancelButton->setVisible(false); 
    8396 
    8497    ui->msgLabel->setText(tr("Checking for updates...")); 
     
    90103    ui->checkButton->setVisible(true); 
    91104    ui->installButton->setVisible(true); 
    92  
    93     //ui->stateImage->setPixmap(QPixmap(mAvailImage)); 
     105    ui->cancelButton->setVisible(false); 
    94106 
    95107    if (mpUC) 
     
    103115    ui->checkButton->setVisible(true); 
    104116    ui->installButton->setVisible(false); 
     117    ui->cancelButton->setVisible(false); 
    105118 
    106     //ui->stateImage->setPixmap(QPixmap(mOkImage)); 
    107119    ui->msgLabel->setText(tr("Is up to date!")); 
    108120} 
     
    110122void IndicatorWidget::onUpdateProgress() 
    111123{ 
     124    ui->progress->setVisible(true); 
     125    ui->progress->setMaximum(0); 
     126    ui->progress->setMinimum(0); 
     127    ui->cancelButton->setVisible(true); 
     128    ui->cancelButton->setEnabled(false); 
     129    ui->checkButton->setVisible(false); 
     130    ui->installButton->setVisible(false); 
    112131 
     132    ui->msgLabel->setText(tr("Preparing update...")); 
    113133} 
  • src-qt4/pc-updatecenter/indicatorwidget.ui

    r55b9e32 r5c7262b  
    8282        </widget> 
    8383       </item> 
     84       <item> 
     85        <widget class="QPushButton" name="cancelButton"> 
     86         <property name="text"> 
     87          <string>Cancel</string> 
     88         </property> 
     89         <property name="icon"> 
     90          <iconset resource="res.qrc"> 
     91           <normaloff>:/images/dialog-cancel.png</normaloff>:/images/dialog-cancel.png</iconset> 
     92         </property> 
     93        </widget> 
     94       </item> 
    8495      </layout> 
    8596     </item> 
  • src-qt4/pc-updatecenter/mainwindow.cpp

    rd6e137b r5c7262b  
    44#include <QTreeWidgetItem> 
    55#include <QFile> 
     6#include <QPalette> 
     7 
    68#include "pcbsd-utils.h" 
    79 
     
    6769    } 
    6870 
    69     //ui->mainToolbox-> 
    70  
    7171    mSysController.check(); 
    7272    mPkgController.check(); 
    73     mPBIController.check(); 
    74  
    75     /* 
    76      *(QString check_img, QString ok_img, QString avail_img, 
    77               QString download_img, QString install_img, QString error_img, 
    78               CAbstractUpdateController* upd_controller); 
    79               */ 
     73    mPBIController.check();     
    8074 
    8175    ui->sysIndicator->init(SYS_CHECK_IMG, SYS_OK_IMG, SYS_AVAIL_IMG, 
     
    10296    connect(&mPBIController, SIGNAL(stateChanged(CAbstractUpdateController::EUpdateControllerState)), 
    10397            this, SLOT(pbiStateChanged(CAbstractUpdateController::EUpdateControllerState))); 
     98    connect(&mPBIController, SIGNAL(progress(CAbstractUpdateController::SProgress)), 
     99            this, SLOT(pbiProgress(CAbstractUpdateController::SProgress))); 
    104100 
    105101 
    106102    ui->mainStatesStack->setCurrentIndex(MAIN_INDICATORS_IDX); 
     103 
     104    QPalette palette = ui->pbiUpdateLog->palette(); 
     105    palette.setColor(QPalette::Base, Qt::black); 
     106    palette.setColor(QPalette::Text, Qt::white); 
     107    ui->pbiUpdateLog->setPalette(palette); 
     108    //ui->pkg 
    107109 
    108110} 
     
    171173 
    172174    }// if updates evail. 
    173  
    174  
    175  
    176175} 
    177176 
     
    182181    { 
    183182        QVector<CPBIController::SPBIUpdate> updates = mPBIController.pbiUpdates(); 
     183        ui->pbiUpdateList->clear(); 
    184184        for(int i=0; i<updates.size(); i++) 
    185185        { 
     
    197197 
    198198            item->setIcon(0, QIcon(icon_file)); 
     199            QVariant uData(updates[i].mGenericName); 
     200            item->setData(0, Qt::UserRole, uData); 
    199201 
    200202            ui->pbiUpdateList->addTopLevelItem(item); 
     
    206208        case CAbstractUpdateController::eUPDATES_AVAIL: 
    207209            ui->mainTab->setTabEnabled(TOOLBOX_PBI_INDEX, true); 
     210            ui->pbiUpdateStack->setCurrentIndex(0); 
    208211            break; 
    209212        case CAbstractUpdateController::eUPDATING: 
    210213            ui->mainTab->setTabEnabled(TOOLBOX_PBI_INDEX, true); 
    211             break; 
     214            ui->pbiUpdateStack->setCurrentIndex(1); 
     215            break; 
     216        case CAbstractUpdateController::eCHECKING: 
     217            ui->mainTab->setTabEnabled(TOOLBOX_PBI_INDEX, false); 
    212218        default: //supress warning 
    213219            break; 
    214220    } 
    215221} 
     222 
     223void MainWindow::pbiProgress(CAbstractUpdateController::SProgress progress) 
     224{ 
     225    for(int i=0; i<progress.mLogMessages.size(); i++) 
     226    { 
     227        ui->pbiUpdateLog->append(progress.mLogMessages[i]); 
     228    } 
     229} 
     230 
     231void MainWindow::on_updateSelectedPBIBtn_clicked() 
     232{ 
     233    QStringList ListToUpdate; 
     234    for(int i=0; i < ui->pbiUpdateList->topLevelItemCount(); i++) 
     235    { 
     236        if (ui->pbiUpdateList->topLevelItem(i)->checkState(0) == Qt::Checked) 
     237        { 
     238            QVariant v= ui->pbiUpdateList->topLevelItem(i)->data(0, Qt::UserRole); 
     239            QString gen_name= v.toString(); 
     240            ListToUpdate<<gen_name; 
     241        } 
     242    } 
     243 
     244    mPBIController.updateSelected(ListToUpdate); 
     245} 
  • src-qt4/pc-updatecenter/mainwindow.h

    r55b9e32 r5c7262b  
    3030    CPBIController  mPBIController; 
    3131 
    32 public slots: 
     32private slots: 
    3333    void pkgStateChanged(CAbstractUpdateController::EUpdateControllerState new_state); 
    3434    void pbiStateChanged(CAbstractUpdateController::EUpdateControllerState new_state); 
     35 
     36    void pbiProgress(CAbstractUpdateController::SProgress progress); 
     37 
     38private slots: 
     39    void on_updateSelectedPBIBtn_clicked(); 
    3540}; 
    3641 
  • src-qt4/pc-updatecenter/mainwindow.ui

    rd6e137b r5c7262b  
    77    <x>0</x> 
    88    <y>0</y> 
    9     <width>596</width> 
    10     <height>461</height> 
     9    <width>594</width> 
     10    <height>459</height> 
    1111   </rect> 
    1212  </property> 
     
    259259         <widget class="QStackedWidget" name="pkgDetailsStack"> 
    260260          <property name="currentIndex"> 
    261            <number>0</number> 
     261           <number>1</number> 
    262262          </property> 
    263263          <widget class="QWidget" name="page_3"> 
     
    433433        <string>Software update details</string> 
    434434       </attribute> 
    435        <layout class="QVBoxLayout" name="verticalLayout_17"> 
     435       <layout class="QVBoxLayout" name="verticalLayout_18"> 
    436436        <item> 
    437437         <widget class="IndicatorWidget" name="pbiDetailsIndicator" native="true"/> 
    438438        </item> 
    439439        <item> 
    440          <widget class="QTreeWidget" name="pbiUpdateList"> 
    441           <column> 
    442            <property name="text"> 
    443             <string>Name</string> 
    444            </property> 
    445           </column> 
    446           <column> 
    447            <property name="text"> 
    448             <string>Installed version</string> 
    449            </property> 
    450           </column> 
    451           <column> 
    452            <property name="text"> 
    453             <string>New version</string> 
    454            </property> 
    455           </column> 
     440         <widget class="QStackedWidget" name="pbiUpdateStack"> 
     441          <property name="currentIndex"> 
     442           <number>1</number> 
     443          </property> 
     444          <widget class="QWidget" name="page_7"> 
     445           <layout class="QVBoxLayout" name="verticalLayout_17"> 
     446            <item> 
     447             <widget class="QTreeWidget" name="pbiUpdateList"> 
     448              <column> 
     449               <property name="text"> 
     450                <string>Name</string> 
     451               </property> 
     452              </column> 
     453              <column> 
     454               <property name="text"> 
     455                <string>Installed version</string> 
     456               </property> 
     457              </column> 
     458              <column> 
     459               <property name="text"> 
     460                <string>New version</string> 
     461               </property> 
     462              </column> 
     463             </widget> 
     464            </item> 
     465            <item> 
     466             <layout class="QHBoxLayout" name="horizontalLayout_8"> 
     467              <item> 
     468               <spacer name="horizontalSpacer_9"> 
     469                <property name="orientation"> 
     470                 <enum>Qt::Horizontal</enum> 
     471                </property> 
     472                <property name="sizeHint" stdset="0"> 
     473                 <size> 
     474                  <width>40</width> 
     475                  <height>20</height> 
     476                 </size> 
     477                </property> 
     478               </spacer> 
     479              </item> 
     480              <item> 
     481               <widget class="QPushButton" name="updateSelectedPBIBtn"> 
     482                <property name="text"> 
     483                 <string>Update selected only</string> 
     484                </property> 
     485                <property name="icon"> 
     486                 <iconset resource="res.qrc"> 
     487                  <normaloff>:/images/install.png</normaloff>:/images/install.png</iconset> 
     488                </property> 
     489               </widget> 
     490              </item> 
     491             </layout> 
     492            </item> 
     493           </layout> 
     494          </widget> 
     495          <widget class="QWidget" name="page_8"> 
     496           <layout class="QVBoxLayout" name="verticalLayout_19"> 
     497            <item> 
     498             <widget class="QLabel" name="label_4"> 
     499              <property name="text"> 
     500               <string>Update log:</string> 
     501              </property> 
     502             </widget> 
     503            </item> 
     504            <item> 
     505             <widget class="QTextEdit" name="pbiUpdateLog"> 
     506              <property name="textInteractionFlags"> 
     507               <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> 
     508              </property> 
     509             </widget> 
     510            </item> 
     511           </layout> 
     512          </widget> 
    456513         </widget> 
    457         </item> 
    458         <item> 
    459          <layout class="QHBoxLayout" name="horizontalLayout_8"> 
    460           <item> 
    461            <spacer name="horizontalSpacer_9"> 
    462             <property name="orientation"> 
    463              <enum>Qt::Horizontal</enum> 
    464             </property> 
    465             <property name="sizeHint" stdset="0"> 
    466              <size> 
    467               <width>40</width> 
    468               <height>20</height> 
    469              </size> 
    470             </property> 
    471            </spacer> 
    472           </item> 
    473           <item> 
    474            <widget class="QPushButton" name="pushButton_7"> 
    475             <property name="text"> 
    476              <string>Update selected only</string> 
    477             </property> 
    478             <property name="icon"> 
    479              <iconset resource="res.qrc"> 
    480               <normaloff>:/images/install.png</normaloff>:/images/install.png</iconset> 
    481             </property> 
    482            </widget> 
    483           </item> 
    484          </layout> 
    485514        </item> 
    486515       </layout> 
     
    495524     <x>0</x> 
    496525     <y>0</y> 
    497      <width>596</width> 
     526     <width>594</width> 
    498527     <height>21</height> 
    499528    </rect> 
    500529   </property> 
     530   <widget class="QMenu" name="menuFile"> 
     531    <property name="title"> 
     532     <string>File</string> 
     533    </property> 
     534   </widget> 
     535   <widget class="QMenu" name="menuLogs"> 
     536    <property name="title"> 
     537     <string>Logs</string> 
     538    </property> 
     539    <addaction name="actionLast_system_update_log"/> 
     540    <addaction name="actionLast_package_update_log"/> 
     541    <addaction name="actionLast_software_update_log"/> 
     542   </widget> 
     543   <addaction name="menuFile"/> 
     544   <addaction name="menuLogs"/> 
    501545  </widget> 
    502546  <widget class="QToolBar" name="mainToolBar"> 
     
    509553  </widget> 
    510554  <widget class="QStatusBar" name="statusBar"/> 
     555  <action name="actionLast_system_update_log"> 
     556   <property name="text"> 
     557    <string>Last system update log</string> 
     558   </property> 
     559  </action> 
     560  <action name="actionLast_package_update_log"> 
     561   <property name="text"> 
     562    <string>Last package update log</string> 
     563   </property> 
     564  </action> 
     565  <action name="actionLast_software_update_log"> 
     566   <property name="text"> 
     567    <string>Last software update log</string> 
     568   </property> 
     569  </action> 
    511570 </widget> 
    512571 <layoutdefault spacing="6" margin="11"/> 
  • src-qt4/pc-updatecenter/pbicontroller.cpp

    rd6e137b r5c7262b  
    11#include "pbicontroller.h" 
    22 
     3#include "pcbsd-utils.h" 
    34#include <QDebug> 
    45 
     6static const char* const PBU_UPDATE_CMD= "pbi_update"; 
    57static const char* const AVAIL= "Available:"; 
    68static const char* const DOWNLOAD_INDICATOR = "DOWNLOADED:"; 
     
    1618    mCurrentUpdate=0; 
    1719    misWasFETCHDONE= false; 
     20 
    1821    launchUpdate(); 
    1922} 
     
    3336    mCurrentUpdate=0; 
    3437    misWasFETCHDONE= false; 
     38} 
     39 
     40void CPBIController::onCancel() 
     41{ 
     42    process().terminate(); 
     43    process().waitForFinished(); 
     44    check(); 
    3545} 
    3646 
     
    6171    SProgress progress; 
    6272    line= line.trimmed(); 
     73    qDebug()<<line; 
    6374    progress.mLogMessages = QStringList()<<line; 
    6475    progress.mItemNo= mCurrentUpdate; 
     
    7687        //Example: 
    7788        // SIZE: 215710 DOWNLOADED: 3973 SPEED: 233 KB/s 
    78         // ^0    ^1     ^2          ^3   ^4     ^5 
     89        // ^0    ^1     ^2          ^3   ^4     ^5  ^6 
    7990 
    8091        QStringList dl_list = line.split(" "); 
    8192        progress.mProgressMax= dl_list[1].toInt(); 
    8293        progress.mProgressCurr= dl_list[3].toInt(); 
    83         QString speed= dl_list[5]; 
    84         progress.mMessage= tr("[%1/%2] Downloading update for %3 at %4").arg(QString::number(progress.mItemNo), 
     94        QString speed= dl_list[5] + QString(" ") + dl_list[6]; 
     95        long size= dl_list[3].toInt() * 1024; 
     96        long downloaded= dl_list[1].toInt() * 1024; 
     97        progress.mMessage= tr("[%1/%2] Downloading update for %3 (%4/%5 at %6)").arg(QString::number(progress.mItemNo+1), 
    8598                                                                             QString::number(progress.mItemsCount), 
    86                                                                              current_app, speed); 
     99                                                                             current_app, 
     100                                                                             pcbsd::Utils::bytesToHumanReadable(size), 
     101                                                                             pcbsd::Utils::bytesToHumanReadable(downloaded), 
     102                                                                             speed); 
     103        progress.mLogMessages=QStringList(); 
    87104        reportProgress(progress); 
    88105        return; 
     
    93110        { 
    94111            //indicates beginning of instalation 
     112            progress.mLogMessages=QStringList(); 
    95113            misWasFETCHDONE= true; 
    96114        } 
     
    99117        { 
    100118            //installing... 
    101             progress.mMessage=tr("[%1/%2] Installing update for %3").arg(QString::number(progress.mItemNo), 
     119            progress.mMessage=tr("[%1/%2] Installing update for %3").arg(QString::number(progress.mItemNo+1), 
    102120                                                                         QString::number(progress.mItemsCount), 
    103121                                                                         current_app); 
     
    106124        else 
    107125        { 
    108             progress.mMessage=tr("[%1/%2] Preparing to install update for %3").arg(QString::number(progress.mItemNo), 
     126            progress.mMessage=tr("[%1/%2] Preparing to install update for %3").arg(QString::number(progress.mItemNo+1), 
    109127                                                                         QString::number(progress.mItemsCount), 
    110128                                                                         current_app); 
    111129        } 
     130        reportProgress(progress); 
    112131    } 
    113132} 
     
    132151void CPBIController::onUpdateProcessfinished(int exitCode) 
    133152{ 
     153    SProgress progress; 
    134154 
     155    QString current_app = mAppsToUpdate[mCurrentUpdate]; 
     156    current_app= current_app.left(current_app.lastIndexOf("-")); // remove arch 
     157    current_app= current_app.left(current_app.lastIndexOf("-")); // remove ver 
     158    progress.mItemNo= mCurrentUpdate; 
     159    progress.mItemsCount= mAppsToUpdate.size(); 
     160 
     161    progress.mMessage=tr("[%1/%2] Preparing to install update for %3").arg(QString::number(progress.mItemNo+1), 
     162                                                                 QString::number(progress.mItemsCount), 
     163                                                                 current_app); 
     164 
     165 
     166    if (mCurrentUpdate < (mAppsToUpdate.size() - 1)) 
     167    { 
     168        SProgress progress; 
     169        progress.mLogMessages= QStringList()<<"==============================="; 
     170    } 
     171 
     172    mCurrentUpdate++; 
     173 
     174    if (mCurrentUpdate >= mAppsToUpdate.size()) 
     175    { 
     176        mCurrentUpdate=0; 
     177        check(); 
     178    } 
     179    else 
     180    { 
     181        reportProgress(progress); 
     182        launchUpdate(); 
     183    } 
    135184} 
    136185 
    137186void CPBIController::updateShellCommand(QString &cmd, QStringList &args) 
    138187{ 
     188    cmd= PBU_UPDATE_CMD; 
     189    args= QStringList()<<mAppsToUpdate[mCurrentUpdate]; 
    139190 
     191    QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); 
     192    env.insert("PBI_FETCH_PARSING","YES"); //For readable download notifications 
     193    process().setProcessEnvironment(env); 
    140194} 
    141195 
  • src-qt4/pc-updatecenter/pbicontroller.h

    rd6e137b r5c7262b  
    3131    virtual void onCheckUpdates(); 
    3232    virtual void onUpdateAll(); 
     33    virtual void onCancel(); 
    3334 
    3435    void onReadCheckLine(QString line); 
  • src-qt4/pc-updatecenter/res.qrc

    rd6e137b r5c7262b  
    2424        <file>images/pkgerror.png</file> 
    2525        <file>images/pkginstall.png</file> 
     26        <file>images/dialog-cancel.png</file> 
    2627    </qresource> 
    2728</RCC> 
  • src-qt4/pc-updatecenter/updatecontroller.cpp

    rd6e137b r5c7262b  
    114114} 
    115115 
     116void CAbstractUpdateController::cancel() 
     117{ 
     118    if (mCurrentProgress.misCanCancel) 
     119    { 
     120        onCancel(); 
     121    } 
     122} 
     123 
    116124void CAbstractUpdateController::slotProcessRead() 
    117125{ 
  • src-qt4/pc-updatecenter/updatecontroller.h

    rd6e137b r5c7262b  
    6969    void reportError(QString error_message); 
    7070    void launchUpdate(); 
     71    QProcess& process() {return mUpdProc;} 
    7172 
    7273    virtual void checkShellCommand(QString& cmd, QStringList& args)=0; 
     
    7778    //! May be overrided by child. Calls on update install 
    7879    virtual void onUpdateAll(){} 
     80 
     81    virtual void onCancel(){} 
    7982 
    8083    //! Calls on check command process is finished 
     
    101104 
    102105public slots: 
    103     void check();//=0; 
    104     void updateAll();//=0; 
     106    void check(); 
     107    void updateAll(); 
     108    void cancel(); 
    105109 
    106110private slots: 
Note: See TracChangeset for help on using the changeset viewer.