mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 16:18:42 +00:00
Update SaveDialogs for Tabbed Athletes
.. the save dialogs all assumed the current tab and current context were relevant when checking for unsaved files etc, but this was INCORRECT. .. when window is closed each tab is checked IN TURN so the context should have been passed (because the current tab/context is just one of the many to save)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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 *);
|
||||
|
||||
@@ -272,7 +272,7 @@ void
|
||||
RideEditor::saveFile()
|
||||
{
|
||||
if (ride && ride->isDirty()) {
|
||||
context->mainWindow->saveRideSingleDialog(ride);
|
||||
context->mainWindow->saveRideSingleDialog(context, ride);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<RideItem*> dirtyList;
|
||||
|
||||
// have we been told to not warn on exit?
|
||||
if (warnExit() == false) return true; // just close regardless!
|
||||
|
||||
for (int i=0; i<currentTab->context->athlete->allRides->childCount(); i++) {
|
||||
RideItem *curr = (RideItem *)currentTab->context->athlete->allRides->child(i);
|
||||
for (int i=0; i<context->athlete->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, QList<RideItem *>dirtyList) :
|
||||
QDialog(mainWindow, Qt::Dialog), mainWindow(mainWindow), dirtyList(dirtyList)
|
||||
SaveOnExitDialogWidget::SaveOnExitDialogWidget(MainWindow *mainWindow, Context *context, QList<RideItem *>dirtyList) :
|
||||
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; i<dirtyList.count(); i++) {
|
||||
QCheckBox *c = (QCheckBox *)dirtyFiles->cellWidget(i,0);
|
||||
if (c->isChecked()) {
|
||||
mainWindow->saveRideSingleDialog(dirtyList.at(i));
|
||||
mainWindow->saveRideSingleDialog(context, dirtyList.at(i));
|
||||
}
|
||||
}
|
||||
accept();
|
||||
|
||||
@@ -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<RideItem*>);
|
||||
SaveOnExitDialogWidget(MainWindow *, Context *context, QList<RideItem*>);
|
||||
|
||||
public slots:
|
||||
void saveClicked();
|
||||
@@ -73,6 +74,7 @@ class SaveOnExitDialogWidget : public QDialog
|
||||
|
||||
private:
|
||||
MainWindow *mainWindow;
|
||||
Context *context;
|
||||
QList<RideItem *>dirtyList;
|
||||
QPushButton *saveButton, *abandonButton, *cancelButton;
|
||||
QCheckBox *exitWarnCheckBox;
|
||||
|
||||
Reference in New Issue
Block a user