Changeset 55b9e32


Ignore:
Timestamp:
11/12/13 04:28:29 (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:
d6e137b
Parents:
13b0607
Message:

PC Update center: Reqorked update controllers (incl. baseclass redisign), pbi update check now works

Location:
src-qt4/pc-updatecenter
Files:
1 added
13 edited

Legend:

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

    r13b0607 r55b9e32  
    6767        <widget class="QPushButton" name="installButton"> 
    6868         <property name="text"> 
    69           <string>Install updates</string> 
     69          <string>Install all updates</string> 
    7070         </property> 
    7171         <property name="icon"> 
  • src-qt4/pc-updatecenter/mainwindow.cpp

    r13b0607 r55b9e32  
    33 
    44#include <QTreeWidgetItem> 
     5#include <QFile> 
    56#include "pcbsd-utils.h" 
    67 
     
    3031const QString PBI_AVAIL_IMG =  ":/images/pbiupdates.png"; 
    3132const QString PBI_PROGRESS_IMG=":/images/pbiupdates.png"; 
     33 
     34const QString DEFAULT_APP_ICON=":/images/application.png"; 
     35 
     36const QString DEFAULT_PBI_DB_DIR="/var/db/pbi"; 
     37const QString INSTALLED_IN_DB="/installed"; 
    3238 
    3339MainWindow::MainWindow(QWidget *parent) : 
     
    6874    ui->pbiIndicator->init(PBI_CHECK_IMG, PBI_OK_IMG, PBI_AVAIL_IMG, PBI_PROGRESS_IMG, 
    6975                           &mPBIController); 
     76    ui->pbiDetailsIndicator->init(PBI_CHECK_IMG, PBI_OK_IMG, PBI_AVAIL_IMG, PBI_PROGRESS_IMG, 
     77                           &mPBIController); 
     78 
    7079 
    7180    connect(&mPkgController, SIGNAL(stateChanged(CAbstractUpdateController::EUpdateControllerState)), 
    7281            this, SLOT(pkgStateChanged(CAbstractUpdateController::EUpdateControllerState))); 
     82    connect(&mPBIController, SIGNAL(stateChanged(CAbstractUpdateController::EUpdateControllerState)), 
     83            this, SLOT(pbiStateChanged(CAbstractUpdateController::EUpdateControllerState))); 
    7384 
    7485 
     
    92103        case CAbstractUpdateController::eCHECKING: 
    93104            ui->mainTab->setTabEnabled(TOOLBOX_PKG_INDEX, false); 
     105            break; 
     106        default: //supress warning 
    94107            break; 
    95108    } 
     
    142155 
    143156} 
     157 
     158void MainWindow::pbiStateChanged(CAbstractUpdateController::EUpdateControllerState new_state) 
     159{ 
     160 
     161    if (new_state == CAbstractUpdateController::eUPDATES_AVAIL) 
     162    { 
     163        QVector<CPBIController::SPBIUpdate> updates = mPBIController.pbiUpdates(); 
     164        for(int i=0; i<updates.size(); i++) 
     165        { 
     166            QTreeWidgetItem* item = new QTreeWidgetItem(QStringList()<<updates[i].mName<<updates[i].mOldVer<<updates[i].mNewVer); 
     167            item->setFlags(item->flags() | Qt::ItemIsUserCheckable); 
     168            item->setCheckState(0, Qt::Checked); 
     169 
     170            //Parse pbi db to get application icon... 
     171            QString icon_file = DEFAULT_PBI_DB_DIR + INSTALLED_IN_DB + QString("/") + updates[i].mGenericName + QString("/pbi_icon.png"); 
     172 
     173            if (!QFile::exists(icon_file)) 
     174            { 
     175                icon_file= DEFAULT_APP_ICON; 
     176            } 
     177 
     178            item->setIcon(0, QIcon(icon_file)); 
     179 
     180            ui->pbiUpdateList->addTopLevelItem(item); 
     181        } 
     182    } 
     183 
     184    switch (new_state) 
     185    { 
     186        case CAbstractUpdateController::eUPDATES_AVAIL: 
     187            ui->mainTab->setTabEnabled(TOOLBOX_PBI_INDEX, true); 
     188            break; 
     189        case CAbstractUpdateController::eUPDATING: 
     190            ui->mainTab->setTabEnabled(TOOLBOX_PBI_INDEX, true); 
     191            break; 
     192        default: //supress warning 
     193            break; 
     194    } 
     195} 
  • src-qt4/pc-updatecenter/mainwindow.h

    rd540652 r55b9e32  
    3232public slots: 
    3333    void pkgStateChanged(CAbstractUpdateController::EUpdateControllerState new_state); 
     34    void pbiStateChanged(CAbstractUpdateController::EUpdateControllerState new_state); 
    3435}; 
    3536 
  • src-qt4/pc-updatecenter/mainwindow.ui

    r13b0607 r55b9e32  
    433433        <string>Software update details</string> 
    434434       </attribute> 
     435       <layout class="QVBoxLayout" name="verticalLayout_17"> 
     436        <item> 
     437         <widget class="IndicatorWidget" name="pbiDetailsIndicator" native="true"/> 
     438        </item> 
     439        <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> 
     456         </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 only selected</string> 
     477            </property> 
     478           </widget> 
     479          </item> 
     480         </layout> 
     481        </item> 
     482       </layout> 
    435483      </widget> 
    436484     </widget> 
  • src-qt4/pc-updatecenter/pbicontroller.cpp

    rd540652 r55b9e32  
    11#include "pbicontroller.h" 
     2 
     3#include <QDebug> 
     4 
     5static const char* const AVAIL= "Available:"; 
    26 
    37CPBIController::CPBIController() 
     
    711void CPBIController::onCheckUpdates() 
    812{ 
    9     //reportUpdatesAvail("Available updates for 3 PBI packages"); 
    10     setCurrentState(eFULLY_UPDATED); 
     13    mvUpdates.clear(); 
    1114} 
    1215 
    13 void CPBIController::onUpdateAll() 
     16void CPBIController::onReadCheckLine(QString line) 
     17{ 
     18    //Example: 
     19    //        vlc-2.0.8a_1-amd64 - Available: 2.1.0_5 
     20    //        ^0                 ^1^2         ^3 
     21    if (line.indexOf(AVAIL)>0) 
     22    { 
     23        QStringList upd_list = line.split(" "); 
     24        SPBIUpdate entry; 
     25 
     26        entry.mGenericName= upd_list[0]; 
     27        entry.mNewVer= upd_list[3]; 
     28        // remove arch 
     29        entry.mName= entry.mGenericName.left(entry.mGenericName.lastIndexOf("-")); 
     30        // get installed ver 
     31        entry.mOldVer= entry.mName.right(entry.mName.length() - entry.mName.lastIndexOf("-") - 1); 
     32        // remove old version 
     33        entry.mName= entry.mName.left(entry.mName.lastIndexOf("-")); 
     34        mvUpdates.push_back(entry); 
     35    } 
     36} 
     37 
     38void CPBIController::onReadUpdateLine(QString line) 
    1439{ 
    1540 
    1641} 
     42 
     43void CPBIController::onCheckProcessfinished(int exitCode) 
     44{ 
     45    if (!mvUpdates.size()) 
     46    { 
     47        setCurrentState(eFULLY_UPDATED); 
     48        return; 
     49    } 
     50    else 
     51    { 
     52        if (mvUpdates.size() == 1) 
     53        { 
     54            reportUpdatesAvail(tr("Available update for: %1").arg(mvUpdates[0].mName)); 
     55        } 
     56        reportUpdatesAvail(tr("Updates available for %1 applications").arg(mvUpdates.size())); 
     57    } 
     58} 
     59 
  • src-qt4/pc-updatecenter/pbicontroller.h

    r3347cf1 r55b9e32  
    44#include "updatecontroller.h" 
    55 
     6#include <QVector> 
     7 
    68class CPBIController : public CAbstractUpdateController 
    79{ 
    810    Q_OBJECT 
     11    USES_CHECK_SHELL_COMMAND("pbi_update", QString("--check-all")) 
     12    USES_UPDATE_SHELL_COMMAND("pbi_update", QString("ppppp")) 
     13 
     14public: 
     15    typedef struct _SPBIUpdate 
     16    { 
     17        QString mName; 
     18        QString mGenericName; 
     19        QString mOldVer; 
     20        QString mNewVer; 
     21    }SPBIUpdate; 
    922 
    1023public: 
    1124    CPBIController(); 
    1225 
     26    QVector<SPBIUpdate> pbiUpdates() 
     27        { return mvUpdates;} 
     28 
    1329protected: 
    1430    virtual void onCheckUpdates(); 
    15     virtual void onUpdateAll(); 
     31    void onReadCheckLine(QString line); 
     32    void onReadUpdateLine(QString line); 
     33 
     34    virtual void onCheckProcessfinished(int exitCode); 
     35 
     36private: 
     37    QVector<SPBIUpdate> mvUpdates; 
     38 
    1639}; 
    1740 
  • src-qt4/pc-updatecenter/pkgcontroller.cpp

    r13b0607 r55b9e32  
    33#include <QDebug> 
    44 
    5 static const QString UPDATE_MANAGER = "pc-updatemanager"; 
    6 #define UM_CHECK_PARAMS "pkgcheck" 
     5static const char* const UPDATES_AVAIL_STRING = "Upgrades have been requested for the following"; 
     6static const char* const UPDATES_AVAIL_SIZE_STRING = "The upgrade will require "; 
     7static const char* const UPDATES_AVAIL_SIZE_FREE_STR= "The upgrade will free "; 
     8static const char* const UPDATES_AVAIL_DL_SIZE_STRING = " to be downloaded"; 
     9static const char* const UPDATES_AVAIL_END_STRING = "To start the upgrade run"; 
    710 
    8 const char* const UPDATES_AVAIL_STRING = "Upgrades have been requested for the following"; 
    9 const char* const UPDATES_AVAIL_SIZE_STRING = "The upgrade will require "; 
    10 const char* const UPDATES_AVAIL_SIZE_FREE_STR= "The upgrade will free "; 
    11 const char* const UPDATES_AVAIL_DL_SIZE_STRING = " to be downloaded"; 
    12 const char* const UPDATES_AVAIL_END_STRING = "To start the upgrade run"; 
    13  
    14 const char* const INSTALLING  = "Installing"; 
    15 const char* const UPGRADING   = "Upgrading"; 
    16 const char* const REINSTALLING = "Reinstalling"; 
     11static const char* const INSTALLING  = "Installing"; 
     12static const char* const UPGRADING   = "Upgrading"; 
     13static const char* const REINSTALLING = "Reinstalling"; 
    1714 
    1815typedef enum{ 
     
    4643CPkgController::CPkgController() 
    4744{ 
    48     mUpdProcess.setProcessChannelMode(QProcess::MergedChannels); 
    49     connect(&mUpdProcess, SIGNAL(readyReadStandardOutput()), 
    50             this, SLOT(slotProcessRead())); 
     45 
    5146} 
    5247 
     
    5651} 
    5752 
    58 void CPkgController::parseProcessLine(CAbstractUpdateController::EUpdateControllerState state, QString line) 
    59 { 
    60     switch(state) 
    61     { 
    62         case eCHECKING: 
    63             checkReadLine(line.trimmed()); 
    64             break; 
    65  
    66         case eUPDATING: 
    67             updateReadLine(line.trimmed()); 
    68             break; 
    69  
    70         default: //fuckup here 
    71         qDebug()<<"Unknown state of update manager"; 
    72     } 
    73 } 
    74  
    75 void CPkgController::onCheckUpdates() 
    76 { 
    77     mUpdProcess.start(UPDATE_MANAGER, QStringList() << UM_CHECK_PARAMS); 
    78 } 
    79  
    80 void CPkgController::onUpdateAll() 
    81 { 
    82  
    83 } 
    84  
    85 void CPkgController::slotProcessRead() 
    86 { 
    87     while (mUpdProcess.canReadLine()) 
    88         parseProcessLine(currentState(), mUpdProcess.readLine().simplified()); 
    89 } 
    90  
    91 void CPkgController::checkReadLine(QString line) 
     53void CPkgController::onReadCheckLine(QString line) 
    9254{ 
    9355    static ECheckClState curChkrState = eCommonInfo; 
     
    208170} 
    209171 
    210 void CPkgController::updateReadLine(QString line) 
     172void CPkgController::onReadUpdateLine(QString line) 
    211173{ 
    212174    Q_UNUSED(line); 
  • src-qt4/pc-updatecenter/pkgcontroller.h

    rd540652 r55b9e32  
    1010{ 
    1111    Q_OBJECT 
     12 
     13    USES_CHECK_SHELL_COMMAND("pc-updatemanager", QString("pkgcheck")) 
     14    USES_UPDATE_SHELL_COMMAND("pc-updatemanager", QString("pkgcheck")) 
     15 
    1216public: 
    1317 
     
    5155    SUpdate updateData(); 
    5256 
    53     virtual void parseProcessLine(EUpdateControllerState state, QString line); 
    54  
    5557protected: 
    56     virtual void onCheckUpdates(); 
    57     virtual void onUpdateAll(); 
    58  
    59 private slots: 
    60     void slotProcessRead(); 
     58    virtual void onReadCheckLine(QString line); 
     59    virtual void onReadUpdateLine(QString line); 
    6160 
    6261private: 
    63     void checkReadLine(QString line); 
    64     void updateReadLine(QString line); 
    65  
    66 private: 
    67     QProcess mUpdProcess; 
    6862    SUpdate mUpdData; 
    6963}; 
  • src-qt4/pc-updatecenter/res.qrc

    r13b0607 r55b9e32  
    1515        <file>images/install.png</file> 
    1616        <file>update-center.png</file> 
     17        <file>images/application.png</file> 
    1718    </qresource> 
    1819</RCC> 
  • src-qt4/pc-updatecenter/syscontroller.cpp

    rd540652 r55b9e32  
    88CSysController::CSysController() 
    99{ 
    10     mUpdProcess.setProcessChannelMode(QProcess::MergedChannels); 
    11     connect(&mUpdProcess, SIGNAL(readyReadStandardOutput()), 
    12             this, SLOT(slotProcessRead())); 
    13 } 
    14  
    15 void CSysController::parseProcessLine(EUpdateControllerState state, QString line) 
    16 { 
    17     switch(state) 
    18     { 
    19         case eCHECKING: 
    20             checkReadLine(line); 
    21             break; 
    22  
    23         case eUPDATING: 
    24             updateReadLine(line); 
    25             break; 
    26  
    27         default: //fuckup here 
    28         qDebug()<<"Unknown state of update manager"; 
    29     } 
    30 } 
    31  
    32 void CSysController::onCheckUpdates() 
    33 { 
    34  
    35     mUpdProcess.start(UPDATE_MANAGER, QStringList() << UM_CHECK_PARAMS); 
    3610 
    3711} 
    3812 
    39 void CSysController::onUpdateAll() 
    40 { 
    41  
    42 } 
    43  
    44 void CSysController::slotProcessRead() 
    45 { 
    46     while (mUpdProcess.canReadLine()) 
    47         parseProcessLine(currentState(), mUpdProcess.readLine().simplified()); 
    48  
    49 } 
    50  
    51 void CSysController::checkReadLine(QString line) 
     13void CSysController::onReadCheckLine(QString line) 
    5214{ 
    5315    if (line == QString("Your system is up to date!")) 
     
    5517        setCurrentState(eFULLY_UPDATED); 
    5618    } 
    57     //----------------------------------------------------- 
    58     // Code is form original update manager my Kris or Ken: 
    59     //----------------------------------------------------- 
    6019 
    61      /*static QString line, tmp, name, type, version, date, tag, url, size, sa, rr; 
    62  
    63      if ( line.indexOf("NAME: ") == 0) { 
    64             name = line.replace("NAME: ", ""); 
    65             return; 
    66          } 
    67          if ( line.indexOf("TYPE: ") == 0) { 
    68             type = line.replace("TYPE: ", ""); 
    69             return; 
    70          } 
    71  
    72          if ( type == "SYSUPDATE" ) { 
    73            if ( line.indexOf("VERSION: ") == 0) { 
    74               version = line.replace("VERSION: ", ""); 
    75               return; 
    76            } 
    77            if ( line.indexOf("DATE: ") == 0) { 
    78               date = line.replace("DATE: ", ""); 
    79               return; 
    80            } 
    81            if ( line.indexOf("TAG: ") == 0) { 
    82               tag = line.replace("TAG: ", ""); 
    83               return; 
    84            } 
    85            if ( line.indexOf("DETAILS: ") == 0) { 
    86               url = line.replace("DETAILS: ", ""); 
    87               return; 
    88            } 
    89  
    90            if ( line.indexOf("To install:") == 0) { 
    91               up.clear(); 
    92           up << name << type << version << date << tag << url; 
    93           listUpdates.append(up); 
    94               type=""; name="", version="", date="", tag="", url=""; 
    95               return; 
    96            } 
    97  
    98          } 
    99          if ( type == "PATCH" ) { 
    100            if ( line.indexOf("DATE: ") == 0) { 
    101               date = line.replace("DATE: ", ""); 
    102               return; 
    103            } 
    104            if ( line.indexOf("TAG: ") == 0) { 
    105               tag = line.replace("TAG: ", ""); 
    106               return; 
    107            } 
    108            if ( line.indexOf("SIZE: ") == 0) { 
    109               size = line.replace("SIZE: ", ""); 
    110               return; 
    111            } 
    112            if ( line.indexOf("STANDALONE: ") == 0) { 
    113               sa = line.replace("STANDALONE: ", ""); 
    114               return; 
    115            } 
    116            if ( line.indexOf("REQUIRESREBOOT: ") == 0) { 
    117               rr = line.replace("REQUIRESREBOOT: ", ""); 
    118               return; 
    119            } 
    120            if ( line.indexOf("DETAILS: ") == 0) { 
    121               url = line.replace("DETAILS: ", ""); 
    122               return; 
    123            } 
    124            if ( line.indexOf("To install:") == 0) { 
    125           // TODO add this update to list 
    126          //     up.clear(); 
    127          // up << name << type << date << tag << size << sa << rr << url; 
    128          // listUpdates.append(up); 
    129               type=""; name="", date="", tag="", size="", sa="", rr="", url=""; 
    130               continue; 
    131          //  } 
    132           } 
    133          } 
    134          */ 
    13520    qDebug()<<line; 
    13621 
    13722} 
    13823 
    139 void CSysController::updateReadLine(QString line) 
     24void CSysController::onReadUpdateLine(QString line) 
    14025{ 
    14126 
  • src-qt4/pc-updatecenter/syscontroller.h

    rd540652 r55b9e32  
    99{ 
    1010    Q_OBJECT 
     11 
     12    USES_CHECK_SHELL_COMMAND("pc-updatemanager", QString("check")) 
     13    USES_UPDATE_SHELL_COMMAND("pc-updatemanager", QString("check")) 
     14 
    1115public: 
    1216    CSysController(); 
    1317     
    14     virtual void parseProcessLine(EUpdateControllerState state, QString line); 
    15  
    1618protected: 
    17     virtual void onCheckUpdates(); 
    18     virtual void onUpdateAll(); 
    19  
    20 private slots: 
    21     void slotProcessRead(); 
     19    void onReadCheckLine(QString line); 
     20    void onReadUpdateLine(QString line); 
    2221 
    2322private: 
    24     void checkReadLine(QString line); 
    25     void updateReadLine(QString line); 
    26  
    27 private: 
    28     QProcess mUpdProcess; 
    29  
    3023     
    3124}; 
  • src-qt4/pc-updatecenter/updatecontroller.cpp

    rd540652 r55b9e32  
    11#include "updatecontroller.h" 
     2 
     3#include <QDebug> 
    24 
    35CAbstractUpdateController::CAbstractUpdateController() 
    46{ 
    57    mCurrentState= eNOT_INITIALIZED; 
     8    mUpdProc.setProcessChannelMode(QProcess::MergedChannels); 
     9    connect(&mUpdProc, SIGNAL(readyReadStandardOutput()), 
     10            this, SLOT(slotProcessRead())); 
     11    connect(&mUpdProc, SIGNAL(finished(int,QProcess::ExitStatus)), 
     12            this, SLOT(slotProcessFinished(int,QProcess::ExitStatus))); 
    613} 
    714 
     
    1421{ 
    1522    return mUpdateMasage; 
     23} 
     24 
     25void CAbstractUpdateController::parseProcessLine(CAbstractUpdateController::EUpdateControllerState state, QString line) 
     26{ 
     27    switch (state) 
     28    { 
     29        case eCHECKING: 
     30            onReadCheckLine(line); 
     31            break; 
     32        case eUPDATING: 
     33            onReadUpdateLine(line); 
     34            break; 
     35        case eNOT_INITIALIZED: 
     36            qDebug()<<"Updater internal state error"; 
     37            break; 
     38    } 
    1639} 
    1740 
     
    4366} 
    4467 
     68void CAbstractUpdateController::reportError(QString error_message) 
     69{ 
     70    mErrorMessage = error_message; 
     71    setCurrentState(eUPDATING_ERROR); 
     72    emit updateError(mErrorMessage); 
     73} 
     74 
    4575void CAbstractUpdateController::check() 
    4676{ 
    47     //TODO: correct current state check 
     77    onCheckUpdates(); 
     78 
     79    QString proc; 
     80    QStringList args; 
     81    checkShellCommand(proc, args); 
     82    mUpdProc.start(proc,args); 
     83    if (!mUpdProc.waitForStarted()) 
     84    { 
     85        reportError(tr("Can not execute update shell command")); 
     86        return; 
     87    } 
     88 
    4889    setCurrentState(eCHECKING); 
    49     onCheckUpdates(); 
    5090} 
    5191 
     
    5393{ 
    5494    //TODO: correct current state check 
     95 
     96    onUpdateAll(); 
     97 
     98    QString proc; 
     99    QStringList args; 
     100    updateShellCommand(proc, args); 
     101    mUpdProc.start(proc,args); 
     102    if (!mUpdProc.waitForStarted()) 
     103    { 
     104        reportError(tr("Can not execute update shell command")); 
     105        return; 
     106    } 
     107 
    55108    setCurrentState(eUPDATING); 
    56     onUpdateAll(); 
    57109} 
     110 
     111void CAbstractUpdateController::slotProcessRead() 
     112{ 
     113    while (mUpdProc.canReadLine()) 
     114        parseProcessLine(currentState(), mUpdProc.readLine().simplified()); 
     115} 
     116 
     117void CAbstractUpdateController::slotProcessFinished(int exitCode, QProcess::ExitStatus exitStatus) 
     118{ 
     119    Q_UNUSED(exitStatus) 
     120 
     121    switch (currentState()) 
     122    { 
     123        case eCHECKING: 
     124            onCheckProcessfinished(exitCode); 
     125            break; 
     126        case eUPDATING: 
     127            onUpdateProcessfinished(exitCode); 
     128            break; 
     129    } 
     130} 
  • src-qt4/pc-updatecenter/updatecontroller.h

    rd540652 r55b9e32  
    44#include <QObject> 
    55#include <QString> 
     6#include <QProcess> 
     7 
     8#define USES_CHECK_SHELL_COMMAND(command, arguments)\ 
     9    protected:\ 
     10    virtual void checkShellCommand(QString& cmd, QStringList& args){cmd= QString(command); args.clear(); args<<arguments;};\ 
     11    private: 
     12 
     13#define USES_UPDATE_SHELL_COMMAND(command, arguments)\ 
     14    protected:\ 
     15    virtual void updateShellCommand(QString& cmd, QStringList& args){cmd= QString(command);args.clear();args<<arguments;};\ 
     16    private: 
    617 
    718class CAbstractUpdateController:public QObject 
     
    3546    QString                updateMessage(); 
    3647 
    37     virtual void parseProcessLine(EUpdateControllerState state, QString line) 
    38     { Q_UNUSED(line); Q_UNUSED(state)}; 
     48    void parseProcessLine(EUpdateControllerState state, QString line); 
    3949 
    4050protected: 
     
    4252    void reportProgress(SProgress curr_progress); 
    4353    void reportUpdatesAvail(QString message); 
     54    void reportError(QString error_message); 
    4455 
    45     virtual void onCheckUpdates()=0; 
    46     virtual void onUpdateAll()=0; 
     56    virtual void checkShellCommand(QString& cmd, QStringList& args)=0; 
     57    virtual void updateShellCommand(QString& cmd, QStringList& args)=0; 
     58 
     59    //! May be overrided by child. Calls on update check 
     60    virtual void onCheckUpdates(){} 
     61    //! May be overrided by child. Calls on update install 
     62    virtual void onUpdateAll(){} 
     63 
     64    //! Calls on check command process is finished 
     65    virtual void onCheckProcessfinished(int exitCode){Q_UNUSED(exitCode)} 
     66    //! Calls on update command process is finished 
     67    virtual void onUpdateProcessfinished(int exitCode){Q_UNUSED(exitCode)} 
     68 
     69    virtual void onReadCheckLine(QString line)=0; 
     70    virtual void onReadUpdateLine(QString line)=0; 
     71 
    4772 
    4873private: 
     
    5075    SProgress              mCurrentProgress; 
    5176    QString                mUpdateMasage; 
     77    QString                mErrorMessage; 
     78    QProcess               mUpdProc; 
    5279 
    5380public: signals: 
     
    5582    void progress(CAbstractUpdateController::SProgress progress); 
    5683    void updatesAvail(QString update_message); 
     84    void updateError(QString message); 
    5785 
    5886public slots: 
     
    6088    void updateAll();//=0; 
    6189 
     90private slots: 
     91    void slotProcessRead(); 
     92    void slotProcessFinished(int exitCode, QProcess::ExitStatus exitStatus); 
     93 
    6294}; 
    6395 
Note: See TracChangeset for help on using the changeset viewer.