diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 04a87ce5a..9977326e3 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -868,7 +868,7 @@ MainWindow::closeEvent(QCloseEvent* event) foreach(Tab *tab, closing) { // do we need to save? - if (tab->context->mainWindow->saveRideExitDialog() == true) + if (tab->context->mainWindow->saveRideExitDialog(tab->context) == true) removeTab(tab); else needtosave = true; @@ -1174,7 +1174,7 @@ void MainWindow::saveRide() { if (currentTab->context->ride) - saveRideSingleDialog(currentTab->context->ride); // will signal save to everyone + saveRideSingleDialog(currentTab->context, currentTab->context->ride); // will signal save to everyone else { QMessageBox oops(QMessageBox::Critical, tr("No Activity To Save"), tr("There is no currently selected ride to save.")); @@ -1341,7 +1341,7 @@ bool MainWindow::closeTab() { // wipe it down ... - if (saveRideExitDialog() == false) return false; + if (saveRideExitDialog(currentTab->context) == false) return false; // if its the last tab we close the window if (tabList.count() == 1) diff --git a/src/MainWindow.h b/src/MainWindow.h index dfaa616ad..be8fde03b 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -157,8 +157,8 @@ class MainWindow : public QMainWindow // Activity Collection void addIntervals(); // pass thru to tab - bool saveRideSingleDialog(RideItem *); - void saveSilent(RideItem *); + bool saveRideSingleDialog(Context *, RideItem *); + void saveSilent(Context *, RideItem *); void downloadRide(); void manualRide(); void exportRide(); @@ -180,7 +180,7 @@ class MainWindow : public QMainWindow void deleteRide(); void saveRide(); // save current ride menu item void revertRide(); - bool saveRideExitDialog(); // save dirty rides on exit dialog + bool saveRideExitDialog(Context *); // save dirty rides on exit dialog // save and restore state to context void saveState(Context *); diff --git a/src/RideEditor.cpp b/src/RideEditor.cpp index 727176653..ad47b2475 100644 --- a/src/RideEditor.cpp +++ b/src/RideEditor.cpp @@ -272,7 +272,7 @@ void RideEditor::saveFile() { if (ride && ride->isDirty()) { - context->mainWindow->saveRideSingleDialog(ride); + context->mainWindow->saveRideSingleDialog(context, ride); } } diff --git a/src/SaveDialogs.cpp b/src/SaveDialogs.cpp index dbbedf35c..9402fc7ef 100644 --- a/src/SaveDialogs.cpp +++ b/src/SaveDialogs.cpp @@ -62,7 +62,7 @@ setWarnExit(bool setting) // User selected Save... menu option, prompt if conversion is needed //---------------------------------------------------------------------- bool -MainWindow::saveRideSingleDialog(RideItem *rideItem) +MainWindow::saveRideSingleDialog(Context *context, RideItem *rideItem) { if (rideItem->isDirty() == false) return false; // nothing to save you must be a ^S addict. @@ -73,12 +73,12 @@ MainWindow::saveRideSingleDialog(RideItem *rideItem) // either prompt etc, or just save that file away! if (currentType != "GC" && warnOnConvert() == true) { - SaveSingleDialogWidget dialog(this, rideItem); + SaveSingleDialogWidget dialog(this, context, rideItem); dialog.exec(); return true; } else { // go for it, the user doesn't want warnings! - saveSilent(rideItem); + saveSilent(context, rideItem); return true; } } @@ -87,21 +87,21 @@ MainWindow::saveRideSingleDialog(RideItem *rideItem) // Check if data needs saving on exit and prompt user for action //---------------------------------------------------------------------- bool -MainWindow::saveRideExitDialog() +MainWindow::saveRideExitDialog(Context *context) { QList dirtyList; // have we been told to not warn on exit? if (warnExit() == false) return true; // just close regardless! - for (int i=0; icontext->athlete->allRides->childCount(); i++) { - RideItem *curr = (RideItem *)currentTab->context->athlete->allRides->child(i); + for (int i=0; iathlete->allRides->childCount(); i++) { + RideItem *curr = (RideItem *)context->athlete->allRides->child(i); if (curr->isDirty() == true) dirtyList.append(curr); } // we have some files to save... if (dirtyList.count() > 0) { - SaveOnExitDialogWidget dialog(this, dirtyList); + SaveOnExitDialogWidget dialog(this, context, dirtyList); int result = dialog.exec(); if (result == QDialog::Rejected) return false; // cancel that closeEvent! } @@ -114,7 +114,7 @@ MainWindow::saveRideExitDialog() // Silently save ride and convert to GC format without warning user //---------------------------------------------------------------------- void -MainWindow::saveSilent(RideItem *rideItem) +MainWindow::saveSilent(Context *context, RideItem *rideItem) { QFile currentFile(rideItem->path + QDir::separator() + rideItem->fileName); QFileInfo currentFI(currentFile); @@ -176,7 +176,7 @@ MainWindow::saveSilent(RideItem *rideItem) // save in GC format JsonFileReader reader; - reader.writeRideFile(currentTab->context, rideItem->ride(), savedFile); + reader.writeRideFile(context, rideItem->ride(), savedFile); // rename the file and update the rideItem list to reflect the change if (convert) { @@ -197,8 +197,8 @@ MainWindow::saveSilent(RideItem *rideItem) //---------------------------------------------------------------------- // Save Single File Dialog Widget //---------------------------------------------------------------------- -SaveSingleDialogWidget::SaveSingleDialogWidget(MainWindow *mainWindow, RideItem *rideItem) : - QDialog(mainWindow, Qt::Dialog), mainWindow(mainWindow), rideItem(rideItem) +SaveSingleDialogWidget::SaveSingleDialogWidget(MainWindow *mainWindow, Context *context, RideItem *rideItem) : + QDialog(mainWindow, Qt::Dialog), mainWindow(mainWindow), context(context), rideItem(rideItem) { setWindowTitle(tr("Save and Conversion")); QVBoxLayout *mainLayout = new QVBoxLayout(this); @@ -232,7 +232,7 @@ SaveSingleDialogWidget::SaveSingleDialogWidget(MainWindow *mainWindow, RideItem void SaveSingleDialogWidget::saveClicked() { - mainWindow->saveSilent(rideItem); + mainWindow->saveSilent(context, rideItem); accept(); } @@ -259,8 +259,8 @@ SaveSingleDialogWidget::warnSettingClicked() // Save on Exit File Dialog Widget //---------------------------------------------------------------------- -SaveOnExitDialogWidget::SaveOnExitDialogWidget(MainWindow *mainWindow, QListdirtyList) : - QDialog(mainWindow, Qt::Dialog), mainWindow(mainWindow), dirtyList(dirtyList) +SaveOnExitDialogWidget::SaveOnExitDialogWidget(MainWindow *mainWindow, Context *context, QListdirtyList) : + QDialog(mainWindow, Qt::Dialog), mainWindow(mainWindow), context(context), dirtyList(dirtyList) { setWindowTitle("Save Changes"); QVBoxLayout *mainLayout = new QVBoxLayout(this); @@ -325,7 +325,7 @@ SaveOnExitDialogWidget::saveClicked() for (int i=0; icellWidget(i,0); if (c->isChecked()) { - mainWindow->saveRideSingleDialog(dirtyList.at(i)); + mainWindow->saveRideSingleDialog(context, dirtyList.at(i)); } } accept(); diff --git a/src/SaveDialogs.h b/src/SaveDialogs.h index a4a250f53..392d10d04 100644 --- a/src/SaveDialogs.h +++ b/src/SaveDialogs.h @@ -39,7 +39,7 @@ class SaveSingleDialogWidget : public QDialog public: - SaveSingleDialogWidget(MainWindow *, RideItem *); + SaveSingleDialogWidget(MainWindow *, Context *context, RideItem *); public slots: void saveClicked(); @@ -50,6 +50,7 @@ class SaveSingleDialogWidget : public QDialog private: MainWindow *mainWindow; + Context *context; RideItem *rideItem; QPushButton *saveButton, *abandonButton, *cancelButton; QCheckBox *warnCheckBox; @@ -63,7 +64,7 @@ class SaveOnExitDialogWidget : public QDialog public: - SaveOnExitDialogWidget(MainWindow *, QList); + SaveOnExitDialogWidget(MainWindow *, Context *context, QList); public slots: void saveClicked(); @@ -73,6 +74,7 @@ class SaveOnExitDialogWidget : public QDialog private: MainWindow *mainWindow; + Context *context; QListdirtyList; QPushButton *saveButton, *abandonButton, *cancelButton; QCheckBox *exitWarnCheckBox;