summaryrefslogtreecommitdiff
authordrw <drw>2003-05-16 23:17:49 (UTC)
committer drw <drw>2003-05-16 23:17:49 (UTC)
commiteac84192decbd60ecb680b82c92b55e70b5fd015 (patch) (unidiff)
tree3e47155aff48679a971bccb82b58c6b89fe4c358
parentdb67960cfab97f9897e0fdc1cb9c8e8794f4a2ba (diff)
downloadopie-eac84192decbd60ecb680b82c92b55e70b5fd015.zip
opie-eac84192decbd60ecb680b82c92b55e70b5fd015.tar.gz
opie-eac84192decbd60ecb680b82c92b55e70b5fd015.tar.bz2
Fix for bug #914 (correct dialog cancel behaviour)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/mainwin.cpp69
-rw-r--r--noncore/settings/aqpkg/mainwin.h21
2 files changed, 84 insertions, 6 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
@@ -954,13 +954,17 @@ void MainWindow :: applyChanges()
954 for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); 954 for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild();
955 item != 0 ; 955 item != 0 ;
956 item = (QCheckListItem *)item->nextSibling() ) 956 item = (QCheckListItem *)item->nextSibling() )
957 { 957 {
958 if ( item->isOn() ) 958 if ( item->isOn() )
959 { 959 {
960 workingPackages.append( dealWithItem( item ) ); 960 InstallData *instdata = dealWithItem( item );
961 if ( instdata )
962 workingPackages.append( instdata );
963 else
964 return;
961 } 965 }
962 } 966 }
963 967
964 if ( workingPackages.count() == 0 ) 968 if ( workingPackages.count() == 0 )
965 { 969 {
966 // Nothing to do 970 // Nothing to do
@@ -1064,20 +1068,25 @@ InstallData *MainWindow :: dealWithItem( QCheckListItem *item )
1064 // Sticky option not implemented yet, but will eventually allow 1068 // Sticky option not implemented yet, but will eventually allow
1065 // the user to say something like 'remove all' 1069 // the user to say something like 'remove all'
1066 if ( stickyOption == "" ) 1070 if ( stickyOption == "" )
1067 { 1071 {
1068 QString msgtext; 1072 QString msgtext;
1069 msgtext = caption.arg( ( const char * )name ); 1073 msgtext = caption.arg( ( const char * )name );
1070 switch( QMessageBox::information( this, text, 1074// switch( QMessageBox::information( this, text,
1071 msgtext, tr( "Remove" ), secondButton ) ) 1075// msgtext, tr( "Remove" ), secondButton ) )
1076 QuestionDlg dlg( text, msgtext, secondButton );
1077 switch( dlg.exec() )
1072 { 1078 {
1073 case 0: // Try again or Enter 1079 case 0: // Cancel
1074 // option 0 = Remove 1080 delete newitem;
1081 return 0x0;
1082 break;
1083 case 1: // Remove
1075 newitem->option = "D"; 1084 newitem->option = "D";
1076 break; 1085 break;
1077 case 1: // Quit or Escape 1086 case 2: // Reinstall or Upgrade
1078 newitem->option = secondOption; 1087 newitem->option = secondOption;
1079 break; 1088 break;
1080 } 1089 }
1081 } 1090 }
1082 else 1091 else
1083 { 1092 {
@@ -1161,6 +1170,54 @@ void MainWindow :: letterPushed( QString t )
1161void MainWindow :: slotDisplayPackage( QListViewItem *item ) 1170void MainWindow :: slotDisplayPackage( QListViewItem *item )
1162{ 1171{
1163 QString itemstr( ((QCheckListItem*)item)->text() ); 1172 QString itemstr( ((QCheckListItem*)item)->text() );
1164 PackageWindow *p = new PackageWindow( mgr->getServer( serversList->currentText() )->getPackage( itemstr ) ); 1173 PackageWindow *p = new PackageWindow( mgr->getServer( serversList->currentText() )->getPackage( itemstr ) );
1165 p->showMaximized(); 1174 p->showMaximized();
1166} 1175}
1176
1177QuestionDlg::QuestionDlg( const QString &caption, const QString &text, const QString &secondbtn )
1178 : QWidget( 0x0, 0x0, WType_Modal | WType_TopLevel | WStyle_Dialog )
1179{
1180 setCaption( caption );
1181 resize( 175, 100 );
1182
1183 QGridLayout *layout = new QGridLayout( this );
1184
1185 QLabel *l = new QLabel( text, this );
1186 l->setAlignment( AlignCenter | WordBreak );
1187 layout->addMultiCellWidget( l, 0, 0, 0, 1 );
1188
1189 btn1 = new QPushButton( tr( "Remove" ), this );
1190 connect( btn1, SIGNAL(clicked()), this, SLOT(slotButtonPressed()) );
1191 layout->addWidget( btn1, 1, 0 );
1192
1193 btn2 = new QPushButton( secondbtn, this );
1194 connect( btn2, SIGNAL(clicked()), this, SLOT(slotButtonPressed()) );
1195 layout->addWidget( btn2, 1, 1 );
1196
1197 executing = FALSE;
1198}
1199
1200int QuestionDlg::exec()
1201{
1202 show();
1203
1204 if ( !executing )
1205 {
1206 executing = TRUE;
1207 qApp->enter_loop();
1208 }
1209
1210 return buttonpressed;
1211}
1212
1213void QuestionDlg::slotButtonPressed()
1214{
1215 if ( sender() == btn1 )
1216 buttonpressed = 1;
1217 else if ( sender() == btn2 )
1218 buttonpressed = 2;
1219 else
1220 buttonpressed = 0;
1221
1222 qApp->exit_loop();
1223}
diff --git a/noncore/settings/aqpkg/mainwin.h b/noncore/settings/aqpkg/mainwin.h
index 9f48321..615ff8b 100644
--- a/noncore/settings/aqpkg/mainwin.h
+++ b/noncore/settings/aqpkg/mainwin.h
@@ -43,12 +43,13 @@ class QComboBox;
43class QLabel; 43class QLabel;
44class QLineEdit; 44class QLineEdit;
45class QListView; 45class QListView;
46class QListViewItem; 46class QListViewItem;
47class QToolBar; 47class QToolBar;
48class QProgressBar; 48class QProgressBar;
49class QPushButton;
49class QWidgetStack; 50class QWidgetStack;
50 51
51class MainWindow :public QMainWindow 52class MainWindow :public QMainWindow
52{ 53{
53 Q_OBJECT 54 Q_OBJECT
54public: 55public:
@@ -148,7 +149,27 @@ private slots:
148 void upgradePackages(); 149 void upgradePackages();
149 void downloadPackage(); 150 void downloadPackage();
150 void applyChanges(); 151 void applyChanges();
151 void letterPushed( QString t ); 152 void letterPushed( QString t );
152 void slotDisplayPackage( QListViewItem * ); 153 void slotDisplayPackage( QListViewItem * );
153}; 154};
155
156class QuestionDlg : public QWidget
157{
158 Q_OBJECT
159public:
160 QuestionDlg( const QString &caption, const QString &text, const QString &secondbtn );
161
162 int exec();
163
164private:
165 QPushButton *btn1;
166 QPushButton *btn2;
167
168 bool executing;
169 int buttonpressed;
170
171private slots:
172 void slotButtonPressed();
173};
174
154#endif 175#endif