author | andyq <andyq> | 2002-11-02 14:02:34 (UTC) |
---|---|---|
committer | andyq <andyq> | 2002-11-02 14:02:34 (UTC) |
commit | e622033e90f34ba60075f30a9049b0b266c61cb5 (patch) (unidiff) | |
tree | 19c93b79359661222902edf71e9ea89c6ff66aef | |
parent | cf34849ac5c3eb9d16929cc88834973910209f74 (diff) | |
download | opie-e622033e90f34ba60075f30a9049b0b266c61cb5.zip opie-e622033e90f34ba60075f30a9049b0b266c61cb5.tar.gz opie-e622033e90f34ba60075f30a9049b0b266c61cb5.tar.bz2 |
Nows asks before deleting local ipk files
-rw-r--r-- | noncore/settings/aqpkg/networkpkgmgr.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/noncore/settings/aqpkg/networkpkgmgr.cpp b/noncore/settings/aqpkg/networkpkgmgr.cpp index dee834e..ccce401 100644 --- a/noncore/settings/aqpkg/networkpkgmgr.cpp +++ b/noncore/settings/aqpkg/networkpkgmgr.cpp | |||
@@ -301,210 +301,223 @@ void NetworkPackageManager :: serverSelected( int ) | |||
301 | download->setText( "Download" ); | 301 | download->setText( "Download" ); |
302 | } | 302 | } |
303 | } | 303 | } |
304 | 304 | ||
305 | void NetworkPackageManager :: updateServer() | 305 | void NetworkPackageManager :: updateServer() |
306 | { | 306 | { |
307 | QString serverName = serversList->currentText(); | 307 | QString serverName = serversList->currentText(); |
308 | 308 | ||
309 | // Update the current server | 309 | // Update the current server |
310 | // Display dialog | 310 | // Display dialog |
311 | // ProgressDlg *progDlg = new ProgressDlg( this ); | 311 | // ProgressDlg *progDlg = new ProgressDlg( this ); |
312 | // QString status = "Updating package lists..."; | 312 | // QString status = "Updating package lists..."; |
313 | // progDlg->show(); | 313 | // progDlg->show(); |
314 | // progDlg->setText( status ); | 314 | // progDlg->setText( status ); |
315 | 315 | ||
316 | // Disable buttons to stop silly people clicking lots on them :) | 316 | // Disable buttons to stop silly people clicking lots on them :) |
317 | 317 | ||
318 | // First, write out ipkg_conf file so that ipkg can use it | 318 | // First, write out ipkg_conf file so that ipkg can use it |
319 | dataMgr->writeOutIpkgConf(); | 319 | dataMgr->writeOutIpkgConf(); |
320 | 320 | ||
321 | Ipkg ipkg; | 321 | Ipkg ipkg; |
322 | ipkg.setOption( "update" ); | 322 | ipkg.setOption( "update" ); |
323 | 323 | ||
324 | InstallDlgImpl dlg( &ipkg, "Refreshing server package lists", this, "Upgrade", true ); | 324 | InstallDlgImpl dlg( &ipkg, "Refreshing server package lists", this, "Upgrade", true ); |
325 | dlg.showDlg(); | 325 | dlg.showDlg(); |
326 | 326 | ||
327 | // Reload data | 327 | // Reload data |
328 | dataMgr->reloadServerData(); | 328 | dataMgr->reloadServerData(); |
329 | serverSelected(-1); | 329 | serverSelected(-1); |
330 | // delete progDlg; | 330 | // delete progDlg; |
331 | } | 331 | } |
332 | 332 | ||
333 | void NetworkPackageManager :: upgradePackages() | 333 | void NetworkPackageManager :: upgradePackages() |
334 | { | 334 | { |
335 | // We're gonna do an upgrade of all packages | 335 | // We're gonna do an upgrade of all packages |
336 | // First warn user that this isn't recommended | 336 | // First warn user that this isn't recommended |
337 | QString text = "WARNING: Upgrading while\nOpie/Qtopia is running\nis NOT recommended!\n\nAre you sure?\n"; | 337 | QString text = "WARNING: Upgrading while\nOpie/Qtopia is running\nis NOT recommended!\n\nAre you sure?\n"; |
338 | QMessageBox warn("Warning", text, QMessageBox::Warning, | 338 | QMessageBox warn("Warning", text, QMessageBox::Warning, |
339 | QMessageBox::Yes, | 339 | QMessageBox::Yes, |
340 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default , | 340 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default , |
341 | 0, this ); | 341 | 0, this ); |
342 | warn.adjustSize(); | 342 | warn.adjustSize(); |
343 | 343 | ||
344 | if ( warn.exec() == QMessageBox::Yes ) | 344 | if ( warn.exec() == QMessageBox::Yes ) |
345 | { | 345 | { |
346 | // First, write out ipkg_conf file so that ipkg can use it | 346 | // First, write out ipkg_conf file so that ipkg can use it |
347 | dataMgr->writeOutIpkgConf(); | 347 | dataMgr->writeOutIpkgConf(); |
348 | 348 | ||
349 | // Now run upgrade | 349 | // Now run upgrade |
350 | Ipkg ipkg; | 350 | Ipkg ipkg; |
351 | ipkg.setOption( "upgrade" ); | 351 | ipkg.setOption( "upgrade" ); |
352 | 352 | ||
353 | InstallDlgImpl dlg( &ipkg, "Upgrading installed packages", this, "Upgrade", true ); | 353 | InstallDlgImpl dlg( &ipkg, "Upgrading installed packages", this, "Upgrade", true ); |
354 | dlg.showDlg(); | 354 | dlg.showDlg(); |
355 | 355 | ||
356 | // Reload data | 356 | // Reload data |
357 | dataMgr->reloadServerData(); | 357 | dataMgr->reloadServerData(); |
358 | serverSelected(-1); | 358 | serverSelected(-1); |
359 | } | 359 | } |
360 | } | 360 | } |
361 | 361 | ||
362 | 362 | ||
363 | void NetworkPackageManager :: downloadPackage() | 363 | void NetworkPackageManager :: downloadPackage() |
364 | { | 364 | { |
365 | bool doUpdate = true; | ||
365 | if ( download->text() == "Download" ) | 366 | if ( download->text() == "Download" ) |
366 | { | 367 | { |
367 | // First, write out ipkg_conf file so that ipkg can use it | 368 | // First, write out ipkg_conf file so that ipkg can use it |
368 | dataMgr->writeOutIpkgConf(); | 369 | dataMgr->writeOutIpkgConf(); |
369 | 370 | ||
370 | // Display dialog to user asking where to download the files to | 371 | // Display dialog to user asking where to download the files to |
371 | bool ok = FALSE; | 372 | bool ok = FALSE; |
372 | QString dir = ""; | 373 | QString dir = ""; |
373 | #ifdef QWS | 374 | #ifdef QWS |
374 | // read download directory from config file | 375 | // read download directory from config file |
375 | Config cfg( "aqpkg" ); | 376 | Config cfg( "aqpkg" ); |
376 | cfg.setGroup( "settings" ); | 377 | cfg.setGroup( "settings" ); |
377 | dir = cfg.readEntry( "downloadDir", "/home/root/Documents/application/ipkg" ); | 378 | dir = cfg.readEntry( "downloadDir", "/home/root/Documents/application/ipkg" ); |
378 | #endif | 379 | #endif |
379 | 380 | ||
380 | QString text = InputDialog::getText( tr( "Download to where" ), tr( "Enter path to download to" ), dir, &ok, this ); | 381 | QString text = InputDialog::getText( tr( "Download to where" ), tr( "Enter path to download to" ), dir, &ok, this ); |
381 | if ( ok && !text.isEmpty() ) | 382 | if ( ok && !text.isEmpty() ) |
382 | dir = text; // user entered something and pressed ok | 383 | dir = text; // user entered something and pressed ok |
383 | else | 384 | else |
384 | return; // user entered nothing or pressed cancel | 385 | return; // user entered nothing or pressed cancel |
385 | 386 | ||
386 | #ifdef QWS | 387 | #ifdef QWS |
387 | // Store download directory in config file | 388 | // Store download directory in config file |
388 | cfg.writeEntry( "downloadDir", dir ); | 389 | cfg.writeEntry( "downloadDir", dir ); |
389 | #endif | 390 | #endif |
390 | 391 | ||
391 | // Get starting directory | 392 | // Get starting directory |
392 | char initDir[PATH_MAX]; | 393 | char initDir[PATH_MAX]; |
393 | getcwd( initDir, PATH_MAX ); | 394 | getcwd( initDir, PATH_MAX ); |
394 | 395 | ||
395 | // Download each package | 396 | // Download each package |
396 | Ipkg ipkg; | 397 | Ipkg ipkg; |
397 | connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); | 398 | connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); |
398 | 399 | ||
399 | ipkg.setOption( "download" ); | 400 | ipkg.setOption( "download" ); |
400 | ipkg.setRuntimeDirectory( dir ); | 401 | ipkg.setRuntimeDirectory( dir ); |
401 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); | 402 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); |
402 | item != 0 ; | 403 | item != 0 ; |
403 | item = (QCheckListItem *)item->nextSibling() ) | 404 | item = (QCheckListItem *)item->nextSibling() ) |
404 | { | 405 | { |
405 | if ( item->isOn() ) | 406 | if ( item->isOn() ) |
406 | { | 407 | { |
407 | QString name = item->text(); | 408 | QString name = item->text(); |
408 | int pos = name.find( "*" ); | 409 | int pos = name.find( "*" ); |
409 | name.truncate( pos ); | 410 | name.truncate( pos ); |
410 | 411 | ||
411 | // if (there is a (installed), remove it | 412 | // if (there is a (installed), remove it |
412 | pos = name.find( "(installed)" ); | 413 | pos = name.find( "(installed)" ); |
413 | if ( pos > 0 ) | 414 | if ( pos > 0 ) |
414 | name.truncate( pos - 1 ); | 415 | name.truncate( pos - 1 ); |
415 | 416 | ||
416 | ipkg.setPackage( name ); | 417 | ipkg.setPackage( name ); |
417 | ipkg.runIpkg( ); | 418 | ipkg.runIpkg( ); |
418 | } | 419 | } |
419 | } | 420 | } |
420 | } | 421 | } |
421 | else if ( download->text() == "Remove" ) | 422 | else if ( download->text() == "Remove" ) |
422 | { | 423 | { |
424 | doUpdate = false; | ||
423 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); | 425 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); |
424 | item != 0 ; | 426 | item != 0 ; |
425 | item = (QCheckListItem *)item->nextSibling() ) | 427 | item = (QCheckListItem *)item->nextSibling() ) |
426 | { | 428 | { |
427 | if ( item->isOn() ) | 429 | if ( item->isOn() ) |
428 | { | 430 | { |
429 | QString name = item->text(); | 431 | QString name = item->text(); |
430 | int pos = name.find( "*" ); | 432 | int pos = name.find( "*" ); |
431 | name.truncate( pos ); | 433 | name.truncate( pos ); |
432 | 434 | ||
433 | // if (there is a (installed), remove it | 435 | // if (there is a (installed), remove it |
434 | pos = name.find( "(installed)" ); | 436 | pos = name.find( "(installed)" ); |
435 | if ( pos > 0 ) | 437 | if ( pos > 0 ) |
436 | name.truncate( pos - 1 ); | 438 | name.truncate( pos - 1 ); |
437 | 439 | ||
438 | Package *p = dataMgr->getServer( serversList->currentText() )->getPackage( name ); | 440 | Package *p = dataMgr->getServer( serversList->currentText() )->getPackage( name ); |
439 | QFile f( p->getFilename() ); | 441 | |
440 | f.remove(); | 442 | QString msgtext; |
443 | msgtext.sprintf( "Are you sure you wish to delete\n%s?", (const char *)p->getPackageName() ); | ||
444 | if ( QMessageBox::information( this, "Are you sure?", | ||
445 | msgtext, "No", "Yes" ) == 1 ) | ||
446 | { | ||
447 | doUpdate = true; | ||
448 | QFile f( p->getFilename() ); | ||
449 | f.remove(); | ||
450 | } | ||
441 | } | 451 | } |
442 | } | 452 | } |
443 | } | 453 | } |
444 | 454 | ||
445 | dataMgr->reloadServerData(); | 455 | if ( doUpdate ) |
446 | serverSelected( -1 ); | 456 | { |
457 | dataMgr->reloadServerData(); | ||
458 | serverSelected( -1 ); | ||
459 | } | ||
447 | } | 460 | } |
448 | 461 | ||
449 | 462 | ||
450 | void NetworkPackageManager :: applyChanges() | 463 | void NetworkPackageManager :: applyChanges() |
451 | { | 464 | { |
452 | stickyOption = ""; | 465 | stickyOption = ""; |
453 | 466 | ||
454 | // First, write out ipkg_conf file so that ipkg can use it | 467 | // First, write out ipkg_conf file so that ipkg can use it |
455 | dataMgr->writeOutIpkgConf(); | 468 | dataMgr->writeOutIpkgConf(); |
456 | 469 | ||
457 | // Now for each selected item | 470 | // Now for each selected item |
458 | // deal with it | 471 | // deal with it |
459 | 472 | ||
460 | vector<InstallData> workingPackages; | 473 | vector<InstallData> workingPackages; |
461 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); | 474 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); |
462 | item != 0 ; | 475 | item != 0 ; |
463 | item = (QCheckListItem *)item->nextSibling() ) | 476 | item = (QCheckListItem *)item->nextSibling() ) |
464 | { | 477 | { |
465 | if ( item->isOn() ) | 478 | if ( item->isOn() ) |
466 | { | 479 | { |
467 | InstallData data = dealWithItem( item ); | 480 | InstallData data = dealWithItem( item ); |
468 | workingPackages.push_back( data ); | 481 | workingPackages.push_back( data ); |
469 | } | 482 | } |
470 | } | 483 | } |
471 | 484 | ||
472 | if ( workingPackages.size() == 0 ) | 485 | if ( workingPackages.size() == 0 ) |
473 | { | 486 | { |
474 | // Nothing to do | 487 | // Nothing to do |
475 | QMessageBox::information( this, "Nothing to do", | 488 | QMessageBox::information( this, "Nothing to do", |
476 | "No packages selected", "OK" ); | 489 | "No packages selected", "OK" ); |
477 | 490 | ||
478 | return; | 491 | return; |
479 | } | 492 | } |
480 | 493 | ||
481 | // do the stuff | 494 | // do the stuff |
482 | InstallDlgImpl dlg( workingPackages, dataMgr, this, "Install", true ); | 495 | InstallDlgImpl dlg( workingPackages, dataMgr, this, "Install", true ); |
483 | dlg.showDlg(); | 496 | dlg.showDlg(); |
484 | 497 | ||
485 | // Reload data | 498 | // Reload data |
486 | dataMgr->reloadServerData(); | 499 | dataMgr->reloadServerData(); |
487 | serverSelected(-1); | 500 | serverSelected(-1); |
488 | 501 | ||
489 | #ifdef QWS | 502 | #ifdef QWS |
490 | // Finally let the main system update itself | 503 | // Finally let the main system update itself |
491 | QCopEnvelope e("QPE/System", "linkChanged(QString)"); | 504 | QCopEnvelope e("QPE/System", "linkChanged(QString)"); |
492 | QString lf = QString::null; | 505 | QString lf = QString::null; |
493 | e << lf; | 506 | e << lf; |
494 | #endif | 507 | #endif |
495 | } | 508 | } |
496 | 509 | ||
497 | // decide what to do - either remove, upgrade or install | 510 | // decide what to do - either remove, upgrade or install |
498 | // Current rules: | 511 | // Current rules: |
499 | // If not installed - install | 512 | // If not installed - install |
500 | // If installed and different version available - upgrade | 513 | // If installed and different version available - upgrade |
501 | // If installed and version up to date - remove | 514 | // If installed and version up to date - remove |
502 | InstallData NetworkPackageManager :: dealWithItem( QCheckListItem *item ) | 515 | InstallData NetworkPackageManager :: dealWithItem( QCheckListItem *item ) |
503 | { | 516 | { |
504 | QString name = item->text(); | 517 | QString name = item->text(); |
505 | int pos = name.find( "*" ); | 518 | int pos = name.find( "*" ); |
506 | name.truncate( pos ); | 519 | name.truncate( pos ); |
507 | 520 | ||
508 | // if (there is a (installed), remove it | 521 | // if (there is a (installed), remove it |
509 | pos = name.find( "(installed)" ); | 522 | pos = name.find( "(installed)" ); |
510 | if ( pos > 0 ) | 523 | if ( pos > 0 ) |