From db90999f6298c1107888f062f2c25cb8817b528a Mon Sep 17 00:00:00 2001 From: tille Date: Sat, 27 Apr 2002 13:06:45 +0000 Subject: added popup menu to choose inst dest (and more...) --- diff --git a/noncore/unsupported/oipkg/TODO b/noncore/unsupported/oipkg/TODO index c53ca93..744cba4 100644 --- a/noncore/unsupported/oipkg/TODO +++ b/noncore/unsupported/oipkg/TODO @@ -1,11 +1,8 @@ -* search * Settings Class -* make oipkg determine dest of "to remove" apps * tr() ;) * Dialog to display ipkg output live * parse "to install" and "to remove" from status * install local file -* install to dest with click on packet * qcop * error handling * manage links diff --git a/noncore/unsupported/oipkg/debug.h b/noncore/unsupported/oipkg/debug.h index c53e36c..e73b9b2 100644 --- a/noncore/unsupported/oipkg/debug.h +++ b/noncore/unsupported/oipkg/debug.h @@ -7,6 +7,7 @@ extern int debugLevel; #define HACK +#define NEWLAYOUT #define pvDebug(I, S) \ if ( debugLevel < 3 ) \ diff --git a/noncore/unsupported/oipkg/mainwindow.cpp b/noncore/unsupported/oipkg/mainwindow.cpp index c803ca0..25ca889 100644 --- a/noncore/unsupported/oipkg/mainwindow.cpp +++ b/noncore/unsupported/oipkg/mainwindow.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -29,16 +30,21 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags f = 0 ) : setCaption( tr("Package Manager") ); listViewPackages = new QListView( this,0,0 ); + listViewPackages->setSelectionMode(QListView::NoSelection); setCentralWidget( listViewPackages ); makeMenu(); - +#ifdef NEWLAYOUT + listViewPackages->addColumn( tr("Package") ); + listViewPackages->setRootIsDecorated( true ); +#endif +#ifndef NEWLAYOUT QFontMetrics fm = fontMetrics(); int wlw = width()*2; int w0 = fm.width(tr("Package"))+30; // int w0 = fm.width(tr("Package"))+30; int w2 = fm.width("00000")+4; - int w1 = wlw-w2-w0-20; + int w1 = wlw-w2-w0-24; listViewPackages->addColumn( tr("Package"), w0 ); listViewPackages->addColumn( tr("Description"), w1 ); listViewPackages->addColumn( tr("Size"), w2 ); @@ -46,14 +52,18 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags f = 0 ) : listViewPackages->setColumnWidthMode(1,QListView::Manual); listViewPackages->setColumnWidthMode(2,QListView::Manual); listViewPackages->setSelectionMode( QListView::Multi ); - +#endif connect( section, SIGNAL( activated(int) ), this, SLOT( sectionChanged() ) ); connect( subsection, SIGNAL(activated(int) ), this, SLOT( subSectionChanged() ) ); connect( listViewPackages, SIGNAL( pressed( QListViewItem* ) ), this, SLOT( setCurrent( QListViewItem* ) ) ); - + connect( listViewPackages, SIGNAL( clicked( QListViewItem* ) ), + this, SLOT( stopTimer( QListViewItem* ) ) ); + + popupMenu = new QPopupMenu( this ); + settings = new PackageManagerSettings(this,0,TRUE); ipkg = new PmIpkg( settings, this ); @@ -74,9 +84,10 @@ void MainWindow::makeMenu() QPopupMenu *cfgMenu = new QPopupMenu( menuBar ); // QPopupMenu *sectMenu = new QPopupMenu( menuBar ); - popupMenu = new QPopupMenu( this ); - - contextMenu = new QPopupMenu( this ); + popupMenu = new QPopupMenu( this ); + destsMenu = new QPopupMenu( popupMenu ); + popupTimer = new QTimer( this ); + connect( popupTimer, SIGNAL(timeout()), this, SLOT(showPopup()) ); setToolBarsMovable( false ); toolBar->setHorizontalStretchable( true ); @@ -180,6 +191,14 @@ void MainWindow::makeMenu() findAction->setToggleAction( true ); findAction->setOn( true ); findAction->addTo( viewMenu ); + + #ifdef NEW + Config cfg( "oipkg", Config::User ); + cfg.setGroup( "Setting_" + QString::number( setting ) ); + CheckBoxLink->setChecked( cfg.readBoolEntry( "link", false ) ); + findShow(bool b) + sectionShow(bool b) + #endif } MainWindow::~MainWindow() @@ -189,7 +208,12 @@ MainWindow::~MainWindow() void MainWindow::runIpkg() { ipkg->commit( packageList ); -// updateList(); //to remove + // ##### If we looked in the list of files, we could send out accurate + // ##### messages. But we don't bother yet, and just do an "all". + QCopEnvelope e("QPE/System", "linkChanged(QString)"); + QString lf = QString::null; + e << lf; + displayList(); } void MainWindow::updateList() @@ -200,7 +224,7 @@ void MainWindow::updateList() packageList.clear(); ipkg->update(); getList(); - t->stop(); + t->stop(); } void MainWindow::getList() @@ -224,7 +248,7 @@ void MainWindow::displayList() while( pack ) { if ( pack && (pack->name() != "") ) - listViewPackages->insertItem( new PackageListItem( listViewPackages, pack ) ); + listViewPackages->insertItem( new PackageListItem( listViewPackages, pack, settings ) ); pack = packageList.next(); } } @@ -291,20 +315,24 @@ void MainWindow::showSettingsDst() void MainWindow::showDetails() { - if ( activePackage ) return; if ( details ) - { - details = new PackageDetails( this ); - connect( details->install, SIGNAL(clicked()), SLOT( toggleActivePackage() ) ); - connect( details->remove, SIGNAL(clicked()), SLOT( toggleActivePackage() ) ); - connect( details->ignore, SIGNAL(clicked()), details, SLOT(close())); - details->description->setTextFormat(RichText); - } - - details->setCaption("Package: " + activePackage->name()); - details->description->setText(activePackage->details() ); - details->install->setEnabled(!activePackage->installed()); - details->remove->setEnabled(activePackage->installed()); + { + details = new PackageDetails( this ); + connect( details->install, SIGNAL(clicked()), SLOT( toggleActivePackage() ) ); + connect( details->remove, SIGNAL(clicked()), SLOT( toggleActivePackage() ) ); + connect( details->ignore, SIGNAL(clicked()), details, SLOT(close())); + details->description->setTextFormat(RichText); + } + if ( !activePackage ) + { + details->description->setText(tr("no package selected")); + details->description->setText(tr("errmm...
...not working?")); + }else{ + details->setCaption("Package: " + activePackage->name()); + details->description->setText(activePackage->details() ); + details->install->setEnabled(!activePackage->installed()); + details->remove->setEnabled(activePackage->installed()); + } details->showMaximized(); } @@ -316,10 +344,11 @@ void MainWindow::toggleActivePackage() void MainWindow::setCurrent( QListViewItem* p ) { - pvDebug(2, "MainWindow::setCurrent "); - return; - pvDebug(2, "name "+((Package*)p)->name()); - activePackage = (Package*)p; + if ( !p ) return; + activePackageListItem = (PackageListItem*)p; + activePackage = activePackageListItem->getPackage(); + pvDebug(5, "start timer"); + popupTimer->start( 750, true ); } void MainWindow::sectionShow(bool b) @@ -355,3 +384,35 @@ void MainWindow::rotateUpdateIcon() updateAction->setIconSet( Resource::loadIconSet( "oipkg/update2" ) ); updateIcon = !updateIcon; } + +void MainWindow::showPopup() +{ + popupMenu->clear(); + destsMenu->clear(); + + QAction *popupAction; + popupMenu->insertItem( tr("Install to"), destsMenu ); + QStringList dests = settings->getDestinationNames(); + for (uint i = 0; i < dests.count(); i++ ) + { + popupAction = new QAction( dests[i], QString::null, 0, this, 0 ); + popupAction->addTo( destsMenu ); + } + connect( destsMenu, SIGNAL( activated( int ) ), + this, SLOT( changePackageDest( int ) ) ); + popupMenu->popup( QCursor::pos() ); +} + +void MainWindow::changePackageDest( int i ) +{ + activePackage->setDest( destsMenu->text(i) ); + activePackage->setOn(); + activePackage->setLink( settings->createLinks() ); + activePackageListItem->displayDetails(); +} + +void MainWindow::stopTimer( QListViewItem* ) +{ + pvDebug( 5, "stop timer" ); + popupTimer->stop(); +} diff --git a/noncore/unsupported/oipkg/mainwindow.h b/noncore/unsupported/oipkg/mainwindow.h index 892d5e8..adc5e78 100644 --- a/noncore/unsupported/oipkg/mainwindow.h +++ b/noncore/unsupported/oipkg/mainwindow.h @@ -15,7 +15,7 @@ class QComboBox; class QPEToolBar; class QLineEdit; class QListView; - +class PackageListItem; class MainWindow : public QMainWindow { @@ -46,6 +46,9 @@ public slots: void findClose(); void findShow(bool); void filterList(); + void showPopup(); + void changePackageDest( int ); + void stopTimer( QListViewItem* ); private: void makeMenu(); @@ -57,19 +60,21 @@ private: PackageDetails* details; PackageList packageList; Package *activePackage; + PackageListItem *activePackageListItem; QAction *runAction; QAction *detailsAction; QAction *updateAction; QAction *findAction; QAction *sectionAction; QListView *listViewPackages; - QPopupMenu *contextMenu; QPEToolBar *findBar; QLineEdit *findEdit; QPEToolBar *sectionBar; QComboBox *section; QComboBox *subsection; + QTimer *popupTimer; QPopupMenu *popupMenu; + QPopupMenu *destsMenu; bool updateIcon; private slots: void rotateUpdateIcon(); diff --git a/noncore/unsupported/oipkg/opie-oipkg.control b/noncore/unsupported/oipkg/opie-oipkg.control index 89cc0b4..2ffec71 100644 --- a/noncore/unsupported/oipkg/opie-oipkg.control +++ b/noncore/unsupported/oipkg/opie-oipkg.control @@ -4,6 +4,6 @@ Section: opie/settings Maintainer: Patrick S. Vogt Architecture: arm Version: $QPE_VERSION-$SUB_VERSION -Depends: opie-base ($QPE_VERSION) +Depends: opie-base ($QPE_VERSION), ipkg (>0.9) Description: Package Manager A GUI front-end to ipkg for the Opie environment. diff --git a/noncore/unsupported/oipkg/package.cpp b/noncore/unsupported/oipkg/package.cpp index 1705f78..9f602b5 100644 --- a/noncore/unsupported/oipkg/package.cpp +++ b/noncore/unsupported/oipkg/package.cpp @@ -9,8 +9,14 @@ Package::~Package() { } -Package::Package() +Package::Package( PackageManagerSettings *s ) { + init(s); +} + +void Package::init( PackageManagerSettings *s ) +{ + settings = s; _size = ""; _section = ""; _subsection = ""; @@ -19,25 +25,26 @@ Package::Package() _name = ""; _toProcess = false; _status = ""; + _dest = ""; } -Package::Package( QStringList pack ) +Package::Package( QStringList pack, PackageManagerSettings *s ) { - Package(); + init(s); parsePackage( pack ); _toProcess = false; } -Package::Package( QString n ) +Package::Package( QString n, PackageManagerSettings *s ) { - Package(); + init(s); _name = QString( n ); _toProcess = false; } Package::Package( Package *pi ) { - Package(); + init(pi->settings); copyValues( pi ); _toProcess = false; } @@ -172,7 +179,7 @@ void Package::copyValues( Package* pack ) if (!installed() && _status.isEmpty() && !pack->_status.isEmpty()) _status = QString( pack->_status ); } -QString Package::getSection() +QString Package::section() { return _section; } @@ -190,7 +197,7 @@ void Package::setSection( QString s) } } -QString Package::getSubSection() +QString Package::subSection() { return _subsection; } @@ -253,11 +260,38 @@ QString Package::details() return description; } -/** No descriptions */ void Package::processed() { _toProcess = false; - //hack, but we're mot writing status anyway... + //hack, but we're not writing status anyway... if ( installed() ) _status = "install"; else _status = "installed"; } + +QString Package::dest() +{ + if ( installed()||(!installed() && _toProcess) ) + return _dest!=""?_dest:settings->getDestinationName(); + else return ""; +} + +void Package::setDest( QString d ) +{ + _dest = d; +} + +void Package::setOn() +{ + _toProcess = true; +} + +bool Package::link() +{ + if ( _dest == "root" || (!installed() && !_toProcess) ) return false; + return _link; +} + +void Package::setLink(bool b) +{ + _link = b; +} diff --git a/noncore/unsupported/oipkg/package.h b/noncore/unsupported/oipkg/package.h index cf2af75..6c292ed 100644 --- a/noncore/unsupported/oipkg/package.h +++ b/noncore/unsupported/oipkg/package.h @@ -8,14 +8,16 @@ #include #include +#include "pksettings.h" + class Package //: public QObject { // Q_OBJECT public: - Package(); + Package(PackageManagerSettings *); ~Package(); - Package( QStringList ); - Package( QString ); + Package( QStringList, PackageManagerSettings * ); + Package( QString, PackageManagerSettings * ); Package( Package* ); void setValue( QString, QString ); @@ -29,27 +31,35 @@ class Package //: public QObject QString desc(); QString size(); void setSection( QString ); - QString getSection(); - QString getSubSection(); + QString section(); + QString subSection(); QString details(); bool toProcess(); bool toInstall(); bool toRemove(); - /** No descriptions */ void processed(); + QString dest(); + void setDest( QString d ); + void setOn(); + bool link(); + void setLink(bool); public slots: void toggleProcess(); private: + PackageManagerSettings *settings; QString _name; bool _toProcess; + bool _link; QString _status; QString _size; QString _section; QString _subsection; QString _shortDesc; QString _desc; + QString _dest; void parsePackage( QStringList ); + void init(PackageManagerSettings *); }; diff --git a/noncore/unsupported/oipkg/packagelist.cpp b/noncore/unsupported/oipkg/packagelist.cpp index 944bb83..035ec81 100644 --- a/noncore/unsupported/oipkg/packagelist.cpp +++ b/noncore/unsupported/oipkg/packagelist.cpp @@ -70,8 +70,8 @@ void PackageList::filterPackages( QString f ) while ( pack ) { if ( - ((aktSection=="All")||(pack->getSection()==aktSection)) && - ((aktSubSection=="All")||(pack->getSubSection()==aktSubSection)) && + ((aktSection=="All")||(pack->section()==aktSection)) && + ((aktSubSection=="All")||(pack->subSection()==aktSubSection)) && pack->name().contains( f ) ) { @@ -126,11 +126,11 @@ void PackageList::setSubSection( QString ssec ) void PackageList::updateSections( Package* pack ) { - QString s = pack->getSection(); + QString s = pack->section(); if ( s.isEmpty() || s == "") return; if ( sections.contains(s) ) return; sections += s; - QString ss = pack->getSubSection(); + QString ss = pack->subSection(); if ( ss.isEmpty() || ss == "" ) return; if ( !subSections[s] ) { subSections.insert( s, new QStringList() ); @@ -150,10 +150,13 @@ void PackageList::updateSections( Package* pack ) void PackageList::parseStatus() { QStringList dests = settings->getDestinationUrls(); - for ( QStringList::Iterator it = dests.begin(); it != dests.end(); ++it ) + QStringList destnames = settings->getDestinationNames(); + QStringList::Iterator name = destnames.begin(); + for ( QStringList::Iterator dir = dests.begin(); dir != dests.end(); ++dir ) { - pvDebug( 2,"Status Dir: "+*it+statusDir+"/status"); - readFileEntries( *it+statusDir+"/status" ); + pvDebug( 2,"Status: "+*dir+statusDir+"/status"); + readFileEntries( *dir+statusDir+"/status", *name ); + ++name; }; } @@ -163,12 +166,12 @@ void PackageList::parseList() for ( QStringList::Iterator it = srvs.begin(); it != srvs.end(); ++it ) { - pvDebug( 2, "List Dir: "+listsDir+"/"+*it); - readFileEntries( listsDir+"/"+*it ); + pvDebug( 2, "List: "+listsDir+"/"+*it); + readFileEntries( listsDir+"/"+*it, "" ); } } -void PackageList::readFileEntries( QString filename ) +void PackageList::readFileEntries( QString filename, QString dest ) { QStringList packEntry; QFile f( filename ); @@ -182,7 +185,8 @@ void PackageList::readFileEntries( QString filename ) //end of package if ( ! packEntry.isEmpty() ) { - Package *p = new Package( packEntry ); + Package *p = new Package( packEntry, settings ); + p->setDest( dest ); if ( p ) { insertPackage( p ); @@ -199,11 +203,11 @@ void PackageList::readFileEntries( QString filename ) void PackageList::update() { - pvDebug( 3, "parseStatus"); + pvDebug( 2, "parseStatus"); parseStatus(); - pvDebug( 3, "parseList"); + pvDebug( 2, "parseList"); parseList(); - pvDebug( 3, "finished parsing"); + pvDebug( 2, "finished parsing"); } void PackageList::setSettings( PackageManagerSettings *s ) @@ -221,3 +225,17 @@ void PackageList::clear() origPackageList.clear(); packageList.clear(); } + +void PackageList::allPackages() +{ + packageList.clear(); + QDictIterator filterIter( origPackageList ); + filterIter.toFirst(); + Package *pack= filterIter.current() ; + while ( pack ) + { + packageList.insert( pack->name(), pack ); + ++filterIter; + pack = filterIter.current(); + } +} diff --git a/noncore/unsupported/oipkg/packagelist.h b/noncore/unsupported/oipkg/packagelist.h index 4ce97af..7c326ca 100644 --- a/noncore/unsupported/oipkg/packagelist.h +++ b/noncore/unsupported/oipkg/packagelist.h @@ -12,7 +12,9 @@ static QString statusDir="/usr/lib/ipkg/"; #endif -class PackageList { +class PackageList //:QObject +{ +// Q_OBJECT public: // static QString all = QObject::tr("All"); @@ -29,8 +31,8 @@ public: void setSettings( PackageManagerSettings* ); void filterPackages( QString ); Package* getByName( QString ); - /** No descriptions */ void clear(); + void allPackages(); public slots: void setSection(QString); @@ -61,7 +63,7 @@ private: void updateSections( Package* ); void parseStatus(); void parseList(); - void readFileEntries( QString ); + void readFileEntries( QString file, QString dest ); }; diff --git a/noncore/unsupported/oipkg/packagelistitem.cpp b/noncore/unsupported/oipkg/packagelistitem.cpp index 5d08bb1..149ba35 100644 --- a/noncore/unsupported/oipkg/packagelistitem.cpp +++ b/noncore/unsupported/oipkg/packagelistitem.cpp @@ -1,24 +1,51 @@ #include "packagelistitem.h" #include +#include + +#include "debug.h" static QPixmap *pm_uninstalled=0; static QPixmap *pm_installed=0; static QPixmap *pm_uninstall=0; static QPixmap *pm_install=0; -PackageListItem::PackageListItem(QListView* lv, Package *pi) +PackageListItem::PackageListItem(QListView* lv, Package *pi, PackageManagerSettings *s) : QCheckListItem(lv,pi->name(),CheckBox) { package = pi; + settings = s; + setExpandable( true ); + QCheckListItem *item; +#ifndef NEWLAYOUT + item = new QCheckListItem( this, QObject::tr("Name") ); + item->setText(1,pi->name()); + item = new QCheckListItem( this, QObject::tr("Description") ); + item->setText(1,pi->desc()+"\ntest multi\nline"); + item = new QCheckListItem( this, QObject::tr("Size") ); + item->setText(1,pi->size()); + item = new QCheckListItem( this, QObject::tr("Destination") ); + item->setText(1,pi->getDest()); +#endif +#ifdef NEWLAYOUT + item = new QCheckListItem( this, QObject::tr("Name: ")+pi->name() ); + item = new QCheckListItem( this, QObject::tr("Description: ")+pi->desc() ); + item = new QCheckListItem( this, QObject::tr("Size: ")+pi->size() ); + destItem = new QCheckListItem( this, "" ); + linkItem = new QCheckListItem( this, "" ); + displayDetails(); +#endif + if (!pm_uninstalled) { pm_uninstalled = new QPixmap(Resource::loadPixmap("oipkg/uninstalled")); pm_installed = new QPixmap(Resource::loadPixmap("oipkg/installed")); pm_install = new QPixmap(Resource::loadPixmap("oipkg/install")); pm_uninstall = new QPixmap(Resource::loadPixmap("oipkg/uninstall")); } +#ifndef NEWLAYOUT setText(1, package->shortDesc() ); setText(2, package->size() ); +#endif } void PackageListItem::paintCell( QPainter *p, const QColorGroup & cg, @@ -93,5 +120,20 @@ void PackageListItem::setOn( bool b ) { QCheckListItem::setOn( b ); package->toggleProcess(); +// if ( b ) +// { +// if ((package->dest()).isEmpty) +// package->setDest( settings->getDestinationName() ); +// }else{ +// package->setDest( QObject::tr("not installed")); +// } + package->setLink( settings->createLinks() ); + displayDetails(); +} + +void PackageListItem::displayDetails() +{ + linkItem->setText( 0, QObject::tr("Link: ")+QString(package->link()?QObject::tr("Yes"):QObject::tr("No")) ); + destItem->setText( 0, QObject::tr("Destination: ")+package->dest() ); repaint(); } diff --git a/noncore/unsupported/oipkg/packagelistitem.h b/noncore/unsupported/oipkg/packagelistitem.h index 6983e58..f695432 100644 --- a/noncore/unsupported/oipkg/packagelistitem.h +++ b/noncore/unsupported/oipkg/packagelistitem.h @@ -9,11 +9,13 @@ #include #include +#include "pksettings.h" + class PackageListItem : public QCheckListItem { public: - PackageListItem(QListView*, Package* ); + PackageListItem(QListView*, Package*, PackageManagerSettings*); void paintCell( QPainter*, const QColorGroup&, int, int, int ); void paintFocus( QPainter*, const QColorGroup&, const QRect& ); QPixmap statePixmap() const; @@ -22,8 +24,12 @@ public: QString getName() { return package->name(); } ; bool isInstalled(){ return package->installed(); }; virtual void setOn ( bool ); + void displayDetails(); private: + QCheckListItem *destItem; + QCheckListItem *linkItem; + PackageManagerSettings *settings; Package *package; }; diff --git a/noncore/unsupported/oipkg/pksettings.cpp b/noncore/unsupported/oipkg/pksettings.cpp index 32224b5..f84a9c4 100644 --- a/noncore/unsupported/oipkg/pksettings.cpp +++ b/noncore/unsupported/oipkg/pksettings.cpp @@ -469,6 +469,7 @@ QStringList PackageManagerSettings::getActiveServers() } return sl; } + /** returns the destination listed in ipkg.conf */ QStringList PackageManagerSettings::getDestinationUrls() { @@ -480,6 +481,29 @@ QStringList PackageManagerSettings::getDestinationUrls() return sl; } +/** returns the destination listed in ipkg.conf */ +QString PackageManagerSettings::getDestinationUrlByName(QString n) +{ + QStringList sl; + for (int i=0; i<(int)destinations->count(); i++) + { + if ( n == destinations->text(i)) return*destinationurlDic[i]; + } + return ""; +} + +/** returns the destination listed in ipkg.conf */ +QStringList PackageManagerSettings::getDestinationNames() +{ + QStringList sl; + for (int i=0; i<(int)destinations->count(); i++) + { + sl += destinations->text(i); + } + return sl; +} + + void PackageManagerSettings::linkEnabled( bool b ) { changed = true; diff --git a/noncore/unsupported/oipkg/pksettings.h b/noncore/unsupported/oipkg/pksettings.h index 2982f1c..11ba55c 100644 --- a/noncore/unsupported/oipkg/pksettings.h +++ b/noncore/unsupported/oipkg/pksettings.h @@ -19,6 +19,9 @@ public: bool createLinks(); QStringList getActiveServers(); QStringList getDestinationUrls(); + QStringList getDestinationNames(); + QString getDestinationUrlByName(QString); + private: QIntDict serverurlDic; QIntDict destinationurlDic; diff --git a/noncore/unsupported/oipkg/pmipkg.cpp b/noncore/unsupported/oipkg/pmipkg.cpp index eae73ad..3b31b4d 100644 --- a/noncore/unsupported/oipkg/pmipkg.cpp +++ b/noncore/unsupported/oipkg/pmipkg.cpp @@ -8,7 +8,6 @@ #include #include #include -#include #include #include #include @@ -40,38 +39,37 @@ PmIpkg::~PmIpkg() //#define PROC #define SYSTEM -int PmIpkg::runIpkg(const QString& args) +int PmIpkg::runIpkg(const QString& args, const QString& dest ) { pvDebug(2,"PmIpkg::runIpkg "+args); - //to make script ipkg happy - pvDebug(2, "cd "+settings->getDestinationUrl()+"/tmp/ipkg"); - if (!QDir::setCurrent(settings->getDestinationUrl()+"/tmp/ipkg")) - { - QDir instDir = QDir(settings->getDestinationUrl()+"/tmp/ipkg"); - instDir.mkdir(settings->getDestinationUrl()+"/tmp/ipkg"); - } #ifdef PROC QStringList cmd = "/usr/bin/ipkg "; #endif #ifdef SYSTEM QString cmd = "/usr/bin/ipkg "; #endif - cmd += " -dest "+settings->getDestinationName(); + pvDebug( 3,"PmIpkg::runIpkg got dest="+dest); + if ( dest == "" ) + cmd += " -dest "+settings->getDestinationName(); + else + cmd += " -dest "+ dest; + cmd += " -force-defaults "; out( "

