Diffstat (limited to 'noncore/settings/aqpkg/mainwin.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/settings/aqpkg/mainwin.cpp | 71 |
1 files changed, 64 insertions, 7 deletions
diff --git a/noncore/settings/aqpkg/mainwin.cpp b/noncore/settings/aqpkg/mainwin.cpp index 0102292..0efa1e0 100644 --- a/noncore/settings/aqpkg/mainwin.cpp +++ b/noncore/settings/aqpkg/mainwin.cpp @@ -948,25 +948,29 @@ void MainWindow :: applyChanges() // Now for each selected item // deal with it QList<InstallData> workingPackages; workingPackages.setAutoDelete( TRUE ); for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); item != 0 ; item = (QCheckListItem *)item->nextSibling() ) { if ( item->isOn() ) { - workingPackages.append( dealWithItem( item ) ); + InstallData *instdata = dealWithItem( item ); + if ( instdata ) + workingPackages.append( instdata ); + else + return; } } if ( workingPackages.count() == 0 ) { // Nothing to do QMessageBox::information( this, tr( "Nothing to do" ), tr( "No packages selected" ), tr( "OK" ) ); return; } @@ -1058,32 +1062,37 @@ InstallData *MainWindow :: dealWithItem( QCheckListItem *item ) caption = tr( "Do you wish to remove or upgrade\n%1?" ); text = tr( "Remove or Upgrade" ); secondButton = tr( "Upgrade" ); secondOption = tr( "U" ); } // Sticky option not implemented yet, but will eventually allow // the user to say something like 'remove all' if ( stickyOption == "" ) { QString msgtext; msgtext = caption.arg( ( const char * )name ); - switch( QMessageBox::information( this, text, - msgtext, tr( "Remove" ), secondButton ) ) - { - case 0: // Try again or Enter - // option 0 = Remove +// switch( QMessageBox::information( this, text, +// msgtext, tr( "Remove" ), secondButton ) ) + QuestionDlg dlg( text, msgtext, secondButton ); + switch( dlg.exec() ) + { + case 0: // Cancel + delete newitem; + return 0x0; + break; + case 1: // Remove newitem->option = "D"; break; - case 1: // Quit or Escape + case 2: // Reinstall or Upgrade newitem->option = secondOption; break; } } else { // newitem->option = stickyOption; } } // Check if we are reinstalling the same version @@ -1155,12 +1164,60 @@ void MainWindow :: letterPushed( QString t ) item = (QCheckListItem *)item->nextSibling(); if ( !item ) item = (QCheckListItem *)packagesList->firstChild(); } while ( item != start); } void MainWindow :: slotDisplayPackage( QListViewItem *item ) { QString itemstr( ((QCheckListItem*)item)->text() ); PackageWindow *p = new PackageWindow( mgr->getServer( serversList->currentText() )->getPackage( itemstr ) ); p->showMaximized(); } + +QuestionDlg::QuestionDlg( const QString &caption, const QString &text, const QString &secondbtn ) + : QWidget( 0x0, 0x0, WType_Modal | WType_TopLevel | WStyle_Dialog ) +{ + setCaption( caption ); + resize( 175, 100 ); + + QGridLayout *layout = new QGridLayout( this ); + + QLabel *l = new QLabel( text, this ); + l->setAlignment( AlignCenter | WordBreak ); + layout->addMultiCellWidget( l, 0, 0, 0, 1 ); + + btn1 = new QPushButton( tr( "Remove" ), this ); + connect( btn1, SIGNAL(clicked()), this, SLOT(slotButtonPressed()) ); + layout->addWidget( btn1, 1, 0 ); + + btn2 = new QPushButton( secondbtn, this ); + connect( btn2, SIGNAL(clicked()), this, SLOT(slotButtonPressed()) ); + layout->addWidget( btn2, 1, 1 ); + + executing = FALSE; +} + +int QuestionDlg::exec() +{ + show(); + + if ( !executing ) + { + executing = TRUE; + qApp->enter_loop(); + } + + return buttonpressed; +} + +void QuestionDlg::slotButtonPressed() +{ + if ( sender() == btn1 ) + buttonpressed = 1; + else if ( sender() == btn2 ) + buttonpressed = 2; + else + buttonpressed = 0; + + qApp->exit_loop(); +} |