project: force user to re-save recovery projects
Ensure user doesn't just work on a project in the app's recovery folder. Finalizes auto-recovery system for now.
This commit is contained in:
+32
-4
@@ -451,7 +451,7 @@ void Core::AddOpenProject(Project* p)
|
||||
emit ProjectOpened(p);
|
||||
}
|
||||
|
||||
void Core::AddOpenProjectFromTask(Task *task)
|
||||
bool Core::AddOpenProjectFromTask(Task *task)
|
||||
{
|
||||
ProjectLoadBaseTask* load_task = static_cast<ProjectLoadBaseTask*>(task);
|
||||
|
||||
@@ -461,8 +461,12 @@ void Core::AddOpenProjectFromTask(Task *task)
|
||||
if (ValidateFootageInLoadedProject(project, load_task->GetFilenameProjectWasSavedAs())) {
|
||||
AddOpenProject(project);
|
||||
main_window_->LoadLayout(layout);
|
||||
|
||||
return true;
|
||||
} else {
|
||||
delete project;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -627,6 +631,26 @@ void Core::OpenStartupProject()
|
||||
}
|
||||
}
|
||||
|
||||
void Core::AddRecoveryProjectFromTask(Task *task)
|
||||
{
|
||||
if (AddOpenProjectFromTask(task)) {
|
||||
ProjectLoadBaseTask* load_task = static_cast<ProjectLoadBaseTask*>(task);
|
||||
|
||||
Project* project = load_task->GetLoadedProject();
|
||||
|
||||
// Clearing the filename will force the user to re-save it somewhere else
|
||||
project->set_filename(QString());
|
||||
|
||||
// Forcing a UUID regeneration will prevent it from saving auto-recoveries in the same place
|
||||
// the original project did
|
||||
project->RegenerateUuid();
|
||||
|
||||
// Setting modified will ensure that the program doesn't close and lose the project without
|
||||
// prompting the user first
|
||||
project->set_modified(true);
|
||||
}
|
||||
}
|
||||
|
||||
void Core::StartGUI(bool full_screen)
|
||||
{
|
||||
// Set UI style
|
||||
@@ -1031,7 +1055,7 @@ void Core::ShowStatusBarMessage(const QString &s)
|
||||
|
||||
void Core::OpenRecoveryProject(const QString &filename)
|
||||
{
|
||||
OpenProjectInternal(filename);
|
||||
OpenProjectInternal(filename, true);
|
||||
}
|
||||
|
||||
void Core::CheckForAutoRecoveries()
|
||||
@@ -1119,7 +1143,7 @@ void Core::PushRecentlyOpenedProject(const QString& s)
|
||||
emit OpenRecentListChanged();
|
||||
}
|
||||
|
||||
void Core::OpenProjectInternal(const QString &filename)
|
||||
void Core::OpenProjectInternal(const QString &filename, bool recovery_project)
|
||||
{
|
||||
// See if this project is open already
|
||||
foreach (Project* p, open_projects_) {
|
||||
@@ -1150,7 +1174,11 @@ void Core::OpenProjectInternal(const QString &filename)
|
||||
|
||||
TaskDialog* task_dialog = new TaskDialog(load_task, tr("Load Project"), main_window());
|
||||
|
||||
connect(task_dialog, &TaskDialog::TaskSucceeded, this, &Core::AddOpenProjectFromTask);
|
||||
if (recovery_project) {
|
||||
connect(task_dialog, &TaskDialog::TaskSucceeded, this, &Core::AddRecoveryProjectFromTask);
|
||||
} else {
|
||||
connect(task_dialog, &TaskDialog::TaskSucceeded, this, &Core::AddOpenProjectFromTask);
|
||||
}
|
||||
|
||||
task_dialog->open();
|
||||
}
|
||||
|
||||
+4
-2
@@ -572,7 +572,7 @@ private slots:
|
||||
*/
|
||||
void AddOpenProject(olive::Project* p);
|
||||
|
||||
void AddOpenProjectFromTask(Task* task);
|
||||
bool AddOpenProjectFromTask(Task* task);
|
||||
|
||||
void ImportTaskComplete(Task *task);
|
||||
|
||||
@@ -584,10 +584,12 @@ private slots:
|
||||
|
||||
void OpenStartupProject();
|
||||
|
||||
void AddRecoveryProjectFromTask(Task* task);
|
||||
|
||||
/**
|
||||
* @brief Internal project open
|
||||
*/
|
||||
void OpenProjectInternal(const QString& filename);
|
||||
void OpenProjectInternal(const QString& filename, bool recovery_project = false);
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ Project::Project() :
|
||||
autorecovery_saved_(true)
|
||||
{
|
||||
// Generate UUID for this project
|
||||
uuid_ = QUuid::createUuid();
|
||||
RegenerateUuid();
|
||||
|
||||
// Adds a color manager "node" to this project so that it synchronizes
|
||||
color_manager_ = new ColorManager();
|
||||
@@ -288,6 +288,11 @@ QString Project::cache_path() const
|
||||
return DiskManager::instance()->GetDefaultCachePath();
|
||||
}
|
||||
|
||||
void Project::RegenerateUuid()
|
||||
{
|
||||
uuid_ = QUuid::createUuid();
|
||||
}
|
||||
|
||||
void Project::ColorManagerValueChanged(const NodeInput &input, const TimeRange &range)
|
||||
{
|
||||
Q_UNUSED(range)
|
||||
|
||||
@@ -83,6 +83,8 @@ public:
|
||||
return uuid_;
|
||||
}
|
||||
|
||||
void RegenerateUuid();
|
||||
|
||||
signals:
|
||||
void NameChanged();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user