summaryrefslogtreecommitdiff
authortille <tille>2002-05-03 19:08:09 (UTC)
committer tille <tille>2002-05-03 19:08:09 (UTC)
commit4eddfebd1b4f70bbfe9106a16e9a3eeb6601f653 (patch) (side-by-side diff)
tree66d77ffe196c448782ce0d04877641280e74890d
parent6bf450ac622d22ba7e9156e474a7abb714167eba (diff)
downloadopie-4eddfebd1b4f70bbfe9106a16e9a3eeb6601f653.zip
opie-4eddfebd1b4f70bbfe9106a16e9a3eeb6601f653.tar.gz
opie-4eddfebd1b4f70bbfe9106a16e9a3eeb6601f653.tar.bz2
fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/oipkg/TODO3
-rw-r--r--noncore/unsupported/oipkg/main.cpp3
-rw-r--r--noncore/unsupported/oipkg/mainwindow.cpp10
-rw-r--r--noncore/unsupported/oipkg/mainwindow.h2
-rw-r--r--noncore/unsupported/oipkg/packagelistdoclnk.cpp3
-rw-r--r--noncore/unsupported/oipkg/packagelistremote.cpp1
-rw-r--r--noncore/unsupported/oipkg/pmipkg.cpp127
-rw-r--r--noncore/unsupported/oipkg/pmipkg.h2
8 files changed, 74 insertions, 77 deletions
diff --git a/noncore/unsupported/oipkg/TODO b/noncore/unsupported/oipkg/TODO
index b1ae6e3..6de54ec 100644
--- a/noncore/unsupported/oipkg/TODO
+++ b/noncore/unsupported/oipkg/TODO
@@ -1,14 +1,15 @@
* Settings Class
* tr() ;)
* Dialog to display ipkg output live
* parse "to install" and "to remove" from status
* install local file dialog
* qcop
* error handling
* manage links
* dependency checking
* create dest if it does not exist
* allow reinstalling
* different types of filters and searches
i.e. name, desc, files etc
-* mark packages from doclnk and ipkgfind installed if installed \ No newline at end of file
+* mark packages from doclnk and ipkgfind installed if installed
+* show if different version is installed \ No newline at end of file
diff --git a/noncore/unsupported/oipkg/main.cpp b/noncore/unsupported/oipkg/main.cpp
index bacc973..4af11df 100644
--- a/noncore/unsupported/oipkg/main.cpp
+++ b/noncore/unsupported/oipkg/main.cpp
@@ -1,23 +1,24 @@
#include "mainwindow.h"
#include <qpe/qpeapplication.h>
#include <qstring.h>
#include <qmessagebox.h>
int debugLevel;
int main( int argc, char ** argv )
{
debugLevel = 2;
if (argc > 0)
{
debugLevel = QString ( argv[1] ).toInt();
+ qDebug("setting debug level to %i",debugLevel);
}
QPEApplication a( argc, argv );
MainWindow mw;
- if (debugLevel < 4)
+ if (argc > 2)
QMessageBox::information( &mw, "oipkg","While ipkg is working\noipkg is hanging.\nPlease be patient!");
a.showMainDocumentWidget( &mw );
return a.exec();
}
diff --git a/noncore/unsupported/oipkg/mainwindow.cpp b/noncore/unsupported/oipkg/mainwindow.cpp
index 259a789..4f6e4cc 100644
--- a/noncore/unsupported/oipkg/mainwindow.cpp
+++ b/noncore/unsupported/oipkg/mainwindow.cpp
@@ -157,331 +157,333 @@ void MainWindow::makeMenu()
addToolBar( findBar, "Filter", QMainWindow::Top, TRUE );
label = new QLabel( tr("Filter: "), findBar );
label->setBackgroundColor( findBar->backgroundColor() );
findBar->setHorizontalStretchable( TRUE );
findEdit = new QLineEdit( findBar, "findEdit" );
findBar->setStretchableWidget( findEdit );
connect( findEdit, SIGNAL( textChanged( const QString & ) ),
this, SLOT( displayList() ) );
a = new QAction( tr( "Clear Find" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), findEdit, SLOT( clear() ) );
a->addTo( findBar );
a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) );
a->addTo( findBar );
findAction = new QAction( tr( "Filter" ), QString::null, 0, this, 0 );
connect( findAction, SIGNAL( toggled(bool) ), this, SLOT( findShow(bool) ) );
findAction->setToggleAction( true );
findAction->addTo( viewMenu );
//SEARCH
searchBar = new QPEToolBar(this);
addToolBar( searchBar, "Search", QMainWindow::Top, TRUE );
label = new QLabel( tr("ipkgfind: "), searchBar );
label->setBackgroundColor( searchBar->backgroundColor() );
searchBar->setHorizontalStretchable( TRUE );
searchEdit = new QLineEdit( searchBar, "seachEdit" );
searchBar->setStretchableWidget( searchEdit );
// connect( searchEdit, SIGNAL( textChanged( const QString & ) ),
// this, SLOT( displayList() ) );
a = new QAction( tr( "Clear Search" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), searchEdit, SLOT( clear() ) );
a->addTo( searchBar );
searchCommit = new QAction( tr( "Do Search" ), Resource::loadPixmap( "find" ), QString::null, 0, this, 0 );
connect( searchCommit, SIGNAL( activated() ), SLOT( remotePackageQuery() ) );
searchCommit->addTo( searchBar );
a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( searchClose() ) );
a->addTo( searchBar );
searchAction = new QAction( tr( "Search" ), QString::null, 0, this, 0 );
connect( searchAction, SIGNAL( toggled(bool) ), this, SLOT( searchShow(bool) ) );
searchAction->setToggleAction( true );
searchAction->addTo( viewMenu );
//DEST
destBar = new QPEToolBar(this);
addToolBar( destBar, "Destination", QMainWindow::Top, TRUE );
label = new QLabel( tr("Destination: "), destBar );
label->setBackgroundColor( destBar->backgroundColor() );
destBar->setHorizontalStretchable( TRUE );
destination = new QComboBox( false, destBar );
destination->insertStringList( settings->getDestinationNames() );
setComboName(destination,settings->getDestinationName());
connect( destination, SIGNAL(activated(int)),
settings, SLOT(activeDestinationChange(int)) );
spacer = new QLabel( " ", destBar );
spacer->setBackgroundColor( destBar->backgroundColor() );
CheckBoxLink = new QCheckBox( tr("Link"), destBar);
CheckBoxLink->setBackgroundColor( destBar->backgroundColor() );
CheckBoxLink->setChecked( settings->createLinks() );
connect( CheckBoxLink, SIGNAL(toggled(bool)),
settings, SLOT(linkEnabled(bool)) );
destAction = new QAction( tr( "Destinations" ), QString::null, 0, this, 0 );
connect( destAction, SIGNAL( toggled(bool) ), SLOT( destShow(bool) ) );
a = new QAction( tr( "Close Destinations" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), SLOT( destClose() ) );
a->addTo( destBar );
destBar->setStretchableWidget( CheckBoxLink );
destAction->setToggleAction( true );
// destAction->addTo( viewMenu );
// configure the menus
Config cfg( "oipkg", Config::User );
cfg.setGroup( "gui" );
findShow( cfg.readBoolEntry( "findBar", true ) );
searchShow( cfg.readBoolEntry( "searchBar", true ) );
sectionShow( cfg.readBoolEntry( "sectionBar", true ) );
destShow( cfg.readBoolEntry( "destBar", false ) );
}
MainWindow::~MainWindow()
{
pvDebug(7,"MainWindow::~MainWindow ");
Config cfg( "oipkg", Config::User );
cfg.setGroup( "gui" );
cfg.writeEntry( "findBar", !findBar->isHidden() );
cfg.writeEntry( "searchBar", !searchBar->isHidden() );
cfg.writeEntry( "sectionBar", !sectionBar->isHidden() );
cfg.writeEntry( "destBar", !destBar->isHidden() );
pvDebug(7,"MainWindow::~MainWindow ");
}
void MainWindow::runIpkg()
{
packageListServers.allPackages();
- ipkg->loadList( packageListSearch );
- ipkg->loadList( packageListDocLnk );
- ipkg->loadList( packageListServers );
+ ipkg->loadList( &packageListSearch );
+ ipkg->loadList( &packageListDocLnk );
+ ipkg->loadList( &packageListServers );
ipkg->commit();
// ##### 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()
{
// wait->show();
QTimer *t = new QTimer( this );
connect( t, SIGNAL(timeout()), SLOT( rotateUpdateIcon() ) );
t->start( 0, false );
packageListServers.clear();
packageListSearch.clear();
packageListDocLnk.clear();
ipkg->update();
packageListServers.update();
packageListSearch.update();
packageListDocLnk.update();
t->stop();
// wait->hide();
}
void MainWindow::filterList()
{
// wait->show();
QString f = "";
if ( findAction->isOn() ) f = findEdit->text();
packageListServers.filterPackages( f );
// wait->hide();
}
void MainWindow::displayList()
{
// wait->hide();
filterList();
listViewPackages->display();
}
void MainWindow::sectionChanged()
{
disconnect( section, SIGNAL( activated(int) ),
this, SLOT( sectionChanged() ) );
disconnect( subsection, SIGNAL(activated(int) ),
this, SLOT( subSectionChanged() ) );
subsection->clear();
packageListServers.setSection( section->currentText() );
setSubSections();
connect( section, SIGNAL( activated(int) ),
this, SLOT( sectionChanged() ) );
connect( subsection, SIGNAL(activated(int) ),
this, SLOT( subSectionChanged() ) );
displayList();
}
void MainWindow::subSectionChanged()
{
disconnect( section, SIGNAL( activated(int) ),
this, SLOT( sectionChanged() ) );
disconnect( subsection, SIGNAL(activated(int) ),
this, SLOT( subSectionChanged() ) );
packageListServers.setSubSection( subsection->currentText() );
connect( section, SIGNAL( activated(int) ),
this, SLOT( sectionChanged() ) );
connect( subsection, SIGNAL(activated(int) ),
this, SLOT( subSectionChanged() ) );
displayList();
}
void MainWindow::setSections()
{
section->clear();
section->insertStringList( packageListServers.getSections() );
}
void MainWindow::setSubSections()
{
subsection->clear();
subsection->insertStringList( packageListServers.getSubSections() );
}
void MainWindow::showSettings()
{
if ( settings->showDialog( 0 ) )
updateList();
}
void MainWindow::showSettingsSrv()
{
if ( settings->showDialog( 1 ) )
updateList();
}
void MainWindow::showSettingsDst()
{
if ( settings->showDialog( 2 ) )
updateList();
}
void MainWindow::sectionShow(bool b)
{
if (b) sectionBar->show();
else sectionBar->hide();
sectionAction->setOn( b );
}
void MainWindow::sectionClose()
{
sectionAction->setOn( false );
}
void MainWindow::findShow(bool b)
{
if (b) findBar->show();
else findBar->hide();
findAction->setOn( b );
}
void MainWindow::findClose()
{
findAction->setOn( false );
}
void MainWindow::searchShow(bool b)
{
if (b) searchBar->show();
else searchBar->hide();
searchAction->setOn( b );
}
void MainWindow::searchClose()
{
searchAction->setOn( false );
}
void MainWindow::destShow(bool b)
{
if (b) destBar->show();
else destBar->hide();
destAction->setOn( b );
}
void MainWindow::destClose()
{
destAction->setOn( false );
}
void MainWindow::rotateUpdateIcon()
{
pvDebug(2, "MainWindow::rotateUpdateIcon");
if ( updateIcon )
updateAction->setIconSet( Resource::loadIconSet( "oipkg/update" ) );
else
updateAction->setIconSet( Resource::loadIconSet( "oipkg/update2" ) );
updateIcon = !updateIcon;
}
void MainWindow::setDocument(const QString &fileName)
{
installFile(fileName);
// ##### 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();
+ // displayList();
+ exit;
}
void MainWindow::installFile(const QString &fileName)
{
pvDebug(3, "MainWindow::installFile "+fileName);
if ( !QFile::exists( fileName ) ) return;
ipkg->installFile( fileName );
// ##### 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::makeChannel()
{
channel = new QCopChannel( "QPE/Application/oipkg", this );
connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
this, SLOT(receive(const QCString&, const QByteArray&)) );
}
void MainWindow::receive(const QCString &msg, const QByteArray &arg)
{
pvDebug(3, "QCop "+msg+" "+QCString(arg));
if ( msg == "installFile(QString)" )
{
ipkg->installFile( QString(arg) );
}else if( msg == "removeFile(QString)" )
{
ipkg->removeFile( QString(arg) );
}else if( msg == "createLinks(QString)" )
{
ipkg->createLinks( QString(arg) );
}else if( msg == "removeLinks(QString)" )
{
ipkg->removeLinks( QString(arg) );
}else{
pvDebug(2,"Huh what do ya want")
}
}
void MainWindow::createLinks()
{
pvDebug(2,"creating links...");
ipkg->createLinks( settings->destinationurl->text() );
}
void MainWindow::removeLinks()
{
pvDebug(2,"removing links...");
ipkg->removeLinks( settings->destinationurl->text() );
}
void MainWindow::remotePackageQuery()
{
packageListSearch.query( searchEdit->text() );
+ packageListSearch.update();
displayList();
}
diff --git a/noncore/unsupported/oipkg/mainwindow.h b/noncore/unsupported/oipkg/mainwindow.h
index f6023b0..7c93dad 100644
--- a/noncore/unsupported/oipkg/mainwindow.h
+++ b/noncore/unsupported/oipkg/mainwindow.h
@@ -1,98 +1,98 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <qmainwindow.h>
#include <qaction.h>
#include <qtimer.h>
#include <qpopupmenu.h>
#include "packagelist.h"
#include "packagelistremote.h"
#include "packagelistlocal.h"
#include "packagelistdoclnk.h"
#include "pmipkg.h"
#include "pksettings.h"
#include "packagelistview.h"
class QComboBox;
class QPEToolBar;
class QLineEdit;
class PackageListItem;
class QCopChannel;
class QMessageBox;
class QCheckBox;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow( QWidget *parent = 0, const char *name = 0, WFlags f = 0 );
~MainWindow();
void makeChannel();
QCopChannel *channel;
protected slots:
void runIpkg();
void updateList();
void displayList();
void subSectionChanged();
void sectionChanged();
void showSettings();
void showSettingsSrv();
void showSettingsDst();
public slots:
void sectionClose();
void sectionShow(bool);
void findClose();
void findShow(bool);
void searchClose();
void searchShow(bool);
void destClose();
void destShow(bool);
void filterList();
void createLinks();
void removeLinks();
void receive (const QCString &, const QByteArray &);
void setDocument (const QString &);
void remotePackageQuery();
private:
void makeMenu();
void setSections();
void setSubSections();
void installFile(const QString &);
bool updateIcon;
PmIpkg* ipkg;
PackageManagerSettings *settings;
- PackageListLocal packageListServers;
+ PackageListLocal packageListServers;
PackageListRemote packageListSearch;
PackageListDocLnk packageListDocLnk;
PackageListView *listViewPackages;
QAction *runAction;
QAction *updateAction;
QAction *findAction;
QPEToolBar *findBar;
QLineEdit *findEdit;
QAction *searchAction;
QAction *searchCommit;
QPEToolBar *searchBar;
QLineEdit *searchEdit;
QAction *sectionAction;
QPEToolBar *sectionBar;
QComboBox *section;
QComboBox *subsection;
QAction *destAction;
QPEToolBar *destBar;
QComboBox *destination;
QCheckBox* CheckBoxLink;
// QMessageBox *wait;
private slots:
void rotateUpdateIcon();
};
#endif
diff --git a/noncore/unsupported/oipkg/packagelistdoclnk.cpp b/noncore/unsupported/oipkg/packagelistdoclnk.cpp
index 5787fdf..1d10adf 100644
--- a/noncore/unsupported/oipkg/packagelistdoclnk.cpp
+++ b/noncore/unsupported/oipkg/packagelistdoclnk.cpp
@@ -1,43 +1,44 @@
#include "packagelistdoclnk.h"
#include <qpe/applnk.h>
#include <qpe/config.h>
#include <qlist.h>
#include "package.h"
#include "pksettings.h"
PackageListDocLnk::PackageListDocLnk(PackageManagerSettings* s)
: PackageList(s)
{
PackageListDocLnk();
}
PackageListDocLnk::PackageListDocLnk()
: PackageList()
{
Config cfg( "oipkg", Config::User );
cfg.setGroup( "Common" );
docLnkDir = cfg.readEntry( "docLnkDir", "/root/" );
+ pvDebug(2,"opening DocLnkSet "+docLnkDir);
doclnkset = new DocLnkSet(docLnkDir,"application/ipkg");
}
PackageListDocLnk::~PackageListDocLnk()
{
Config cfg( "oipkg", Config::User );
cfg.setGroup( "Common" );
cfg.writeEntry( "docLnkDir", docLnkDir );
}
void PackageListDocLnk::update()
{
pvDebug(2,"PackageListDocLnk::update ");
- QList<DocLnk> packlist = doclnkset->children();
+ QList<DocLnk> packlist = doclnkset->children();
for (DocLnk *pack =packlist.first(); pack != 0; pack=packlist.next() )
{
insertPackage( new Package(pack->file(), settings) );
}
}
diff --git a/noncore/unsupported/oipkg/packagelistremote.cpp b/noncore/unsupported/oipkg/packagelistremote.cpp
index 3c6ede7..ee54fca 100644
--- a/noncore/unsupported/oipkg/packagelistremote.cpp
+++ b/noncore/unsupported/oipkg/packagelistremote.cpp
@@ -1,47 +1,48 @@
#include "packagelistremote.h"
#include <qstring.h>
#include <stdlib.h>
#include <unistd.h>
PackageListRemote::PackageListRemote(PackageManagerSettings* s)
: PackageList(s)
{
PackageListRemote();
}
PackageListRemote::PackageListRemote()
: PackageList()
{
}
PackageListRemote::~PackageListRemote()
{
}
void PackageListRemote::query(QString s)
{
+ pvDebug(4,"set query "+s);
searchString = s;
}
void PackageListRemote::update()
{
pvDebug(2,"PackageListRemote::update");
int r=0;
QString cmd = "wget";
QString redirect = "/tmp/oipkg.query";
// use file for output
cmd += " --output-document="+redirect;
//http://ipkgfind.handhelds.org/packages.phtml?format=pda&query=ipkg&searchtype=package&section=
QString server="http://ipkgfind.handhelds.org/";
cmd += " \""+server+"/packages.phtml";
cmd += "?format=pda&searchtype=package&section=";
cmd += "&query="+searchString;
cmd += "\"";
pvDebug(4,"search :"+cmd);
r = system(cmd.latin1());
readFileEntries( redirect );
}
diff --git a/noncore/unsupported/oipkg/pmipkg.cpp b/noncore/unsupported/oipkg/pmipkg.cpp
index fd8279b..0ae74da 100644
--- a/noncore/unsupported/oipkg/pmipkg.cpp
+++ b/noncore/unsupported/oipkg/pmipkg.cpp
@@ -1,417 +1,408 @@
#include "pmipkg.h"
#include "pksettings.h"
#include "package.h"
#include "packagelistitem.h"
#include <qpe/process.h>
#include <qpe/resource.h>
#include <qpe/config.h>
#include <qpe/stringutil.h>
#include <qdir.h>
#include <qfile.h>
#include <qgroupbox.h>
#include <qmultilineedit.h>
#include <qstring.h>
#include <qcheckbox.h>
#include <qtextstream.h>
#include <qtextview.h>
#include <qprogressbar.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <stdlib.h>
#include <unistd.h>
#include "mainwindow.h"
PmIpkg::PmIpkg( PackageManagerSettings* s, QWidget* p, const char * name, WFlags f )
: QObject ( p )
{
settings = s;
runwindow = new RunWindow( p, name, true, f );
}
PmIpkg::~PmIpkg()
{
}
//#define PROC
#define SYSTEM
int PmIpkg::runIpkg(const QString& args, const QString& dest )
{
pvDebug(2,"PmIpkg::runIpkg "+args);
#ifdef PROC
- QStringList cmd = "/usr/bin/ipkg ";
+ QStringList cmd = "ipkg ";
#endif
#ifdef SYSTEM
QString cmd = "/usr/bin/ipkg ";
#endif
pvDebug( 3,"PmIpkg::runIpkg got dest="+dest);
if ( dest == "" )
cmd += " -dest "+settings->getDestinationName();
else
cmd += " -dest "+ dest;
cmd += " -force-defaults ";
if (installDialog->_force_depends)
{
if (installDialog->_force_depends->isChecked())
cmd += " -force-depends ";
if (installDialog->_force_reinstall->isChecked())
cmd += " -force-reinstall ";
if (installDialog->_force_remove->isChecked())
cmd += " -force-removal-of-essential-packages ";
}
out( "<hr><br>Starting to "+ args+"<br>\n");
cmd += args;
int r = 0;
#ifdef PROC
QString o = "start";
Process *ipkg = new Process( cmd );
out( "running:<br>\n"+ipkg->arguments().join(" ")+"<br>\n" );
QString description;
- ipkg->exec("",o);
-// out( o );
+ r = ipkg->exec("",o);
+ out( o );
#endif
#ifdef SYSTEM
out( "running:<br>\n"+cmd+"<br>\n" );
QString redirect = "/tmp/oipkg.pipe";
cmd += " 2>&1 | tee "+redirect+" 2>&1";
pvDebug(2, "running >"+cmd+"<");
r = system(cmd.latin1());
QFile f( redirect );
QString line;
QString oldLine;
while ( ! f.open(IO_ReadOnly) ) {};
QTextStream t( &f );
while ( !t.eof() )
{
line = t.readLine();
if ( line != oldLine )
{
out( line +"<br>" );
oldLine = line;
}
}
f.close();
out( "Finished!<br>");
#endif
return r;
}
void PmIpkg::makeLinks(Package *pack)
{
pvDebug( 2, "PmIpkg::makeLinks "+ pack->name());
linkPackage( pack->name(), pack->dest() );
}
QStringList* PmIpkg::getList( QString packFileName, QString d )
{
QString dest = settings->getDestinationUrlByName( d );
dest = dest==""?d:dest;
if (dest == "/" ) return 0;
{
Config cfg( "oipkg", Config::User );
cfg.setGroup( "Common" );
QString statusDir = cfg.readEntry( "statusDir", "" );
}
packFileName = dest+"/"+statusDir+"/info/"+packFileName+".list";
QFile f( packFileName );
if ( ! f.open(IO_ReadOnly) )
{
pvDebug(1," Panik! Could not open");
out( "<b>Panik!</b> Could not open:<br>"+packFileName );
return (QStringList*)0;
}
QStringList *fileList = new QStringList();
QTextStream t( &f );
while ( !t.eof() )
{
*fileList += t.readLine();
}
return fileList;
}
void PmIpkg::linkPackage( QString packFileName, QString dest )
{
QStringList *fileList = getList( packFileName, dest );
processFileList( fileList, dest );
delete fileList;
}
void PmIpkg::processFileList( QStringList *fileList, QString d )
{
if (!fileList) return;
for (uint i=0; i < fileList->count(); i++)
{
QString dest = settings->getDestinationUrlByName( d );
dest = dest==""?d:dest;
processLinkDir( (*fileList)[i], dest );
}
}
void PmIpkg::processLinkDir( QString file, QString dest )
{
pvDebug( 4,"PmIpkg::processLinkDir "+file+" to "+ dest);
if (linkOpp==createLink) pvDebug( 4,"opp: createLink");
if (linkOpp==removeLink) pvDebug( 4,"opp: removeLink");
if ( dest == "???" || dest == "" ) return;
QString destFile = file;
file = dest+"/"+file;
if (file == dest) return;
QFileInfo fileInfo( file );
if ( fileInfo.isDir() )
{
pvDebug(4, "process dir "+file);
QDir destDir( destFile );
if (linkOpp==createLink) destDir.mkdir( destFile, true );
QDir d( file );
// d.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
const QFileInfoList *list = d.entryInfoList();
QFileInfoListIterator it( *list );
QFileInfo *fi;
- qDebug( "while %i",list->count());
while ( (fi=it.current()) )
{
pvDebug(4, "processLinkDir "+fi->absFilePath());
processLinkDir( fi->absFilePath(), dest );
++it;
}
} else
if ( fileInfo.isFile() )
{
const char *instFile = strdup( (file).ascii() );
const char *linkFile = strdup( (destFile).ascii());
if( linkOpp==createLink )
{
pvDebug(4, "linking: "+file+" -> "+destFile );
symlink( instFile, linkFile );
}
} else {
const char *linkFile = strdup( (destFile).ascii());
if( linkOpp==removeLink )
{
QFileInfo toRemoveLink( destFile );
if ( !QFile::exists( file ) && toRemoveLink.isSymLink() )
{
pvDebug(4,"removing "+destFile+" no "+file);
unlink( linkFile );
}
}
}
}
-void PmIpkg::loadList( PackageList pl )
+void PmIpkg::loadList( PackageList *pl )
{
- for( Package *pack = pl.first();pack ; (pack = pl.next()) )
+ for( Package *pack = pl->first();pack ; (pack = pl->next()) )
{
if ( pack && (pack->name() != "") && pack)
{
if ( pack->toInstall() )
to_install.append( pack );
if ( pack->toRemove() )
to_remove.append( pack );
}
}
}
void PmIpkg::commit()
{
int sizecount = 0;
- for (uint i=0; i < to_remove.count(); i++)
- sizecount += 1;
- for (uint i=0; i < to_install.count(); i++)
- sizecount += to_install.at(i)->size().toInt();
- runwindow->progress->setTotalSteps(sizecount);
- startDialog();
-}
-
-void PmIpkg::startDialog()
-{
installDialog = new InstallDialog(settings,0,0,true);
- QCheckListItem *toRemoveItem;
- toRemoveItem= new QCheckListItem( installDialog->ListViewPackages, QObject::tr("To remove") );
+ QCheckListItem *toRemoveItem = new QCheckListItem( installDialog->ListViewPackages, QObject::tr("To remove") );
+ QCheckListItem *toInstallItem = new QCheckListItem( installDialog->ListViewPackages, QObject::tr("To install") );
toRemoveItem->setOpen( true );
- for (Package *it=to_remove.first(); it != 0; it=to_remove.next() )
+ toInstallItem->setOpen( true );
+ for (uint i=0; i < to_remove.count(); i++)
{
- toRemoveItem->insertItem( new PackageListItem(installDialog->ListViewPackages, it,settings) );
+ sizecount += 1;
+ toRemoveItem->insertItem( new PackageListItem(installDialog->ListViewPackages, to_remove.at(i),settings) );
}
- QCheckListItem *toInstallItem;
- toInstallItem = new QCheckListItem( installDialog->ListViewPackages, QObject::tr("To install") );
- toInstallItem->setOpen( true );
- for (Package *it=to_install.first(); it != 0; it=to_install.next() )
+ for (uint i=0; i < to_install.count(); i++)
{
- toInstallItem->insertItem( new PackageListItem(installDialog->ListViewPackages, it,settings) );
+ sizecount += to_install.at(i)->size().toInt();
+ toInstallItem->insertItem( new PackageListItem(installDialog->ListViewPackages, to_install.at(i),settings) );
}
+ runwindow->progress->setTotalSteps(sizecount);
+ qDebug("Install size %i",sizecount);
installDialog->showMaximized();
if ( installDialog->exec() ) doIt();
installDialog->close();
+ runwindow->showMaximized();
out(tr("<b>All done.</b>"));
- to_install.clear();
}
void PmIpkg::doIt()
{
show( true );
remove();
install();
}
void PmIpkg::remove()
{
if ( to_remove.count() == 0 ) return;
out("<b>"+tr("Removing")+"<br>"+tr("please wait")+"</b><br><hr>");
QStringList *fileList;
- for (Package *it=to_remove.first(); it != 0; it=to_remove.next() )
+ for (uint i=0; i < to_remove.count(); i++)
{
- if ( it->link() )fileList = getList( it->name(), it->dest() );
- if ( runIpkg("remove " + it->name(), it->dest() ) == 0)
- {
- runwindow->progress->setProgress( 1 + runwindow->progress->progress() );
- linkOpp = removeLink;
- if ( it->link() )
- {
+ if ( to_remove.at(i)->link() )fileList = getList( to_remove.at(i)->name(), to_remove.at(i)->dest() );
+ if ( runIpkg("remove " + to_remove.at(i)->name(), to_remove.at(i)->dest() ) == 0)
+ {
+ runwindow->progress->setProgress( 1 );
+ linkOpp = removeLink;
+ if ( to_remove.at(i)->link() )
+ {
out( "<br>removing links<br>" );
- out( "for package "+it->name()+" in "+it->dest()+"<br>" );
- processFileList( fileList, it->dest() );
- }
- it->processed();
-// to_install.take( it );
- out("<br><hr>");
- }else{
- out("<b>"+tr("Error while removing")+"</b><hr>"+it->name());
+ out( "for package "+to_remove.at(i)->name()+" in "+to_remove.at(i)->dest()+"<br>" );
+ processFileList( fileList, to_remove.at(i)->dest() );
}
- if ( it->link() )delete fileList;
+ to_remove.at(i)->processed();
+ to_remove.take( i );
+ out("<br><hr>");
+ }else{
+ out("<b>"+tr("Error while removing")+"</b><hr>"+to_remove.at(i)->name());
}
- out("<br>");
+ if ( to_remove.at(i)->link() )delete fileList;
+ }
+ to_remove.clear();
+ out("<br>");
}
void PmIpkg::install()
{
if ( to_install.count() == 0 ) return;
- out("<b>"+tr("Installing")+"<br>"+tr("please wait")+"</b><br>");
- for (Package *it=to_install.first(); it != 0; it=to_install.next() )
- {
-
- if ( runIpkg("install " + it->installName(), it->dest() ) == 0 )
- {
- runwindow->progress->setProgress( it->size().toInt() + runwindow->progress->progress());
- linkOpp = createLink;
- if ( it->link() )
- {
- out( "<br>creating links<br>" );
- out( "for package "+it->name()+" in "+it->dest()+"<br>" );
- makeLinks( it );
- }
- it->processed();
-// to_install.take( it->name() );
- out("<br><hr>");
- }else{
- out("<b>"+tr("Error while installing")+"</b><hr>"+it->name());
- }
+ out("<b>"+tr("Installing")+"<br>"+tr("please wait")+"</b><br>");
+ for (uint i=0; i < to_install.count(); i++)
+ {
+ if ( runIpkg("install " + to_install.at(i)->installName(), to_install.at(i)->dest() ) == 0 )
+ {
+ runwindow->progress->setProgress( to_install.at(i)->size().toInt() );
+ linkOpp = createLink;
+ if ( to_install.at(i)->link() )
+ {
+ out( "<br>creating links<br>" );
+ out( "for package "+to_install.at(i)->name()+" in "+to_install.at(i)->dest()+"<br>" );
+ makeLinks( to_install.at(i) );
+ }
+ to_install.at(i)->processed();
+ to_install.take( i );
+ out("<br><hr>");
+ }else{
+ out("<b>"+tr("Error while installing")+"</b><hr>"+to_install.at(i)->name());
}
- out("<br>");
- to_install.clear();
+ }
+ out("<br>");
+ to_install.clear();
}
void PmIpkg::createLinks( const QString &dest )
{
pvDebug(2,"PmIpkg::createLinks "+dest);
linkOpp=createLink;
QString url = settings->getDestinationUrlByName( dest );
url = url==""?dest:url;
processLinkDir( "/opt", url );
processLinkDir( "/usr", url );
}
void PmIpkg::removeLinks( const QString &dest )
{
pvDebug(2,"PmIpkg::removeLinks "+dest);
linkOpp=removeLink;
QString url = settings->getDestinationUrlByName( dest );
url = url==""?dest:url;
processLinkDir( "/opt", url );
processLinkDir( "/usr", url );
}
void PmIpkg::update()
{
show( false );
runIpkg( "update" );
runwindow->close();
}
void PmIpkg::out( QString o )
{
runwindow->outPut->append(o);
//runwindow->outPut->setCursorPosition(0, runwindow->outPut->contentsHeight());
// runwindow->outPut->setText( runwindow->outPut->text()+o );
runwindow->outPut->setContentsPos(0, runwindow->outPut->contentsHeight());
}
void PmIpkg::showButtons(bool b)
{
if ( b )
{
runwindow->cancelButton->hide();
runwindow->doItButton->hide();
runwindow->removeButton->hide();
runwindow->installButton->hide();
}else{
runwindow->cancelButton->show();
runwindow->doItButton->show();
runwindow->removeButton->show();
runwindow->installButton->show();
}
}
void PmIpkg::show(bool b)
{
if (!runwindow->isVisible())
runwindow->showMaximized();
showButtons(b);
if ( !b )
runwindow->progress->hide();
else
runwindow->progress->show();
}
void PmIpkg::installFile(const QString &fileName, const QString &dest)
{
to_install.clear();
to_remove.clear();
pvDebug( 2,"PmIpkg::installFile "+ fileName);
Package *p = new Package(fileName,settings);
if ( dest!="") p->setDest( dest );
to_install.append( p );
- startDialog();
+ commit();
delete p;
}
void PmIpkg::removeFile(const QString &fileName, const QString &dest)
{
to_install.clear();
to_remove.clear();
pvDebug( 2,"PmIpkg::removeFile "+ fileName);
Package *p = new Package(fileName,settings);
if ( dest!="") p->setDest( dest );
to_remove.append( p );
- startDialog();
+ commit();
delete p;
}
diff --git a/noncore/unsupported/oipkg/pmipkg.h b/noncore/unsupported/oipkg/pmipkg.h
index d2490e8..7bc62f1 100644
--- a/noncore/unsupported/oipkg/pmipkg.h
+++ b/noncore/unsupported/oipkg/pmipkg.h
@@ -1,64 +1,64 @@
#ifndef PMIPKG_H
#define PMIPKG_H
#include <qobject.h>
#include <qlist.h>
#include <qstring.h>
#include <qwidget.h>
#include "pksettings.h"
#include "runwindow.h"
#include "packagelist.h"
#include "installdialog.h"
#include "debug.h"
#define createLink 0
#define removeLink 1
class Package;
class PmIpkg : public QObject
{
Q_OBJECT
public:
PmIpkg( PackageManagerSettings* , QWidget* p=0, const char * name=0, WFlags f=0 );
~PmIpkg();
int linkOpp;
- void loadList( PackageList );
+ void loadList( PackageList* );
void commit();
void update();
void showButtons(bool b=true);
void show( bool buttons=true );
public slots:
void doIt();
void install();
void remove();
void installFile(const QString &fileName, const QString &dest="");
void removeFile(const QString &fileName, const QString &dest="");
void createLinks( const QString &dest );
void removeLinks( const QString &dest );
private:
PackageManagerSettings* settings;
RunWindow *runwindow;
InstallDialog *installDialog;
QList<Package> to_remove;
QList<Package> to_install;
QString fileNameToInstall;
QCheckBox *_force_reinstall;
QCheckBox *_force_remove;
QCheckBox *_force_depends;
void startDialog();
void makeLinks(Package*);
void linkPackage( QString, QString );
void processLinkDir( QString , QString );
int runIpkg(const QString& args, const QString& dest="" );
void out( QString );
QStringList* getList( QString, QString );
void processFileList( QStringList*, QString );
};
#endif