remove global mainwindwo ptr from save dialogs

Also, allocate dialogs on stack to make free explicit.  I find
Qt::WA_DeleteOnClose to be really non-intuitive for modal dialogs.
This commit is contained in:
Sean Rhea
2009-12-13 11:15:05 -05:00
parent 4a79c95d37
commit d36fb9eae0
2 changed files with 14 additions and 15 deletions

View File

@@ -78,8 +78,8 @@ MainWindow::saveRideSingleDialog(RideItem *rideItem)
// either prompt etc, or just save that file away!
if (currentType != "GC" && warnOnConvert() == true) {
SaveSingleDialogWidget *dialog = new SaveSingleDialogWidget(this, rideItem);
dialog->exec();
SaveSingleDialogWidget dialog(this, rideItem);
dialog.exec();
return true;
} else {
// go for it, the user doesn't want warnings!
@@ -106,8 +106,8 @@ MainWindow::saveRideExitDialog()
// we have some files to save...
if (dirtyList.count() > 0) {
SaveOnExitDialogWidget *dialog = new SaveOnExitDialogWidget(this, dirtyList);
int result = dialog->exec();
SaveOnExitDialogWidget dialog(this, dirtyList);
int result = dialog.exec();
if (result == QDialog::Rejected) return false; // cancel that closeEvent!
}
@@ -166,10 +166,9 @@ MainWindow::saveSilent(RideItem *rideItem)
//----------------------------------------------------------------------
// Save Single File Dialog Widget
//----------------------------------------------------------------------
SaveSingleDialogWidget::SaveSingleDialogWidget(QWidget *parent, RideItem *rideItem) : QDialog(parent, Qt::Dialog)
SaveSingleDialogWidget::SaveSingleDialogWidget(MainWindow *mainWindow, RideItem *rideItem) :
QDialog(mainWindow, Qt::Dialog), mainWindow(mainWindow), rideItem(rideItem)
{
this->rideItem = rideItem;
setAttribute(Qt::WA_DeleteOnClose);
setWindowTitle("Save and Conversion");
QVBoxLayout *mainLayout = new QVBoxLayout(this);
@@ -202,7 +201,7 @@ SaveSingleDialogWidget::SaveSingleDialogWidget(QWidget *parent, RideItem *rideIt
void
SaveSingleDialogWidget::saveClicked()
{
mainwindow->saveSilent(rideItem);
mainWindow->saveSilent(rideItem);
accept();
}
@@ -229,10 +228,9 @@ SaveSingleDialogWidget::warnSettingClicked()
// Save on Exit File Dialog Widget
//----------------------------------------------------------------------
SaveOnExitDialogWidget::SaveOnExitDialogWidget(QWidget *parent, QList<RideItem *>dirtyList) : QDialog(parent, Qt::Dialog)
SaveOnExitDialogWidget::SaveOnExitDialogWidget(MainWindow *mainWindow, QList<RideItem *>dirtyList) :
QDialog(mainWindow, Qt::Dialog), mainWindow(mainWindow), dirtyList(dirtyList)
{
this->dirtyList = dirtyList;
setAttribute(Qt::WA_DeleteOnClose);
setWindowTitle("Save Changes");
QVBoxLayout *mainLayout = new QVBoxLayout(this);
@@ -296,7 +294,7 @@ SaveOnExitDialogWidget::saveClicked()
for (int i=0; i<dirtyList.count(); i++) {
QCheckBox *c = (QCheckBox *)dirtyFiles->cellWidget(i,0);
if (c->isChecked()) {
mainwindow->saveRideSingleDialog(dirtyList.at(i));
mainWindow->saveRideSingleDialog(dirtyList.at(i));
}
}
accept();

View File

@@ -30,8 +30,7 @@ class SaveSingleDialogWidget : public QDialog
Q_OBJECT
public:
SaveSingleDialogWidget(QWidget *, RideItem *);
// QWidget *parent;
SaveSingleDialogWidget(MainWindow *, RideItem *);
public slots:
void saveClicked();
@@ -41,6 +40,7 @@ class SaveSingleDialogWidget : public QDialog
private:
MainWindow *mainWindow;
RideItem *rideItem;
QPushButton *saveButton, *abandonButton, *cancelButton;
QCheckBox *warnCheckBox;
@@ -52,7 +52,7 @@ class SaveOnExitDialogWidget : public QDialog
Q_OBJECT
public:
SaveOnExitDialogWidget(QWidget *, QList<RideItem*>);
SaveOnExitDialogWidget(MainWindow *, QList<RideItem*>);
public slots:
void saveClicked();
@@ -61,6 +61,7 @@ class SaveOnExitDialogWidget : public QDialog
void warnSettingClicked();
private:
MainWindow *mainWindow;
QList<RideItem *>dirtyList;
QPushButton *saveButton, *abandonButton, *cancelButton;
QCheckBox *exitWarnCheckBox;