Ignore:
Timestamp:
04/25/13 08:28:58 (16 months ago)
Author:
Kris Moore <kris@…>
Branches:
master, 9.1-release, 9.2-release, releng/10.0, releng/10.0.1, releng/10.0.2
Children:
7541802
Parents:
b1232b5
Message:

Add functionality to read pkgng repo, and build our UI elements

VERY fast < 1 second in most cases

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src-qt4/pc-pkgmanager/mainWin.cpp

    rb1232b5 r47e969a8  
    427427 
    428428/***************************************** 
    429 Code for meta-package (Basic Mode) 
     429Code for package stuff 
    430430******************************************/ 
    431431 
     
    460460  qDebug() << "Searching for pkgs..."; 
    461461  connect( getNGProc, SIGNAL(readyReadStandardOutput()), this, SLOT(slotGetNGPackageDataOutput()) ); 
     462  connect( getNGProc, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotGetNGInstalledPkgs()) ); 
     463  getNGProc->setProcessChannelMode(QProcess::MergedChannels); 
     464  if ( wDir.isEmpty() ) 
     465    getNGProc->start(QString("pkg"), QStringList() << "rquery" << "-a" << "%o:::%n-%v:::%c:::%sh"); 
     466  else 
     467    getNGProc->start(QString("chroot"), QStringList() << wDir << "pkg" << "rquery" << "-a" << "%o:::%n-%v:::%c:::%sh"); 
     468 
     469} 
     470 
     471void mainWin::slotGetNGPackageDataOutput() 
     472{ 
     473   while (getNGProc->canReadLine()) 
     474     tmpPkgList << getNGProc->readLine().simplified(); 
     475} 
     476 
     477void mainWin::slotGetNGInstalledDataOutput() 
     478{ 
     479   while (getNGProc->canReadLine()) 
     480     pkgList << getNGProc->readLine().simplified(); 
     481} 
     482 
     483void mainWin::slotGetNGInstalledPkgs() { 
     484 
     485  getNGProc = new QProcess(); 
     486  qDebug() << "Searching for installed pkgs..."; 
     487  connect( getNGProc, SIGNAL(readyReadStandardOutput()), this, SLOT(slotGetNGInstalledDataOutput()) ); 
    462488  connect( getNGProc, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotFinishLoadingNGPkgs()) ); 
    463489  getNGProc->setProcessChannelMode(QProcess::MergedChannels); 
    464490  if ( wDir.isEmpty() ) 
    465     getNGProc->start(QString("pkg"), QStringList() << "rquery" "-a" "%n:::%v:::%o:::%m:::%sb"); 
     491    getNGProc->start(QString("pkg"), QStringList() << "info" << "-aq" ); 
    466492  else 
    467     getNGProc->start(QString("chroot"), QStringList() << wDir << "pkg" "rquery" "-a" "%n:::%v:::%o:::%m:::%sb"); 
    468  
    469 } 
    470  
     493    getNGProc->start(QString("chroot"), QStringList() << wDir << "pkg" "info" "-aq"); 
     494 
     495} 
     496 
     497void mainWin::slotFinishLoadingNGPkgs() 
     498{ 
     499  treeNGPkgs->clear(); 
     500 
     501  addNGItems(); 
     502 
     503  pushPkgApply->setEnabled(false); 
     504 
     505  connect(treeNGPkgs, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(slotEnableApply())); 
     506} 
     507 
     508void mainWin::slotEnableApply() 
     509{ 
     510  pushPkgApply->setEnabled(true); 
     511} 
     512 
     513void mainWin::addNGItems() 
     514{ 
     515   QString curCat, cat, name, pkgname, desc, size; 
     516 
     517   // We like to add alphabetically 
     518   tmpPkgList.sort(); 
     519 
     520   QTreeWidgetItem *catItem; 
     521 
     522   // Lets start adding packages to the tree widget 
     523   for (int i = 0; i < tmpPkgList.size(); ++i) { 
     524        name = cat = tmpPkgList.at(i).section(":::", 0,0); 
     525        cat=cat.section("/", 0, 0); 
     526        name=name.section("/", 1, 1); 
     527        pkgname = tmpPkgList.at(i).section(":::", 1,1); 
     528        desc = tmpPkgList.at(i).section(":::", 2,2); 
     529        size = tmpPkgList.at(i).section(":::", 3,3); 
     530 
     531        // Check if we need to add a top-level category 
     532        if ( cat != curCat ) 
     533        { 
     534           qDebug() << "Adding cat: " + cat; 
     535           catItem = new QTreeWidgetItem(QStringList() << cat); 
     536           treeNGPkgs->addTopLevelItem(catItem); 
     537           curCat = cat; 
     538        } 
     539  
     540        // Now lets create the item and attach to the category 
     541        QTreeWidgetItem *pkgItem = new QTreeWidgetItem(); 
     542        pkgItem->setText(0, name + " (" + pkgname + ") - " + size ); 
     543        pkgItem->setToolTip(0, desc); 
     544 
     545        if ( pkgList.indexOf(pkgname) != -1 ) 
     546          pkgItem->setCheckState(0, Qt::Checked); 
     547        else 
     548          pkgItem->setCheckState(0, Qt::Unchecked); 
     549   
     550        catItem->addChild(pkgItem); 
     551   } 
     552 
     553} 
    471554 
    472555// Display found meta-pkg data 
     
    488571  connect( getMetaProc, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotFinishLoadingMetaPkgs()) ); 
    489572  getMetaProc->setProcessChannelMode(QProcess::MergedChannels); 
    490   getMetaProc->start(QString("pc-metapkgmanager"), QStringList() << chrootArg1 << chrootArg2 << "list"); 
     573  getMetaProc->start(QString("pc-metapkgmanager"), QStringList() << "list"); 
    491574 
    492575} 
     
    502585 
    503586  addTreeItems(QString());  
     587 
     588  pushPkgApply->setEnabled(false); 
    504589 
    505590  connect(treeMetaPkgs, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(slotDeskPkgsChanged(QTreeWidgetItem *, int))); 
Note: See TracChangeset for help on using the changeset viewer.