summaryrefslogtreecommitdiff
authorandyq <andyq>2002-10-17 23:24:27 (UTC)
committer andyq <andyq>2002-10-17 23:24:27 (UTC)
commit30b26ed0dbbbee829f16ab8ea1e531b89938232d (patch) (side-by-side diff)
tree89f2639cfc97e74fa15c50cd360acba25e9a2cab
parentcd48ed3935f1baa6392afee5764d0927abcf62cc (diff)
downloadopie-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
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/installdlgimpl.cpp8
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 );
}