author | andyq <andyq> | 2002-10-17 23:24:27 (UTC) |
---|---|---|
committer | andyq <andyq> | 2002-10-17 23:24:27 (UTC) |
commit | 30b26ed0dbbbee829f16ab8ea1e531b89938232d (patch) (side-by-side diff) | |
tree | 89f2639cfc97e74fa15c50cd360acba25e9a2cab | |
parent | cd48ed3935f1baa6392afee5764d0927abcf62cc (diff) | |
download | opie-30b26ed0dbbbee829f16ab8ea1e531b89938232d.zip opie-30b26ed0dbbbee829f16ab8ea1e531b89938232d.tar.gz opie-30b26ed0dbbbee829f16ab8ea1e531b89938232d.tar.bz2 |
Fixed bug which caused links to be recreated even if same version of package was reinstalled
-rw-r--r-- | noncore/settings/aqpkg/installdlgimpl.cpp | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/noncore/settings/aqpkg/installdlgimpl.cpp b/noncore/settings/aqpkg/installdlgimpl.cpp index bbb0be75..e122064 100644 --- a/noncore/settings/aqpkg/installdlgimpl.cpp +++ b/noncore/settings/aqpkg/installdlgimpl.cpp @@ -45,196 +45,192 @@ InstallDlgImpl::InstallDlgImpl( vector<InstallData> &packageList, DataManager *d cfg.setGroup( "settings" ); defaultDest = cfg.readEntry( "dest", "root" ); // Grab flags - Turn MAKE_LINKS on by default (if no flags found) // flags = cfg.readNumEntry( "installFlags", MAKE_LINKS ); flags = 0; #else flags = 0; #endif // Output text is read only output->setReadOnly( true ); QFont f( "helvetica" ); f.setPointSize( 10 ); output->setFont( f ); // setup destination data int defIndex = 0; int i; for ( i = 0 , dit = dataMgr->getDestinationList().begin() ; dit != dataMgr->getDestinationList().end() ; ++dit, ++i ) { destination->insertItem( dit->getDestinationName() ); if ( dit->getDestinationName() == defaultDest ) defIndex = i; } destination->setCurrentItem( defIndex ); vector<InstallData>::iterator it; // setup package data QString remove = "Remove\n"; QString install = "\nInstall\n"; QString upgrade = "\nUpgrade\n"; for ( it = packageList.begin() ; it != packageList.end() ; ++it ) { InstallData item = *it; if ( item.option == "I" ) { installList.push_back( item ); install += " " + item.packageName + "\n"; } else if ( item.option == "D" ) { removeList.push_back( item ); remove += " " + item.packageName + "\n"; } else if ( item.option == "U" ) { updateList.push_back( item ); upgrade += " " + item.packageName + "\n"; } } output->setText( remove + install + upgrade ); connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); } InstallDlgImpl::InstallDlgImpl( QWidget *parent, const char *name, bool modal, WFlags fl ) : InstallDlg( parent, name, modal, fl ) { upgradePackages = true; output->setText( "Upgrading installed packages" ); connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); } InstallDlgImpl::~InstallDlgImpl() { } bool InstallDlgImpl :: showDlg() { showMaximized(); bool ret = exec(); return ret; } void InstallDlgImpl :: optionsSelected() { InstallOptionsDlgImpl opt( flags, this, "Option", true ); opt.exec(); // set options selected from dialog flags = 0; if ( opt.forceDepends->isChecked() ) flags |= FORCE_DEPENDS; if ( opt.forceReinstall->isChecked() ) flags |= FORCE_REINSTALL; if ( opt.forceRemove->isChecked() ) flags |= FORCE_REMOVE; if ( opt.forceOverwrite->isChecked() ) flags |= FORCE_OVERWRITE; #ifdef QWS Config cfg( "aqpkg" ); cfg.setGroup( "settings" ); cfg.writeEntry( "installFlags", flags ); #endif } void InstallDlgImpl :: installSelected() { if ( btnInstall->text() == "Close" ) { done( 1 ); return; } btnInstall->setEnabled( false ); if ( upgradePackages ) { output->setText( "" ); Ipkg ipkg; connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); ipkg.setOption( "upgrade" ); ipkg.runIpkg(); } else { output->setText( "" ); Destination *d = dataMgr->getDestination( destination->currentText() ); QString dest = d->getDestinationName(); QString destDir = d->getDestinationPath(); - int instFlags = 0; + int instFlags = flags; if ( d->linkToRoot() ) - instFlags = MAKE_LINKS; + instFlags |= MAKE_LINKS; #ifdef QWS // Save settings Config cfg( "aqpkg" ); cfg.setGroup( "settings" ); cfg.writeEntry( "dest", dest ); #endif // First run through the remove list, then the install list then the upgrade list vector<InstallData>::iterator it; ipkg.setOption( "remove" ); for ( it = removeList.begin() ; it != removeList.end() ; ++it ) { ipkg.setDestination( it->destination->getDestinationName() ); ipkg.setDestinationDir( it->destination->getDestinationPath() ); ipkg.setPackage( it->packageName ); int tmpFlags = flags; if ( it->destination->linkToRoot() ) tmpFlags |= MAKE_LINKS; - else - tmpFlags ^= MAKE_LINKS; ipkg.setFlags( tmpFlags ); ipkg.runIpkg(); } ipkg.setOption( "install" ); ipkg.setDestination( dest ); ipkg.setDestinationDir( destDir ); ipkg.setFlags( instFlags ); for ( it = installList.begin() ; it != installList.end() ; ++it ) { ipkg.setPackage( it->packageName ); ipkg.runIpkg(); } flags |= FORCE_REINSTALL; ipkg.setOption( "reinstall" ); for ( it = updateList.begin() ; it != updateList.end() ; ++it ) { ipkg.setDestination( it->destination->getDestinationName() ); ipkg.setDestinationDir( it->destination->getDestinationPath() ); ipkg.setPackage( it->packageName ); int tmpFlags = flags; if ( it->destination->linkToRoot() && it->recreateLinks ) tmpFlags |= MAKE_LINKS; - else - tmpFlags ^= MAKE_LINKS; ipkg.setFlags( tmpFlags ); ipkg.runIpkg(); } } btnInstall->setEnabled( true ); btnInstall->setText( tr( "Close" ) ); } void InstallDlgImpl :: displayText(const QString &text ) { QString t = output->text() + "\n" + text; output->setText( t ); output->setCursorPosition( output->numLines(), 0 ); } |