Starting to "+ args+"
\n"); cmd += args; - out( "running:
\n"+cmd+"
\n" ); int r = 0; #ifdef PROC QString o = "start"; - Process ipkg( cmd ); + Process *ipkg = new Process( "ls");//cmd ); + out( "running:
\n"+ipkg->arguments().join(" ")+"
\n" ); QString description; - ipkg.exec("",o); - out( o ); + ipkg->exec("",o); +// out( o ); #endif #ifdef SYSTEM + out( "running:
\n"+cmd+"
\n" ); QString redirect = "/tmp/oipkg.pipe"; cmd += " | tee "+redirect+" 2>&1"; pvDebug(2, "running >"+cmd+"<"); @@ -80,16 +78,19 @@ int PmIpkg::runIpkg(const QString& args) QString line; QString oldLine; while ( ! f.open(IO_ReadOnly) ) {}; - { + // { QTextStream t( &f ); // QString fp; while ( !t.eof() ) { line = t.readLine(); - if ( line != oldLine ) out( line +"
" ); - oldLine = line; + if ( line != oldLine ) + { + out( line +"
" ); + oldLine = line; + } } - } +// } f.close(); out( "Finished!
"); #endif @@ -97,22 +98,24 @@ int PmIpkg::runIpkg(const QString& args) return r; } -void PmIpkg::makeLinks(QString pack) +void PmIpkg::makeLinks(Package *pack) { - pvDebug( 2, "PmIpkg::makeLinks "+ pack); + pvDebug( 2, "PmIpkg::makeLinks "+ pack->name()); + QString dest = settings->getDestinationUrlByName( pack->dest() ); + if (dest == "/" ) return; out( "
creating links
" ); - QString dest = settings->getDestinationUrl(); - out("for package "+pack+" in "+dest+"
"); + out("for package "+pack->name()+" in "+dest+"
"); { Config cfg( "oipkg", Config::User ); cfg.setGroup( "Common" ); QString statusDir = cfg.readEntry( "statusDir", "" ); } - QString fn = dest+"/"+statusDir+"/info/"+pack+".list"; + QString fn = dest+"/"+statusDir+"/info/"+pack->name()+".list"; QFile f( fn ); if ( ! f.open(IO_ReadOnly) ) { out( "Panik! Could not open:
"+fn ); + return; }; QTextStream t( &f ); QString fp; @@ -126,8 +129,10 @@ void PmIpkg::makeLinks(QString pack) void PmIpkg::processLinkDir( QString file, QString dest ) { + if ( dest == "???" ) return; QString destFile = file; file = dest+"/"+file; + if (file == dest) return; QFileInfo fileInfo( file ); if ( fileInfo.isDir() ) { @@ -166,30 +171,21 @@ void PmIpkg::commit( PackageList pl ) int sizecount = 0; QString rem="To remove:
\n"; QString inst="To install:
\n";; + pl.allPackages(); for( Package *pack = pl.first();pack ; (pack = pl.next()) ) { if ( pack && (pack->name() != "") && pack) { if ( pack->toInstall() ) { - #ifndef NEWLIST - to_install.append( pack->name() ); - #endif - #ifdef NEWLIST to_install.append( pack ); sizecount += pack->size().toInt(); - #endif - inst += pack->name()+"
"; + inst += pack->name()+"\t(on "+pack->dest()+")
"; } if ( pack->toRemove() ) { - #ifndef NEWLIST - to_remove.append( pack->name() ); - #endif - #ifdef NEWLIST to_remove.append( pack ); sizecount += 1; - #endif rem += pack->name()+"
"; } } @@ -211,11 +207,6 @@ void PmIpkg::commit( PackageList pl ) runwindow, SLOT( close() ) ); runwindow->exec(); - // ##### If we looked in the list of files, we could send out accurate - // ##### messages. But we don't bother yet, and just do an "all". - QCopEnvelope e("QPE/System", "linkChanged(QString)"); - QString lf = QString::null; - e << lf; return; } @@ -233,18 +224,6 @@ void PmIpkg::remove() out("

