Changeset 5cf5dd5


Ignore:
Timestamp:
11/14/13 01:12:09 (22 months ago)
Author:
yurkis <yurkis@…>
Branches:
master, enter/10, releng/10.0, releng/10.0.1, releng/10.0.2, releng/10.0.3, releng/10.1, releng/10.1.1, releng/10.1.2, releng/10.2, stable/10
Children:
3224cf9
Parents:
5c7262b
Message:

Parsing pkg update download state

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

Legend:

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

    r55b9e32 r5cf5dd5  
    11#include "pkgcontroller.h" 
     2 
     3#include "pcbsd-utils.h" 
    24 
    35#include <QDebug> 
     
    1315static const char* const REINSTALLING = "Reinstalling"; 
    1416 
     17static const char* const FETCH = "FETCH:"; 
     18static const char* const FETCH_DONE = "FETCHDONE"; 
     19static const char* const SIZE_DL_MARKER = "SIZE:"; 
     20static const char* const DOWNLOADED_DL_MARKER = "DOWNLOADED:"; 
     21static const char* const DL_FETCH_START = "FETCH:"; 
     22 
    1523typedef enum{ 
    1624    eCommonInfo, 
     
    4351CPkgController::CPkgController() 
    4452{ 
    45  
     53    QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); 
     54    env.insert("PCFETCHGUI","YES"); //For readable download notifications 
     55    process().setProcessEnvironment(env); 
    4656} 
    4757 
     
    170180} 
    171181 
     182void CPkgController::onUpdateAll() 
     183{ 
     184    misDownloadComplete= false; 
     185    mCurrentPkgNo= 0; 
     186    misInFetch= 0; 
     187} 
     188 
    172189void CPkgController::onReadUpdateLine(QString line) 
    173190{ 
    174     Q_UNUSED(line); 
    175 } 
     191    qDebug()<<line; 
     192    line= line.trimmed(); 
     193 
     194    SProgress progress; 
     195    progress.mItemNo = mCurrentPkgNo; 
     196    progress.mItemsCount = mUpdData.mCommonPkgsCount; 
     197    progress.mSubstate= (misDownloadComplete)?eDownload:eInstall; 
     198    progress.mLogMessages= QStringList()<<line; 
     199 
     200    if (line.indexOf(DL_FETCH_START) == 0) 
     201    { 
     202        //starting fetch 
     203        mCurrentPkgNo++; 
     204        progress.mLogMessages.clear(); 
     205        misInFetch++; 
     206        //Example: 
     207        // Resuming download of: /usr/local/tmp/All/pcbsd-base-1382021797.txz 
     208        // 
     209        mCurrentPkgName= line.right(line.size() - line.lastIndexOf("/") - 1); // get package file name (ex: pcbsd-base-1382021797.txz) 
     210        mCurrentPkgName= line.left(line.lastIndexOf("-")); // get packagename without version 
     211    } 
     212    if(line == FETCH_DONE) 
     213    { 
     214        progress.mLogMessages.clear(); 
     215        misInFetch--; 
     216    } 
     217    else 
     218    if ( line.contains(SIZE_DL_MARKER) && line.contains(DOWNLOADED_DL_MARKER)) 
     219    { 
     220        //downloading progress parsing 
     221        progress.mLogMessages.clear(); 
     222 
     223        //Example: 
     224        // SIZE: 215710 DOWNLOADED: 3973 SPEED: 233 KB/s 
     225        // ^0    ^1     ^2          ^3   ^4     ^5  ^6 
     226 
     227        //TODO: as eparate function (code duplication) 
     228        QStringList dl_list = line.split(" "); 
     229        progress.mProgressMax= dl_list[1].toInt(); 
     230        progress.mProgressCurr= dl_list[3].toInt(); 
     231        QString speed= dl_list[5] + QString(" ") + dl_list[6]; 
     232        long size= dl_list[3].toInt() * 1024; 
     233        long downloaded= dl_list[1].toInt() * 1024; 
     234 
     235        progress.mMessage= tr("[%1/%2] Downloading package %3 (%4/%5 at %6)").arg(QString::number(progress.mItemNo+1), 
     236                                                                                  QString::number(progress.mItemsCount), 
     237                                                                                  mCurrentPkgName, 
     238                                                                                  pcbsd::Utils::bytesToHumanReadable(size), 
     239                                                                                  pcbsd::Utils::bytesToHumanReadable(downloaded), 
     240                                                                                  speed); 
     241    } 
     242 
     243    reportProgress(progress); 
     244} 
  • src-qt4/pc-updatecenter/pkgcontroller.h

    r55b9e32 r5cf5dd5  
    5757protected: 
    5858    virtual void onReadCheckLine(QString line); 
     59 
     60    virtual void onUpdateAll(); 
    5961    virtual void onReadUpdateLine(QString line); 
    6062 
    6163private: 
    6264    SUpdate mUpdData; 
     65    bool    misDownloadComplete; 
     66    int     mCurrentPkgNo; 
     67    int     misInFetch; 
     68    QString mCurrentPkgName; 
    6369}; 
    6470 
Note: See TracChangeset for help on using the changeset viewer.