summaryrefslogtreecommitdiff
path: root/noncore/settings/aqpkg/installdlgimpl.cpp
Unidiff
Diffstat (limited to 'noncore/settings/aqpkg/installdlgimpl.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/installdlgimpl.cpp130
1 files changed, 97 insertions, 33 deletions
diff --git a/noncore/settings/aqpkg/installdlgimpl.cpp b/noncore/settings/aqpkg/installdlgimpl.cpp
index 76d0a80..896e370 100644
--- a/noncore/settings/aqpkg/installdlgimpl.cpp
+++ b/noncore/settings/aqpkg/installdlgimpl.cpp
@@ -40,25 +40,25 @@
40#include "datamgr.h" 40#include "datamgr.h"
41#include "destination.h" 41#include "destination.h"
42#include "instoptionsimpl.h" 42#include "instoptionsimpl.h"
43#include "installdlgimpl.h" 43#include "installdlgimpl.h"
44#include "ipkg.h" 44#include "ipkg.h"
45#include "utils.h" 45#include "utils.h"
46#include "global.h" 46#include "global.h"
47 47
48enum { 48enum {
49 MAXLINES = 100, 49 MAXLINES = 100,
50}; 50};
51 51
52InstallDlgImpl::InstallDlgImpl( QList<InstallData> &packageList, DataManager *dataManager, const char *title ) 52InstallDlgImpl::InstallDlgImpl( const QList<InstallData> &packageList, DataManager *dataManager, const char *title )
53 : QWidget( 0, 0, 0 ) 53 : QWidget( 0, 0, 0 )
54{ 54{
55 setCaption( title ); 55 setCaption( title );
56 init( TRUE ); 56 init( TRUE );
57 57
58 pIpkg = 0; 58 pIpkg = 0;
59 upgradePackages = false; 59 upgradePackages = false;
60 dataMgr = dataManager; 60 dataMgr = dataManager;
61 61
62 QString defaultDest = "root"; 62 QString defaultDest = "root";
63#ifdef QWS 63#ifdef QWS
64 Config cfg( "aqpkg" ); 64 Config cfg( "aqpkg" );
@@ -92,54 +92,53 @@ InstallDlgImpl::InstallDlgImpl( QList<InstallData> &packageList, DataManager *da
92 92
93 destination->setCurrentItem( defIndex ); 93 destination->setCurrentItem( defIndex );
94 94
95 QListIterator<InstallData> it( packageList ); 95 QListIterator<InstallData> it( packageList );
96 // setup package data 96 // setup package data
97 QString remove = tr( "Remove\n" ); 97 QString remove = tr( "Remove\n" );
98 QString install = tr( "Install\n" ); 98 QString install = tr( "Install\n" );
99 QString upgrade = tr( "Upgrade\n" ); 99 QString upgrade = tr( "Upgrade\n" );
100 for ( ; it.current(); ++it ) 100 for ( ; it.current(); ++it )
101 { 101 {
102 InstallData *item = it.current(); 102 InstallData *item = it.current();
103 InstallData *newitem = new InstallData(); 103 InstallData *newitem = new InstallData();
104 104
105 newitem->option = item->option; 105 newitem->option = item->option;
106 newitem->packageName = item->packageName; 106 newitem->packageName = item->packageName;
107 newitem->destination = item->destination; 107 newitem->destination = item->destination;
108 newitem->recreateLinks = item->recreateLinks; 108 newitem->recreateLinks = item->recreateLinks;
109 109 packages.append( newitem );
110 if ( item->option == "I" ) 110
111 if ( item->option == "I" )
111 { 112 {
112 installList.append( newitem );
113 install.append( QString( " %1\n" ).arg( item->packageName ) ); 113 install.append( QString( " %1\n" ).arg( item->packageName ) );
114 } 114 }
115 else if ( item->option == "D" ) 115 else if ( item->option == "D" )
116 { 116 {
117 removeList.append( newitem );
118 remove.append( QString( " %1\n" ).arg( item->packageName ) ); 117 remove.append( QString( " %1\n" ).arg( item->packageName ) );
119 } 118 }
120 else if ( item->option == "U" || item->option == "R" ) 119 else if ( item->option == "U" || item->option == "R" )
121 { 120 {
122 updateList.append( newitem ); 121 QString type;
123 QString type; 122 if ( item->option == "R" )
124 if ( item->option == "R" ) 123 type = tr( "(ReInstall)" );
125 type = tr( "(ReInstall)" ); 124 else
126 else 125 type = tr( "(Upgrade)" );
127 type = tr( "(Upgrade)" ); 126 upgrade.append( QString( " %1 %2\n" ).arg( item->packageName ).arg( type ) );
128 upgrade.append( QString( " %1 %2\n" ).arg( item->packageName ).arg( type ) ); 127 }
129 } 128 }
130 }
131 output->setText( QString( "%1\n%2\n%3\n" ).arg( remove ).arg( install ).arg( upgrade ) );
132 129
133 displayAvailableSpace( destination->currentText() ); 130 output->setText( QString( "%1\n%2\n%3\n" ).arg( remove ).arg( install ).arg( upgrade ) );
131
132 displayAvailableSpace( destination->currentText() );
134} 133}
135 134
136InstallDlgImpl::InstallDlgImpl( Ipkg *ipkg, QString initialText, const char *title ) 135InstallDlgImpl::InstallDlgImpl( Ipkg *ipkg, QString initialText, const char *title )
137 : QWidget( 0, 0, 0 ) 136 : QWidget( 0, 0, 0 )
138{ 137{
139 setCaption( title ); 138 setCaption( title );
140 init( FALSE ); 139 init( FALSE );
141 pIpkg = ipkg; 140 pIpkg = ipkg;
142 output->setText( initialText ); 141 output->setText( initialText );
143} 142}
144 143
145 144
@@ -259,48 +258,54 @@ void InstallDlgImpl :: installSelected()
259 258
260 // Disable buttons 259 // Disable buttons
261 btnOptions->setEnabled( false ); 260 btnOptions->setEnabled( false );
262// btnInstall->setEnabled( false ); 261// btnInstall->setEnabled( false );
263 262
264 btnInstall->setText( tr( "Abort" ) ); 263 btnInstall->setText( tr( "Abort" ) );
265 btnInstall->setIconSet( Resource::loadPixmap( "close" ) ); 264 btnInstall->setIconSet( Resource::loadPixmap( "close" ) );
266 265
267 if ( pIpkg ) 266 if ( pIpkg )
268 { 267 {
269 output->setText( "" ); 268 output->setText( "" );
270 connect( pIpkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); 269 connect( pIpkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &)));
270 connect( pIpkg, SIGNAL(ipkgFinished()), this, SLOT(ipkgFinished()));
271 pIpkg->runIpkg(); 271 pIpkg->runIpkg();
272 } 272 }
273 else 273 else
274 { 274 {
275 output->setText( "" ); 275 output->setText( "" );
276 Destination *d = dataMgr->getDestination( destination->currentText() ); 276 Destination *d = dataMgr->getDestination( destination->currentText() );
277 QString dest = d->getDestinationName(); 277 QString dest = d->getDestinationName();
278 QString destDir = d->getDestinationPath(); 278 QString destDir = d->getDestinationPath();
279 int instFlags = flags; 279 int instFlags = flags;
280 if ( d->linkToRoot() ) 280 if ( d->linkToRoot() )
281 instFlags |= MAKE_LINKS; 281 instFlags |= MAKE_LINKS;
282 282
283#ifdef QWS 283#ifdef QWS
284 // Save settings 284 // Save settings
285 Config cfg( "aqpkg" ); 285 Config cfg( "aqpkg" );
286 cfg.setGroup( "settings" ); 286 cfg.setGroup( "settings" );
287 cfg.writeEntry( "dest", dest ); 287 cfg.writeEntry( "dest", dest );
288#endif 288#endif
289 289
290 pIpkg = new Ipkg; 290 pIpkg = new Ipkg;
291 connect( pIpkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); 291 connect( pIpkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &)));
292 connect( pIpkg, SIGNAL(ipkgFinished()), this, SLOT(ipkgFinished()));
293
294 firstPackage = TRUE;
295 ipkgFinished();
292 296
293 // First run through the remove list, then the install list then the upgrade list 297 // First run through the remove list, then the install list then the upgrade list
294 pIpkg->setOption( "remove" ); 298/*
299 pIpkg->setOption( "remove" );
295 QListIterator<InstallData> it( removeList ); 300 QListIterator<InstallData> it( removeList );
296 InstallData *idata; 301 InstallData *idata;
297 for ( ; it.current(); ++it ) 302 for ( ; it.current(); ++it )
298 { 303 {
299 idata = it.current(); 304 idata = it.current();
300 pIpkg->setDestination( idata->destination->getDestinationName() ); 305 pIpkg->setDestination( idata->destination->getDestinationName() );
301 pIpkg->setDestinationDir( idata->destination->getDestinationPath() ); 306 pIpkg->setDestinationDir( idata->destination->getDestinationPath() );
302 pIpkg->setPackage( idata->packageName ); 307 pIpkg->setPackage( idata->packageName );
303 308
304 int tmpFlags = flags; 309 int tmpFlags = flags;
305 if ( idata->destination->linkToRoot() ) 310 if ( idata->destination->linkToRoot() )
306 tmpFlags |= MAKE_LINKS; 311 tmpFlags |= MAKE_LINKS;
@@ -333,36 +338,26 @@ void InstallDlgImpl :: installSelected()
333 pIpkg->setDestinationDir( idata->destination->getDestinationPath() ); 338 pIpkg->setDestinationDir( idata->destination->getDestinationPath() );
334 pIpkg->setPackage( idata->packageName ); 339 pIpkg->setPackage( idata->packageName );
335 340
336 int tmpFlags = flags; 341 int tmpFlags = flags;
337 if ( idata->destination->linkToRoot() && idata->recreateLinks ) 342 if ( idata->destination->linkToRoot() && idata->recreateLinks )
338 tmpFlags |= MAKE_LINKS; 343 tmpFlags |= MAKE_LINKS;
339 pIpkg->setFlags( tmpFlags, infoLevel ); 344 pIpkg->setFlags( tmpFlags, infoLevel );
340 pIpkg->runIpkg(); 345 pIpkg->runIpkg();
341 } 346 }
342 347
343 delete pIpkg; 348 delete pIpkg;
344 pIpkg = 0; 349 pIpkg = 0;
350*/
345 } 351 }
346
347 btnOptions->setEnabled( true );
348// btnInstall->setEnabled( true );
349 btnInstall->setText( tr( "Close" ) );
350 btnInstall->setIconSet( Resource::loadPixmap( "enter" ) );
351
352 btnOptions->setText( tr( "Save output" ) );
353 btnOptions->setIconSet( Resource::loadPixmap( "save" ) );
354
355 if ( destination && destination->currentText() != 0 && destination->currentText() != "" )
356 displayAvailableSpace( destination->currentText() );
357} 352}
358 353
359 354
360void InstallDlgImpl :: displayText(const QString &text ) 355void InstallDlgImpl :: displayText(const QString &text )
361{ 356{
362 QString newtext = QString( "%1\n%2" ).arg( output->text() ).arg( text ); 357 QString newtext = QString( "%1\n%2" ).arg( output->text() ).arg( text );
363 358
364 /* Set a max line count for the QMultiLineEdit, as users have reported 359 /* Set a max line count for the QMultiLineEdit, as users have reported
365 * performance issues when line count gets extreme. 360 * performance issues when line count gets extreme.
366 */ 361 */
367 if(output->numLines() >= MAXLINES) 362 if(output->numLines() >= MAXLINES)
368 output->removeLine(0); 363 output->removeLine(0);
@@ -391,12 +386,81 @@ void InstallDlgImpl :: displayAvailableSpace( const QString &text )
391 long avail = availBlocks * mult / div; 386 long avail = availBlocks * mult / div;
392// long used = total - avail; 387// long used = total - avail;
393 388
394 space.sprintf( "%ld Kb", avail ); 389 space.sprintf( "%ld Kb", avail );
395 } 390 }
396 else 391 else
397 space = tr( "Unknown" ); 392 space = tr( "Unknown" );
398 393
399 if ( txtAvailableSpace ) 394 if ( txtAvailableSpace )
400 txtAvailableSpace->setText( space ); 395 txtAvailableSpace->setText( space );
401} 396}
402 397
398void InstallDlgImpl :: ipkgFinished()
399{
400 InstallData *item;
401 if ( firstPackage )
402 item = packages.first();
403 else
404 {
405 // Create symlinks if necessary before moving on to next package
406 pIpkg->createSymLinks();
407
408 item = packages.next();
409 }
410
411 firstPackage = FALSE;
412 if ( item )
413 {
414 pIpkg->setPackage( item->packageName );
415 int tmpFlags = flags;
416
417 if ( item->option == "I" )
418 {
419 pIpkg->setOption( "install" );
420 Destination *d = dataMgr->getDestination( destination->currentText() );
421 pIpkg->setDestination( d->getDestinationName() );
422 pIpkg->setDestinationDir( d->getDestinationPath() );
423
424 if ( d->linkToRoot() )
425 tmpFlags |= MAKE_LINKS;
426 }
427 else if ( item->option == "D" )
428 {
429 pIpkg->setOption( "remove" );
430 pIpkg->setDestination( item->destination->getDestinationName() );
431 pIpkg->setDestinationDir( item->destination->getDestinationPath() );
432
433 if ( item->destination->linkToRoot() )
434 tmpFlags |= MAKE_LINKS;
435 }
436 else
437 {
438 if ( item->option == "R" )
439 pIpkg->setOption( "reinstall" );
440 else
441 pIpkg->setOption( "upgrade" );
442
443 pIpkg->setDestination( item->destination->getDestinationName() );
444 pIpkg->setDestinationDir( item->destination->getDestinationPath() );
445 pIpkg->setPackage( item->packageName );
446
447 tmpFlags |= FORCE_REINSTALL;
448 if ( item->destination->linkToRoot() && item->recreateLinks )
449 tmpFlags |= MAKE_LINKS;
450 }
451 pIpkg->setFlags( tmpFlags, infoLevel );
452 pIpkg->runIpkg();
453 }
454 else
455 {
456 btnOptions->setEnabled( true );
457 btnInstall->setText( tr( "Close" ) );
458 btnInstall->setIconSet( Resource::loadPixmap( "enter" ) );
459
460 btnOptions->setText( tr( "Save output" ) );
461 btnOptions->setIconSet( Resource::loadPixmap( "save" ) );
462
463 if ( destination && destination->currentText() != 0 && destination->currentText() != "" )
464 displayAvailableSpace( destination->currentText() );
465 }
466} \ No newline at end of file