"+tr("Removing")+"
"+tr("please wait")+"

"); - #ifndef NEWLIST - for (QStringList::ConstIterator it=to_remove.begin(); it!=to_remove.end(); ++it) - { - if ( runIpkg("remove " + *it) == 0) - { - - }else{ - out(""+tr("Error while removing")+""+*it); - } - } -#endif - #ifdef NEWLIST for (Package *it=to_remove.first(); it != 0; it=to_remove.next() ) { if ( runIpkg("remove " + it->name()) == 0) @@ -256,7 +235,6 @@ void PmIpkg::remove() out(""+tr("Error while removing")+""+it->name()); } } -#endif } @@ -265,36 +243,22 @@ void PmIpkg::install() if ( to_install.count() == 0 ) return; show( true ); out("

"+tr("Installing")+"
"+tr("please wait")+"

"); - #ifndef NEWLIST - for (QStringList::ConstIterator it=to_install.begin(); it!=to_install.end(); ++it) - { - if ( runIpkg("install " + *it) == 0 ) - { - if ( settings->createLinks() ) - makeLinks( *it ); - }else{ - out(""+tr("Error while installing")+""+*it); - } - } -#endif - #ifdef NEWLIST - for (Package *it=to_install.first(); it != 0; it=to_install.next() ) + for (Package *it=to_install.first(); it != 0; it=to_install.next() ) { - if ( runIpkg("install " + it->name()) == 0 ) + + if ( runIpkg("install " + it->name(), it->dest() ) == 0 ) { runwindow->progress->setProgress( it->size().toInt() + runwindow->progress->progress()); - if ( settings->createLinks() ) - makeLinks( it->name() ); + if ( it->link() ) + makeLinks( it ); it->processed(); }else{ out(""+tr("Error while installing")+""+it->name()); } } -#endif } void PmIpkg::linkDestination( const QString msg, const QByteArray dest ) -// add 3rd package parameter { qDebug("msg="+msg+" -- "+QString(dest) ); // QDir d( src ); @@ -345,8 +309,8 @@ void PmIpkg::show(bool b) if (!runwindow->isVisible()) runwindow->showMaximized(); showButtons(b); -// if ( b ) + if ( b ) runwindow->progress->hide(); -// else -// runwindow->progress->show(); + else + runwindow->progress->show(); } diff --git a/noncore/unsupported/oipkg/pmipkg.h b/noncore/unsupported/oipkg/pmipkg.h index 2692017..c57adb7 100644 --- a/noncore/unsupported/oipkg/pmipkg.h +++ b/noncore/unsupported/oipkg/pmipkg.h @@ -11,7 +11,6 @@ #include "packagelist.h" #include "debug.h" -//#define NEWLIST class Package; class PmIpkg : public QObject { @@ -29,20 +28,13 @@ public: private: PackageManagerSettings* settings; RunWindow *runwindow; -#ifndef NEWLIST - QStringList to_remove; - QStringList to_install; -#endif -#ifdef NEWLIST QList to_remove; QList to_install; -#endif bool runwindowopen; - void makeLinks(QString); + void makeLinks(Package*); void processLinkDir( QString, QString ); - - int runIpkg(const QString& args); + int runIpkg(const QString& args, const QString& dest="" ); void out( QString ); public slots: diff --git a/noncore/unsupported/oipkg/runwindow.ui b/noncore/unsupported/oipkg/runwindow.ui index 5359fe2..52da408 100644 --- a/noncore/unsupported/oipkg/runwindow.ui +++ b/noncore/unsupported/oipkg/runwindow.ui @@ -42,7 +42,7 @@ progress - 42 + 0 diff --git a/noncore/unsupported/oipkg/settings.h b/noncore/unsupported/oipkg/settings.h index 5df522b..cf6e614 100644 --- a/noncore/unsupported/oipkg/settings.h +++ b/noncore/unsupported/oipkg/settings.h @@ -20,8 +20,6 @@ public: bool createLinks(); QStringList getActiveServers(); QStringList getDestinationUrls(); - /** No descriptions */ - QComboBox getActiveDestinationCombo(); private: QIntDict serverurlDic; -- cgit v0.9.0.2