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
@@ -948,25 +948,29 @@ void MainWindow :: applyChanges()
948 948
949 // Now for each selected item 949 // Now for each selected item
950 // deal with it 950 // deal with it
951 951
952 QList<InstallData> workingPackages; 952 QList<InstallData> workingPackages;
953 workingPackages.setAutoDelete( TRUE ); 953 workingPackages.setAutoDelete( TRUE );
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
967 QMessageBox::information( this, tr( "Nothing to do" ), 971 QMessageBox::information( this, tr( "Nothing to do" ),
968 tr( "No packages selected" ), tr( "OK" ) ); 972 tr( "No packages selected" ), tr( "OK" ) );
969 973
970 return; 974 return;
971 } 975 }
972 976
@@ -1058,32 +1062,37 @@ InstallData *MainWindow :: dealWithItem( QCheckListItem *item )
1058 caption = tr( "Do you wish to remove or upgrade\n%1?" ); 1062 caption = tr( "Do you wish to remove or upgrade\n%1?" );
1059 text = tr( "Remove or Upgrade" ); 1063 text = tr( "Remove or Upgrade" );
1060 secondButton = tr( "Upgrade" ); 1064 secondButton = tr( "Upgrade" );
1061 secondOption = tr( "U" ); 1065 secondOption = tr( "U" );
1062 } 1066 }
1063 1067
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 {
1084// newitem->option = stickyOption; 1093// newitem->option = stickyOption;
1085 } 1094 }
1086 } 1095 }
1087 1096
1088 1097
1089 // Check if we are reinstalling the same version 1098 // Check if we are reinstalling the same version
@@ -1155,12 +1164,60 @@ void MainWindow :: letterPushed( QString t )
1155 item = (QCheckListItem *)item->nextSibling(); 1164 item = (QCheckListItem *)item->nextSibling();
1156 if ( !item ) 1165 if ( !item )
1157 item = (QCheckListItem *)packagesList->firstChild(); 1166 item = (QCheckListItem *)packagesList->firstChild();
1158 } while ( item != start); 1167 } while ( item != start);
1159} 1168}
1160 1169
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
@@ -37,24 +37,25 @@ class DataManager;
37class InstallData; 37class InstallData;
38class InstallDlgImpl; 38class InstallDlgImpl;
39 39
40class QAction; 40class QAction;
41class QCheckListItem; 41class QCheckListItem;
42class QComboBox; 42class 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:
55 56
56 MainWindow(); 57 MainWindow();
57 ~MainWindow(); 58 ~MainWindow();
58 59
59protected: 60protected:
60 void closeEvent( QCloseEvent* e ); 61 void closeEvent( QCloseEvent* e );
@@ -142,13 +143,33 @@ private slots:
142 void init(); 143 void init();
143 void setProgressSteps( int ); 144 void setProgressSteps( int );
144 void setProgressMessage( const QString & ); 145 void setProgressMessage( const QString & );
145 void updateProgress( int ); 146 void updateProgress( int );
146 void serverSelected( int index ); 147 void serverSelected( int index );
147 void updateServer(); 148 void updateServer();
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